🔧

AWS DVA-C02に合格したので頻出サービスを振り返る

2024/02/29に公開

今回は「AWS Certified Developer - Associate」を受験してきた振り返りをしたいと思います。

結果と所感

781/1000 点でした。

今回は業務が忙しく、前日・当日しか学習できませんでしたがなんとか合格できました。
普段から業務でAWSを触っているため、経験が活きたのかなと思います。
合格すればヨシ!

試験対策

UdemyとSkill Builderを使用しました。

Udemyは模擬問題を解かずに解説を確認した程度。

Skill Builderは模擬試験を当日の受験前にしましたが、750点くらいしか取れず焦りました。。
今回Skill Builderを初めて使用しましたが、本番と全く同じ条件で受けられるので非常に良いですね。さすが公式。
https://skillbuilder.aws/

頻出サービスと超ざっくりポイント(順不同)

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 など)

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
      • 一度にインスタンス全台にデプロイ処理を行う
      • デプロイ処理中は停止時間が発生する
    • ローリングデプロイ
      • 複数台あるインスタンスに対して徐々にデプロイを行う
      • デプロイ処理中のインスタンスは停止時間が発生するため、キャパシティが低下する
      • 古いバージョンのインスタンスにアクセスするユーザーが発生する可能性がある
    • 追加バッチによるローリングデプロイ
      • 複数台あるインスタンスに対して徐々にデプロイを行う
      • デプロイ中のインスタンスは停止するため、デプロイ中のキャパシティ維持のためにインスタンスを増台する
      • 古いバージョンのインスタンスにアクセスするユーザーが発生する可能性がある
    • イミュータブル
      • 既存のインスタンスにはデプロイせず、新しいインスタンスをデプロイする
      • 新しいインスタンスをデプロイ後にターゲットを変更してトラフィックを移動する
  • Blue/Greenデプロイ
    • アプリケーションの新バージョンをデプロイしてから、旧バージョンのトラフィックを移動するデプロイ方法

Cognito

  • アプリケーションのユーザー管理を行うことができるサービス
  • 簡単に認証機能を実装できる
  • アプリケーションからAWSリソースを操作したい場合に、IAMロールを使用して一時的な認証情報を割り当てることが可能
  • ユーザープール
    • ID/PWの保管
  • サードパーティのIdPと連携可能
    • Google
    • Facebook
    • などなど

おわりに

DVAは「Developer」という名前が付いている通り、アプリケーション開発に使用するサービスを中心とした知識が多く求められる試験でした。
これから受験予定の方、頻出サービスとして挙げたサービス以外にも試験ガイドを参照の上勉強してみてください!
(サンプル問題も参考になったりします。)
https://aws.amazon.com/jp/certification/certified-developer-associate/

Discussion