はじめに
AWS DOPの試験対策でExam Readiness: AWS Certified DevOps Engineer – Professional (Japanese)を視聴したので、内容をまとめます。
アジェンダ
分野 | 内容 |
---|---|
1 | SDLC の自動化 |
2 | 設定管理とIaC |
3 | モニタリングとロギング |
4 | ポリシーと標準の自動化 |
5 | インシデントとイベントレスポンス |
6 | 高可用性、対障害性、災害復旧 |
CI/CDパイプラインの自動化
継続的インテグレーション
- コードのチェックイン時にリリースを自動化
- 整合性と再現性のある環境デコードをビルド、テスト
- アーティファクトを継続的にデプロイ
- ビルド失敗時にフィードバックループを閉じる
継続的デプロイ
- ステージング環境に変更を自動的にデプロイ
- 本番環境に安全にデプロイ
- 迅速に配信し、デプロイ頻度を高め、失敗率を低下
AWSのコードサービス
CodeCommit
CodeBuild
Code Deploy
- 任意のインスタンスへのデプロイを自動化
- インスタンスにデプロイエージェントをインストールする
- CodeBuildでコードをビルドするとデプロイが可能
- AppSpecファイルでデプロイの各フェーズのコマンドを指定
Code Pipeline
テストの自動化
- インフラに対してもテストが必要
- TDD(テスト駆動型開発):コードを記述する前にテストを記述することでコード変更時にテストが可能。単体テストで品質を保証する
-対障害性テスト:コンポーネントをダウンさせて挙動を確認する
デプロイ・デリバリー戦略
問題例
- セキュリティ認証情報がCodeCommitにコミットされたくない
-> git-secretをpre-commitフックとして設定し、セキュリティ認証情報が検知された場合、コミットの作成をブロックする - Codebuildに承認されたユーザのみがアクセス。生成されるビルドアーティファクトは安全に保存
-> 承認するユーザにIAMポリシーがアタッチされたロールを提供。デフォルトで暗号化が有効なS3にビルドアーティファクトをプッシュ - Jenkinsが高額なので、ビルド環境のフットプリントを減らしたい。
-> JenkinsにEC2インスタンスのプラグインをインストールし、ビルドのリクエストに応じて自動で起動、終了する。 - CodeStarのデプロイステージでLambda関数のリソース名を変更したい。
-> CodeCommitリポジトリでtemplate.tmlファイルでLambdaリソース名を変更する。 - ECRにログインしてプレビルドステージでリポジトリURIを設定するために、buildspec.ymlを設定
-> ビルドステージでdocker build -t $REPOSITORY_URI:latest、ポストビルドステージでECRリポジトリにイメージをdocke push $REPOSITORY_URI:latestでプッシュする