Open38

AWS DOP-C02 対策

Daisuke KusatakeDaisuke Kusatake

概要: AWS Certified DevOps Engineer - Professional (DOP-C02) (Japanese)

形式: 択一式問題と複数選択式問題のみ
問題数: 75 問
時間: 180 分

DOA が 65問の130分だったから問題数と試験時間と伸びてるんだなぁ

Daisuke KusatakeDaisuke Kusatake

試験内容の概要

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

https://d1.awsstatic.com/ja_JP/training-and-certification/docs-devops-pro/AWS-Certified-DevOps-Engineer-Professional_Exam-Guide.pdf

Daisuke KusatakeDaisuke Kusatake

英語の単語は、機能コードに対して自動スクリプトに変換されます。

こう聞くと、Ruby on Rails の Active Record がやはり思い浮かんでしまう

Daisuke KusatakeDaisuke Kusatake

Amazon CodeGuru

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

Daisuke KusatakeDaisuke Kusatake

パフォーマンステスト

収集する主要なパフォーマンス指標 (例)

  • 平均応答時間
  • ピーク応答時間
  • エラー率
  • 同時ユーザー
  • 毎秒リクエスト
  • スループット
Daisuke KusatakeDaisuke Kusatake

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

そうなの

Daisuke KusatakeDaisuke Kusatake

デプロイ設定

Lambda

CodeDeployDefault.LambdaLinear10PercentEvery1Minute

あーなるほど、設定によっては即時適用されないのか

Daisuke KusatakeDaisuke Kusatake

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

Daisuke KusatakeDaisuke Kusatake

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

Daisuke KusatakeDaisuke Kusatake

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

Daisuke KusatakeDaisuke Kusatake

SDLCの自動化

  • code build
  • code commit
  • code deploy
  • code pipeline

これらでいい感じにやる

Daisuke KusatakeDaisuke Kusatake

CodeGuru Security

Amazon CodeGuru Security は、機械学習を用いてセキュリティポリシー違反や脆弱性を検出する静的アプリケーションセキュリティツールです。セキュリティリスクへの対処方法を提案し、アプリケーションのセキュリティ状況を追跡するためのメトリクスを生成します。Amazon.com と AWS の長年にわたるセキュリティのベストプラクティスに基づいた CodeGuru Security のポリシーは、安全で高品質なアプリケーションの作成とデプロイに役立ちます。

CodeGuru Securityは、コード内のセキュリティ脆弱性を特定し、コードベースのセキュリティを向上させるための修正策を提案します。検出されるセキュリティ脆弱性の例としては、リソースリーク、ハードコードされた認証情報、クロスサイトスクリプティングなどが挙げられます。CodeGuru Securityは、一部の統合においてコード品質の問題も特定できます。コードスキャンで実行される分析の種類の詳細については、 「コードスキャンの種類」をご覧ください。

https://docs.aws.amazon.com/codeguru/latest/security-ug/what-is-codeguru-security.html

なるほど

Daisuke KusatakeDaisuke Kusatake

CodeGuru Profiler

Amazon CodeGuru Profiler は、稼働中のアプリケーションから実行時パフォーマンスデータを収集し、アプリケーションパフォーマンスの微調整に役立つ推奨事項を提供します。機械学習アルゴリズムを使用することで、CodeGuru Profiler は最もコストのかかるコード行を特定し、効率性を向上させて CPU ボトルネックを解消する方法を提案します。

CodeGuru Profiler を使用すると、単一の集中管理されたダッシュボードからクラウド内のアプリケーションのプロファイルを作成できます。

具体的には、次のことができます。

  • アプリケーションのレイテンシと CPU 使用率の問題をトラブルシューティングします。
  • アプリケーションを実行するためのインフラストラクチャ コストを削減できる場所を確認します。
  • アプリケーションのパフォーマンスの問題を特定します。
  • 時間の経過に伴うアプリケーションのヒープ使用率を把握します。

https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html

なるほど

Daisuke KusatakeDaisuke Kusatake

CodeGuru Reviewer

Amazon CodeGuru Reviewer は、プログラム分析と機械学習を用いて、開発者が見つけにくい潜在的な欠陥を検出し、Java および Python コードの改善のための提案を提供するサービスです。

CodeGuru Reviewer は、コードの欠陥をプロアクティブに検出することで、コードレビュー段階で欠陥への対処とベストプラクティスの実装に関するガイドラインを提供し、コードベース全体の品質と保守性を向上させます。

CodeGuru Reviewer は、比較的簡単に見つけられる構文エラーについてはフラグを立てません。その代わりに、CodeGuru Reviewer はより複雑な問題を特定し、リソースリーク防止やセキュリティ分析といった推奨事項の種類に関連する改善策を提案します。

https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html

なるほど

Daisuke KusatakeDaisuke Kusatake

Amazon CodeGuru

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

CodeBuildのキャッシュ戦略

なるほど

  • Amazon S3 のキャッシュ
  • ローカルキャッシュ
  • ローカルキャッシュを指定

https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-caching.html

Amazon S3 のキャッシュ

ビルドホスト間で共有できる。

ローカルキャッシュ

そのビルドホストのみが利用できる。

キャッシュモード やること うれしみ
ソースキャッシュモード ソースのGitメタデータをキャッシュする。差分のみプルするようにする。 Gitリポジトリが巨大ならうれしい。ソースのプルが効率化される。
Docker レイヤーキャッシュモード Dockerレイヤーをキャッシュする Dockerイメージが巨大ならうれしい。ビルドプロセスが効率化する。
Daisuke KusatakeDaisuke Kusatake

CodeDeoployのライフサイクルフック

AppSpec 'hooks' section

https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html

ECS

フック やること
BeforeInstall
AfterInstall
AfterAllowTestTraffic
BeforeAllowTraffic
AfterAllowTraffic

そのタイミングごとにやりたそうなことはまだよくわからないが……

ライフサイクルはこのページが詳しい。

https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-steps-ecs.html#deployment-steps-what-happens

Lambda

フック やること
BeforeAllowTraffic
AfterAllowTraffic

「hooks」セクションを使用して、CodeDeploy が Lambda デプロイを検証するために呼び出す Lambda 関数を指定します。

なるほど

EC2/オンプレミス

フック やること
DownloadBundle
BeforeInstall
Install
AfterInstall
ApplicationStart
ValidateService
BeforeBlockTraffic
BlockTraffic
AfterBlockTraffic
BeforeAllowTraffic
AllowTraffic
AfterAllowTraffic

多い。

図を見た方が良い。

https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html#reference-appspec-file-structure-hooks-run-order

Daisuke KusatakeDaisuke Kusatake

CodeDeployのBlue/Greenデプロイ

デプロイ方法 内容
canary(カナリア) 2回に分ける
linear(リニア) 均等な増分に分ける
all-at-once 一括
Daisuke KusatakeDaisuke Kusatake

CI/CDパイプライン アーティファクト

CodeArtifact

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

なるほど

https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html

S3

ステージの成果物を保管

ECR

ビルドイメージのレジストリ

Daisuke KusatakeDaisuke Kusatake

CodeDeployエージェント

AWS CodeDeploy エージェントは、インスタンスにインストールして設定すると、そのインスタンスを CodeDeploy デプロイで使用できるようにするソフトウェアパッケージです。

CodeDeploy エージェントは、EC2/オンプレミスのコンピューティングプラットフォームにデプロイする場合にのみ必要です。Amazon ECS または AWS Lambda コンピューティングプラットフォームを使用するデプロイには、このエージェントは必要ありません。

なるほど。

EC2を使う場合はCloudWatchエージェントとかいろいろインストールするけど、そのうちのひとつという位置づけか。

https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/codedeploy-agent.html