AWS認定の1つであるデベロッパーアソシエイト(DVA-C01)に合格しましたのでその記録になります。
もう10年以上実務でしっかりした開発やってない身としては今風の開発スタイルになじみがなく結構苦労しました。
え!?ローカルマシンにEclipse入れて、メモリ溢れそうになりながら実装するのって過去の話??とおじさんエンジニア丸出しで勉強した軌跡を綴っておきます。
受験時点の状態(スペック)
・これまでに取得したAWS認定は4つ。SOA取ってから2か月ほどで今回の取得になりました。
2020/2/8 プラクティショナー(CLF-C01)
2020/9/19 ソリューションアーキテクトアソシエイト(SAA-C02)
2021/3/13 セキュリティ専門(SCS-C01)
2021/6/12 SysOpsアドミニストレーターアソシエイト(SOA-C01)
・開発畑にいるものの、最近はプロジェクトを回す方になってしまっているのでコーディングを楽しむことはほぼなし。また、携わっているプロジェクトではAWSはほぼ使わずです。
・ただ、会社からAWSアカウントを支給されているので、気になるサービスは実際に触ってみることができる環境にいます。この点は恵まれていました。やはり実際に使ってみると知識の習得も早いですね。
・なお、私はこの業界(システム開発)にもう20年以上います(時が経つのは早い・・・)
さて、次から実際に私が行った対策をご紹介しますね。
対策① 模擬試験
まずはAWS公式の模擬試験を受けてみました。
何かしらのAWS認定を取得すると模擬試験受験バウチャーがもらえるので無料で腕試しできます。
何も勉強せずに模擬試験受けた結果、総合スコア55%でした。
AWSを使った開発には携わってなかったので、個人的には妥当なところかなと思います。
総合スコア: 55%
トピックレベルスコア:
1.0 Deployment: 50%
2.0 Security: 40%
3.0 Development with AWS Services: 66%
4.0 Refactoring: 50%
5.0 Monitoring and Troubleshooting: 66%
セキュリティ専門を持ってるくせにSecurityが40%なのはお恥ずかしい限りです(笑)
対策② Udemyの試験対策
知識の詰込みはUdemyを活用しました。
「AWS 認定デベロッパー アソシエイト模擬試験問題集(5回分325問)」というコースがあり、それを利用していました。
まず問題を解いて、答え合わせしながら間違っているところや理解ができていないな、と思うところを都度ググって調べた感じです。
この対策コースは本試験形式になっているのは良いのですが、1回分(65問)を解き終わらないと回答に進めないのはちょっと辛かったです(空き時間活用しており1回分を解き終わるまで1週間くらいかかっていたので、回答に進むころには問題をすっかり忘れてた)。
また、5回分用意されているものの、時間の都合で3回分しかやれなかったです。
ちなみに、本試験では70%の正答で合格ですが、このUdemyコースでは40%程度の正答率でした(分からないところを分かるようにするのが目的なので正答率が低いこと自体には問題ないと思ってます!)
対策③ AWSサービス別資料
ググるだけだと知識が足りないなと感じたところ「AWSサービス別資料」を見て補完しました。
私はYouTube見る派なので、時間あるときに見てた感じです。
X-Ray や Code Deployを見たような気がします。
キーワードメモ
ここまでの3つの対策で合格までこぎつけたのですが、その時に自分の振り返り用にメモっていたキーワード集をご紹介します。
内容については誤っている可能性もありますし、私が個人的に弱いところをメモしていたものなので、これを覚えたからと言って合格できるわけではありません。あくまでこういうところが範囲なんだな、という程度の参考にしていただければ幸いです。
Elastic Beanstalk
- HTTPSエンドポイントを公開するためには、AWS Elastic Beanstalk 設定ファイル (.ebextensions) を作成してロードバランサーを構成する必要がある
- Blue-Green Deployment:DNSスイッチを使用して、トラフィックを新しいバージョンにリダイレクトする展開方式で、ダウンタイムを回避することができる
- ライフサイクルポリシーを設定することで、使用されていない古いバージョンを定期的に削除することができる
- ワーカー環境にcron.ymlファイルを置くことで、繰り返しタスクやスケジュール設定されたタスクセットを非同期で実行できる
CodeDeploy
- appspecファイル(YAMLファイル)を使ってデプロイを制御できる
- appspec内のhooksセクションを使ってフックスクリプトを実行できる。指定可能なライフサイクルイベントは ApplicationStop → BeforeInstall → AfterInstall → BeforeAllowTraffic → AfterAllowTraffic → ApplicationStart → ValidateService
- Deployに失敗して旧バージョンへのロールバックをする場合には、新しいデプロイIDを使用して旧バージョンを新たにDeployする
CodeStar
- アプリケーションを迅速に開発および構築しAWSにデプロイできる
- Atlassian JIRA Software による問題追跡機能が統合されたプロジェクト管理ダッシュボードが用意されている
Kinesis Data Stream
- シャード数によってパフォーマンスが決定
- デフォルトのデータ保持期限は24時間
- 各シャードにおいて、読み取りは最大 1 秒あたり 5 件のトランザクション、データ読み取りの最大合計レートは 1 秒あたり 2 MB をサポートする
RDS
- バックアップ保持期間は0 ~ 35 日で設定できる(デフォルトは7日)
DynamoDB
- 特定の項目(属性)のみ取得したいときは–projection-expressionで指定する
- 有効期限 (TTL) を使用することで特定の項目を自動失効させることができる
- プライマリーキーとして複合キーを設定する場合は、最大で2つの属性を設定できる
- DynamoDBストリームはDynamoDBに対する項目の追加、変更、削除をイベントとして検出できる機能
- 各テーブルには、最大で 20 のグローバルセカンダリインデックス (上限緩和可能)と 5 つのローカルセカンダリインデックスを持つことができる
- キャパシティユニットの計算は、RCUは1秒辺りの読込項目数 × 項目のサイズ(4KBブロック)(強い整合性の場合。結果整合性の場合は1/2になる)、WCUは1秒辺りの書込項目数 × 項目のサイズ(1KBブロック)
- DynamoDBVersion属性を使った項目を使用することでオプティミスティックロック(楽観的ロック)を実現し、データの整合性を保つことができる
Aurora
- 通常はクラスターが組まれ、エンドポイントを経由してアクセスする。カスタムエンドポイントを設定することで特定のクラスターへのアクセスが可能になり、重い処理を切り離すことが可能になる。
X-Ray
- サンプリングリクエスト数 = リザーバサイズ +((1秒あたりの着信リクエスト ー リザーバサイズ) × 固定レート)
- トレース可能なリクエスト数 = リザーバサイズ + リザーバサイズ × 固定レート
ECS
- ALBと連携してECSのクラスターやタスクに対するトラフィック制御を実行することができる
- タスク配置戦略
- Binpack : CPU またはメモリの最小利用可能量に基づいてタスクを配置し、使用するインスタンス数を最小限に抑える
- Random : タスクをランダムに配置
- Spread : 指定された値に基づいてタスクを均等に配置
lambda
- ファイルを一時的に保存する際は、ローカルディレクトリー/tmpを使用
- tmpディレクトリはMAX512MB
- 環境変数の最大サイズは512KB
- Lambda関数の同時実行数はデフォルトでは1000まで(上限緩和可能)
- UpdateItem を使ってアトミックカウンタを実装できる
- Lambda関数に割り当てるメモリの量を指定することでLambda関数のパフォーマンスを向上させることができる。 128 MB ~ 3,008 MB の範囲 (64 MB 単位)で選択 。CPUはメモリ量に準じて割り当たる。
SQS
- キューに格納できる1メッセージあたりのサイズは最大256KBだが、拡張クライアントライブラリ を使用することで2GBまで可能となる
- キューにはデフォルトで4日間メッセージが保存される。設定により60秒から14日間までの設定が可能
- 可視性タイムアウト:デフォルト30秒(0~12時間に変更可能)。メッセージがキューによって処理された後に、そのキューを処理しているコンシューマー以外には設定された時間においてキューを非表示とする
- 遅延キュー:デフォルト0秒(0~15分に変更可能)。メッセージが最初にキューに追加された時から、全てのコンシューマーに対して設定された時間においてキューを非表示にする
- ロングポーリング:設定するとキューが空の場合にロングポーリングタイムアウト秒(最大20秒)のウエイトをした後に空のメッセージが返される(SQSはリクエスト課金なので空メッセージ返却は極力避ける)
KMS
- 管理するCMK(カスタマーマスターキー)を使用して暗号化キーを生成し、その暗号化キーを利用して暗号化を実施する(エンベロープ暗号化)
- KMSの利用ログ管理はKMS上で実行するかCloudTrailを利用する
- KMSの暗号化APIには対象データは最大4KBの制限がある(数MBなどのデータを暗号化するには暗号化SDKを使用する必要がある)
ElastiCache for Redis
- 冗長化構成のアプリケーションのユーザーセッション情報を高速で処理することができる
ElastiCache
- 遅延読み込み戦略:必要な時にのみキャッシュにデータを読み込む
- 書き込みスルー戦略:データがデータベースに書き込まれると常にキャッシュのデータを更新
Cognito
- Cognito IDを使用して一時的な特権制限付きの認証情報をアプリケーションに配信できる
- Cognito Sync:複数デバイスで利用した際にユーザデータを同期する。現在はCognito SyncではなくAWS AppSyncが利用推奨されている。
ELB
- クライアントの IP アドレスはX-Forwarded-Forリクエストヘッダーに格納される
AWS Certificate Manager(ACM)
- ACMが使用できない場合(ACM未提供リージョンなど)は、IAMを使用してSSL/TLS証明書を安全にインポートできる(証明書マネージャとしてIAMを使用できる)
API Gateway
- httpsエンドポイントのみサポート(httpはサポートしていない)
- カナリアリリース:新旧バージョンの稼働割合を指定して新旧併存で稼働させる。新バージョンを昇格させることで旧バージョンへの振り分けが0%になる。
CloudFormation
- ヘルパースクリプト
- cfn-init:リソースメタデータの取得と解釈、パッケージのインストール、ファイルの作成、サービスの開始
- cfn-signal:CreationPolicy または WaitCondition でシグナルを送信するために使用。前提となるリソースやアプリケーションの準備ができたときに、スタックの他のリソースを同期できるようにする。
- cfn-get-metadata:特定のキーへのリソースまたはパスのメタデータを取得するために使用
- cfn-hup:メタデータへの更新を確認し、変更が検出されたときにカスタムフックを実行するために使用
まとめ
私の場合、ほぼUdemyで合格したようなものですが、実務経験が乏しくても知識のみで十分合格できる試験ですので是非皆さんも頑張ってください!
この記事がお役に立てば幸いです。
コメント