学習メモ:Exam Readiness: AWS Certified Developer – Associate (Digital) (Japanese) 日本語
コースの概要
説明
AWS-DVAについて簡単に把握する
対象者
- AWS 認定デベロッパー – アソシエイト試験を受験予定の開発者
コースの目標
このコースの学習内容は、以下のとおりです。
- 試験の構成と問題のタイプを理解する
- AWS の開発に関する概念に関係する質問を特定する
- 試験で出題される内容の概念を理解する
前提条件
このコースを受講するにあたって、以下の前提条件を満たしておくことをお勧めします。
- AWS ベースのアプリケーションの設計と保守に関する 1 年以上の実務経験
- 少なくとも 1 つの高水準プログラミング言語についての詳細な知識
- Developing on AWS コースを修了しているか、同等の知識があること
実施形式
- デジタルトレーニング
- サンプル試験問題
AWSブログにて紹介されています。
AWS 認定試験 : Exam Readiness(試験準備コース)が日本語実写版になりました
モジュール0
動画内容の説明
テキストとサンプル問題を通して、試験のポイントを学習する
試験分野
- デプロイ
- セキュリティ
- AWSのサービスを使用した開発
- リファクタリング
- モニタリングとトラブルシューティング
モジュール1:デプロイ
認定の目的
下記の方法でデプロイできること
- CI/CD
- AWS Elastic Beanstalk
- AWSにデプロイするためのアプリケーションパッケージ
- サーバレスアプリケーション
リリースプロセスの主要なフェーズ
- ソース:コードのレビュー
- ビルド:コンパイル・単体テスト・コードメトリクス・コンテナイメージの作成/テストの自動化などが検討できる
- テスト:統合テスト・負荷テスト・UIテスト・侵入テスト
- デプロイ:本番環境へデプロイ/本番環境へのリスクは避ける
- (モニタリング)
CI/CD
- 直近10年間で大きく普及
- CI:継続的インテグレーション
ソース・ビルドが対象 - CD:継続的デリバリー
認証が必要。CIを拡大したもの - CD:継続的デプロイ
CD:継続的デリバリーをさらに拡大したもの
AWSのコードサービス
- ソース:AWS CodeCommit
- ビルド:AWS CodeBuild
- テスト:(任意のテストツール)
- デプロイ:AWS CodeDeploy
- モニタリング:AWS X-ray・CloudWatch
AWS CodePipeline
AWS CodeCommitからCodeDeployまで管理するツール
可用性
- 複数のAZ・リージョン
- ヘルスチェック・フェイルオーバーメカニズム
- ステートレスアプリケーション。セッションまたはキャッシュ状態をDBなどに保存
- サービスへの理解。AutoScalingなど
AWS Elastic Beanstalk
コード開発以外の基本的な設定を実施してくれるツール
AWS CloudFormation
テンプレート
- jsonおよびYAML形式でインフラストラクチャのコードを記述する
- 作成するリソースを定義する
スタック
- テンプレートから作成
- スタック更新の進行状況をモニタリング可能
サーバーレス
サーバに関係する部分をAWSが管理。
カスタマーはサービスの開発に注力できる
AWSが提供するサービス例
- APIプロキシ:API Gateway
- ストレージ:S3
- データベース:Dyname
- メッセージング:SNS・SQS
- オーケストレーション:Step Functions
- 分析:Kinesis・Athena
AWS Lambda
AWSが提供するサーバレスアプリケーション
モジュール1のまとめ
原則を再確認する
- ELBとAuto Scalingは互いに連携するように設計されている
- スケールアップよりもスケールアウトが望ましい
- Elastic Beanstalkを使用することでアプリケーションの構築に集中できる
- 作成するリソースと定義するために、CloudFormationテンプレートを使用できる
- サーバーレスアプリケーションでは通常、LambdaとAWSの他のサービスを組み合わせる
データおよびアプリのセキリュティ
VPC
AWSが提供する仮想ネットワークサービス
暗号化
- 転送時の暗号
SSL/TLS
AWS-ACM - 保管時の暗号
クライアント・サーバーで暗号化
AWS-KMS
S3でのデータ保護
- AES256による暗号化
- クライアント側での暗号化
SSE-S3・SSE-KMS・SSE-Cなど - サーバー側での暗号化
Glacerなどでは自動で暗号化
IAM・STSおよびIdentity Federation
IAM
ユーザ関連のツール。認証と認可を管理。
既知の内容なので、特にメモなし
公式を参照
STS
信用できるユーザーなどに一時的な認証を与える
IDフェデレーション
IAMユーザーを作成しなくてもAWSリソースへアクセスができる
モジュール3:AWSサービスのデプロイ
目標
- サーバーレスアプリケーションのコードを記述
- 機能上の要件をアプリケーション設計に反映
- アプリケーションコードの実行
- API・SDKなどAWSサービスと連携するコードの記述
S3
- バケット:リージョンを指定
- オブジェクト:バケット内部に配置
- パス形式のURL(廃止予定)
- 仮想ホスト形式のURL
- 署名付きのURL
- CORS
S3アクセスコントロールリスト(ACL)
オブジェクト・バケットレベルでアクセス許可を付与
S3バケットポリシー
JSON形式で記述。詳細なアクセス設定を付与
ACLとS3バケットポリシーは併用可能。また、違いを把握する
DynamoDB
- フルマネージド型のNoSQLデータベース
- パーティションキーに基づくパーティション
セカンダリインデックス
プライマリキーの代わりの代替キーを定義
データ整合性
結果整合性・強力な整合性のある読み込み
RCU・WCU
計算問題が試験に出る
1RCU:1秒あたり4KBの強力な整合性のある読み込み1回/結果整合性のある読み込みは2回
1WCU:1秒あたり1KBの書き込み1回
グローバルテーブル
グローバルテーブルは、マルチリージョンにマルチアクティブデータベースをデプロイするための完全マネージド型のソリューションです。独自のレプリケーションソリューションを構築および管理する必要はありません。テーブルを利用したい AWS リージョンを指定すると、DynamoDB が進行中のデータ変更をそれらすべてに伝播します。
SNS
トピック・サブスクライバー・メッセージサイズ
全てのAWSのエンドポイントへ送信可能
SQS
メッセージキューイングサービス
Step Functions
視覚的なワークフローにより分散アプリケーションおよびマイクロサービスのコンポーネント同士の調整を可能にする
API Gateway
- APIを作成および管理する管理者をサポート
CloudFront
- AWSにてCDNを実現
- コンテンツ配信を主眼
- エッジロケーションを活用
Elasticache
高速なインメモリデータベース
モジュール3のまとめ
- マネージドサービス優先
- APIやリソースの直接公開は避ける
- サーバーにセッション状態を保存しない
- インフラストラクチャは疎結合
モジュール4:リファクタリング
認定の目標
- AWSサービスと機能を最大限利用
- 既存のアプリケーションをAWSで実行
サーバーではなくサービスを設計する
アンチパターン
- 永続的サーバーでシンプルなアプリケーションを実行
- アプリケーション間で直接通信を行う
- 静的ウェブアセットをローカルのインスタンスに保存する
- ユーザー認証とユーザー状態の保存をバックエンドサーバーで処理する
ベストプラクティス
- 必要に応じてサーバレスアプリケーションがプロビジョニングされる
- メッセージキューを使用してアプリケーション間の通信を処理する
- 静的ウェブアセットをS3など外部へ保存
- ユーザー認証とユーザー状態の保存をAWSのマネージドサービスを使用する
モジュール4のまとめ
- 耐障害性と高可用性は同じではない
- スケーラビリティと伸縮性は同じではない
- モノリシックなアプリをマイクロサービスに移行して、機能に割り当てる
- サーバレス化する
モジュール5:モニタリングとトラブルシューティング
- AWSエラーコードの確認(400番台:アプリケーションでエラー処理など)
- インスタンスのログデータの収集と解析
- モニタリング
CloudWatch
- AWSリソースのモニタリング
- 標準またはカスタムのメトリクスを使用