🔧
AWS DVA-C02に合格したので頻出サービスを振り返る
今回は「AWS Certified Developer - Associate」を受験してきた振り返りをしたいと思います。
結果と所感
781/1000 点でした。
今回は業務が忙しく、前日・当日しか学習できませんでしたがなんとか合格できました。
普段から業務でAWSを触っているため、経験が活きたのかなと思います。
合格すればヨシ!
試験対策
UdemyとSkill Builderを使用しました。
Udemyは模擬問題を解かずに解説を確認した程度。
Skill Builderは模擬試験を当日の受験前にしましたが、750点くらいしか取れず焦りました。。
今回Skill Builderを初めて使用しましたが、本番と全く同じ条件で受けられるので非常に良いですね。さすが公式。
頻出サービスと超ざっくりポイント(順不同)
DVAを受験し、覚えておいた方が良いと思ったポイントについてまとめます。
(注:サービス説明を網羅したものではありません。)
説明が不十分なものは随時更新していきます。
DynamoDB
- フルマネージド、サーバレスのkey-value NoSQLデータベース。
- データパターンが複数ある、レコード急増が考えられる 等の場合はDynamoDBを使用する
- オンデマンドキャパシティ
- スケーリングを自動で行う
- コスト高
- プロビジョンドキャパシティ
- 1秒辺りの読み書き(WCU/WCU)をプロビジョニングする
- コスト予測が可能
- WCU(Write Capacity Units)
- 書き込み容量ユニット
- 1KB/1s -> 1WCU
- RCU(Read Capacity Units)
- 読み込み容量ユニット
- 4KB/1s -> 1RCU
- 結果整合性の場合、半分のRCUを使用する
- ProvisionedThroughputExceededException
- WCU/RCUが不足した際に出るエラー
- DynamoDB Streams
- テーブルのデータ更新があった際にLambda関数を起動できる
- ≒個人的にはS3イベントに似ている使い方と認識
CloudFront
- コンテンツ配信(CDN)に特化したマネージドサービス
- CloudFrontにオリジンコンテンツをキャッシュすることで、配信を高速化
- 大量アクセス等による負荷の軽減
Lambda@edge
- CloudFrontの機能の一種
- エッジロケーション起動することができるLambda関数
- パフォーマンス向上が期待できる
Lambda
- サーバレスで関数を実行可能なサービス
- 同時実行数の上限は1,000(同一アカウント、同一リージョン)
- クォータは緩和可能
- 最大実行時間は15分
- Lambdaの処理性能を上げたい場合は?
- メモリサイズを増やす
- メモリを2倍 → CPUも2倍
- CPU割り当てのみを増やすことは不可
- Lambda実行環境のライフサイクル
- ランタイムは再利用される場合がある(Lambdaの処理が複数回継続して行われる場合等)
- 再利用された場合はhandler外は初期化されない
- パッケージやグローバル変数は再利用される
- SnapStart
- Javaで構築されたLambdaを高速起動することが可能
- Lambdaレイヤー
- 複数のLambdaで同じライブラリを使用する際に使用
- 容量削減が可能
API Gateway
- APIの作成と管理を行うためのサービス
- 作成できるAPIの種類
- REST API
- HTTP API
- WebSocket API
- Lambdaと組み合わせてREST/HTTP APIとして使用することが多い
- REST APIのデプロイ
- ステージを分けることが可能(staging, productionなど)
- 本番稼働中と開発中をステージによって分けて管理することが可能
- カナリアリリース
- 新バージョンと旧バージョンのAPIを並行稼働しながらデプロイができる
- 新バージョンの割合を決定する必要がある(新:旧 - 2:8 など)
- ステージを分けることが可能(staging, productionなど)
SystemsManager Parameter Store
- AWSリソースに使用する設定値やパスワード等の認証情報などを安全に管理できるサービス
- サポートされるパラメータは3つ
- String(文字列)
- StringList(コンマ区切りの文字列リスト)
- SecureString(機密データ、暗号化される)
- Lambda関数等でシークレットなどを使用する場合は、ハードコーディングするのではなく、parameter storeに保管してあるパラメータを呼び出して使用すると良い
- 導入コスト低
Secrets Manager
- パスワード等の認証情報などを一元的に管理するサービス
- シークレット(認証情報)の自動ローテーションが可能
- ローテーションの仕組みとしてLambda関数が必要
- parameter storeと比較すると導入コストがやや高い
StepFunction
- Lambda関数やAWSのサービスを組み合わせてワークフローを構築できるサービス
- 分岐や並行処理など、複雑な構成をフローとして構築することが可能
- 人間による介入(入力や承認など)を処理中に含めることが可能
ECS
- フルマネージドなコンテナオーケストレーションサービス
- コンテナの実行環境は以下から選択
- Fargate(マネージド)
- EC2
- その他(Outpostsなど)
CDK
- TypeScriptやPython等のプログラミング言語を使用してインフラ定義が可能、IaC化の実現
- cdkのコマンド(最低限覚えておくと良い)
-
cdk init
CDKプロジェクトの作成 -
cdk synth
CDKアプリケーションからCloudFormationテンプレートを生成 -
cdk bootstrap
環境にCDKアプリケーションを初めてデプロイする際に実行 -
cdk deploy
CDKアプリケーションのデプロイ
-
Elastic Beanstalk
- アプリケーションのデプロイと管理を簡単に行えるサービス
- VPCやEC2等の設定を簡単に実施できる
- Javaを使用することが多い印象
- デプロイポリシー
- All at once
- 一度にインスタンス全台にデプロイ処理を行う
- デプロイ処理中は停止時間が発生する
- ローリングデプロイ
- 複数台あるインスタンスに対して徐々にデプロイを行う
- デプロイ処理中のインスタンスは停止時間が発生するため、キャパシティが低下する
- 古いバージョンのインスタンスにアクセスするユーザーが発生する可能性がある
- 追加バッチによるローリングデプロイ
- 複数台あるインスタンスに対して徐々にデプロイを行う
- デプロイ中のインスタンスは停止するため、デプロイ中のキャパシティ維持のためにインスタンスを増台する
- 古いバージョンのインスタンスにアクセスするユーザーが発生する可能性がある
- イミュータブル
- 既存のインスタンスにはデプロイせず、新しいインスタンスをデプロイする
- 新しいインスタンスをデプロイ後にターゲットを変更してトラフィックを移動する
- All at once
- Blue/Greenデプロイ
- アプリケーションの新バージョンをデプロイしてから、旧バージョンのトラフィックを移動するデプロイ方法
Cognito
- アプリケーションのユーザー管理を行うことができるサービス
- 簡単に認証機能を実装できる
- アプリケーションからAWSリソースを操作したい場合に、IAMロールを使用して一時的な認証情報を割り当てることが可能
- ユーザープール
- ID/PWの保管
- サードパーティのIdPと連携可能
- などなど
おわりに
DVAは「Developer」という名前が付いている通り、アプリケーション開発に使用するサービスを中心とした知識が多く求められる試験でした。
これから受験予定の方、頻出サービスとして挙げたサービス以外にも試験ガイドを参照の上勉強してみてください!
(サンプル問題も参考になったりします。)
Discussion