AWS DOP-C02 対策

教材
Exam Prep Enhanced Course: AWS Certified DevOps Engineer - Professional (DOP-C02 - 日本語)

SDLC
ソフトウェア開発ライフサイクル (SDLC)
SDLC のフェーズ
- 計画
- 設計
- 実装
- テスト
- デプロイ
- メンテナンス
SDLC モデル の例
- ウォーターフォール
- 反復型
- スパイラル
- アジャイル
- etc...

概要: AWS Certified DevOps Engineer - Professional (DOP-C02) (Japanese)
形式: 択一式問題と複数選択式問題のみ
問題数: 75 問
時間: 180 分
DOA が 65問の130分だったから問題数と試験時間と伸びてるんだなぁ

試験内容の概要
- 第 1 分野: SDLC のオートメーション (採点対象コンテンツの 22%)
- 第 2 分野: 設定管理と IaC (採点対象コンテンツの 17%)
- 第 3 分野: 耐障害性の高いクラウドソリューション (採点対象コンテンツの 15%)
- 第 4 分野: モニタリングとロギング (採点対象コンテンツの 15%)
- 第 5 分野: インシデントとイベントへの対応 (採点対象コンテンツの 14%)
- 第 6 分野: セキュリティとコンプライアンス (採点対象コンテンツの 17%)

Advanced Testing Practices Using AWS DevOps Tools (Japanese) 日本語吹き替え版

リンティングの概要
- cfn-lint
- cfn_nag
そういうのもあるんだ

英語の単語は、機能コードに対して自動スクリプトに変換されます。
こう聞くと、Ruby on Rails の Active Record がやはり思い浮かんでしまう

Cloud9 IDE
全体的に例が古いんじゃないか

Amazon CodeGuru
CodeGuru セキュリティは、Java、Python、および JavaScript コードのセキュリティ脆弱性を検出します。

パフォーマンステスト
収集する主要なパフォーマンス指標 (例)
- 平均応答時間
- ピーク応答時間
- エラー率
- 同時ユーザー
- 毎秒リクエスト
- スループット

負荷テスト

継続的デリバリーと継続的デプロイの違いは、本番環境への更新前に手動での承認が必要かどうかという点です。継続的デプロイでは、明示的な承認が行われることはなく本番環境が自動的に運用となります。
そうなの

デプロイ設定
Lambda
CodeDeployDefault.LambdaLinear10PercentEvery1Minute
あーなるほど、設定によっては即時適用されないのか

合成モニタリング
E2Eテストとはまた違うのかな?

Advanced AWS CloudFormation: Macros (Japanese)
可能性を感じる
CloudFormationテンプレートにPythonコードが入るのか

廃止される Code commit 等に対しての得点配分が大きく、モチベが上がらない

既存で使われている場面に出くわすかもしれないから覚えて損はないか、マイグレーションするときに知っといた方がいい

へ~
AWS Solution Library

ビルドアーティファクト
- Code Artifact
- S3
- ECR

デプロイ後のテストなどは
ライフサイクルフックでテストコード(in Lambda)を起動させる

SDLCの自動化
- code build
- code commit
- code deploy
- code pipeline
これらでいい感じにやる

Elastic Beanstalk
Web環境
問い合わせに対する結果を応答ですぐに求めるような用途?
Worker環境
比較的長時間かかるようなタスクをこなさせる
バックグラウンドで行うような処理をさせる

構成管理とIaC
- Cloudformation
- SAM

CodeGuru Security
Amazon CodeGuru Security は、機械学習を用いてセキュリティポリシー違反や脆弱性を検出する静的アプリケーションセキュリティツールです。セキュリティリスクへの対処方法を提案し、アプリケーションのセキュリティ状況を追跡するためのメトリクスを生成します。Amazon.com と AWS の長年にわたるセキュリティのベストプラクティスに基づいた CodeGuru Security のポリシーは、安全で高品質なアプリケーションの作成とデプロイに役立ちます。
CodeGuru Securityは、コード内のセキュリティ脆弱性を特定し、コードベースのセキュリティを向上させるための修正策を提案します。検出されるセキュリティ脆弱性の例としては、リソースリーク、ハードコードされた認証情報、クロスサイトスクリプティングなどが挙げられます。CodeGuru Securityは、一部の統合においてコード品質の問題も特定できます。コードスキャンで実行される分析の種類の詳細については、 「コードスキャンの種類」をご覧ください。
なるほど

CodeGuru Profiler
Amazon CodeGuru Profiler は、稼働中のアプリケーションから実行時パフォーマンスデータを収集し、アプリケーションパフォーマンスの微調整に役立つ推奨事項を提供します。機械学習アルゴリズムを使用することで、CodeGuru Profiler は最もコストのかかるコード行を特定し、効率性を向上させて CPU ボトルネックを解消する方法を提案します。
CodeGuru Profiler を使用すると、単一の集中管理されたダッシュボードからクラウド内のアプリケーションのプロファイルを作成できます。
具体的には、次のことができます。
- アプリケーションのレイテンシと CPU 使用率の問題をトラブルシューティングします。
- アプリケーションを実行するためのインフラストラクチャ コストを削減できる場所を確認します。
- アプリケーションのパフォーマンスの問題を特定します。
- 時間の経過に伴うアプリケーションのヒープ使用率を把握します。
なるほど

CodeGuru Reviewer
Amazon CodeGuru Reviewer は、プログラム分析と機械学習を用いて、開発者が見つけにくい潜在的な欠陥を検出し、Java および Python コードの改善のための提案を提供するサービスです。
CodeGuru Reviewer は、コードの欠陥をプロアクティブに検出することで、コードレビュー段階で欠陥への対処とベストプラクティスの実装に関するガイドラインを提供し、コードベース全体の品質と保守性を向上させます。
CodeGuru Reviewer は、比較的簡単に見つけられる構文エラーについてはフラグを立てません。その代わりに、CodeGuru Reviewer はより複雑な問題を特定し、リソースリーク防止やセキュリティ分析といった推奨事項の種類に関連する改善策を提案します。
なるほど

Amazon CodeGuru
サービス | 検知する対象 | 具体例 |
---|---|---|
CodeGuru Security | 脆弱性・セキュリティ | リソースリーク、ハードコードされた認証情報、クロスサイトスクリプティング |
CodeGuru Profiler | パフォーマンス | レイテンシと CPU 使用率, インフラストラクチャ コスト, ヒープ使用率 |
CodeGuru Reviewer | 潜在的な欠陥・ベストプラクティス違反 | コードベース全体の品質と保守性アップ |

CodeBuildのキャッシュ戦略
なるほど
- Amazon S3 のキャッシュ
- ローカルキャッシュ
- ローカルキャッシュを指定
Amazon S3 のキャッシュ
ビルドホスト間で共有できる。
ローカルキャッシュ
そのビルドホストのみが利用できる。
キャッシュモード | やること | うれしみ |
---|---|---|
ソースキャッシュモード | ソースのGitメタデータをキャッシュする。差分のみプルするようにする。 | Gitリポジトリが巨大ならうれしい。ソースのプルが効率化される。 |
Docker レイヤーキャッシュモード | Dockerレイヤーをキャッシュする | Dockerイメージが巨大ならうれしい。ビルドプロセスが効率化する。 |

CodeDeoployのライフサイクルフック
AppSpec 'hooks' section
ECS
フック | やること |
---|---|
BeforeInstall | |
AfterInstall | |
AfterAllowTestTraffic | |
BeforeAllowTraffic | |
AfterAllowTraffic |
そのタイミングごとにやりたそうなことはまだよくわからないが……
ライフサイクルはこのページが詳しい。
Lambda
フック | やること |
---|---|
BeforeAllowTraffic | |
AfterAllowTraffic |
「hooks」セクションを使用して、CodeDeploy が Lambda デプロイを検証するために呼び出す Lambda 関数を指定します。
なるほど
EC2/オンプレミス
フック | やること |
---|---|
DownloadBundle | |
BeforeInstall | |
Install | |
AfterInstall | |
ApplicationStart | |
ValidateService | |
BeforeBlockTraffic | |
BlockTraffic | |
AfterBlockTraffic | |
BeforeAllowTraffic | |
AllowTraffic | |
AfterAllowTraffic |
多い。
図を見た方が良い。

CodeDeployのBlue/Greenデプロイ
デプロイ方法 | 内容 |
---|---|
canary(カナリア) | 2回に分ける |
linear(リニア) | 均等な増分に分ける |
all-at-once | 一括 |

AWS Cloud Control API
なんじゃこりゃ
AWS環境のリソースをCRUD-LするためのAPI。

災害復旧
手段 | キーワード |
---|---|
バックアップと復元 | スナップショット |
パイロットライト | レプリケーション |
ウォームスタンバイ | DRリージョンでのスケーリング |
マルチサイト アクティブ/アクティブ | 複数リージョンで常時稼働 |

CI/CDパイプライン アーティファクト
CodeArtifact
CodeArtifact はソフトウェアパッケージをリポジトリに保存します。リポジトリは多言語対応であり、1 つのリポジトリにサポートされているあらゆるタイプのパッケージを含めることができます。すべての CodeArtifact リポジトリは、単一の CodeArtifact ドメインのメンバーです。組織では、1 つ以上のリポジトリを持つ 1 つの本番環境ドメインを使用することをお勧めします。例えば、各リポジトリを異なる開発チームで使用できます。リポジトリ内のパッケージは、開発チーム間で検出および共有できます。
なるほど
S3
ステージの成果物を保管
ECR
ビルドイメージのレジストリ

CodeDeployエージェント
AWS CodeDeploy エージェントは、インスタンスにインストールして設定すると、そのインスタンスを CodeDeploy デプロイで使用できるようにするソフトウェアパッケージです。
CodeDeploy エージェントは、EC2/オンプレミスのコンピューティングプラットフォームにデプロイする場合にのみ必要です。Amazon ECS または AWS Lambda コンピューティングプラットフォームを使用するデプロイには、このエージェントは必要ありません。
なるほど。
EC2を使う場合はCloudWatchエージェントとかいろいろインストールするけど、そのうちのひとつという位置づけか。