はじめに
AWS DOPの試験対策でExam Readiness: AWS Certified DevOps Engineer – Professional (Japanese)を視聴したので、内容をまとめます。
アジェンダ
分野 | 内容 |
---|---|
1 | SDLC の自動化 |
2 | 設定管理とIaC |
3 | モニタリングとロギング |
4 | ポリシーと標準の自動化 |
5 | インシデントとイベントレスポンス |
6 | 高可用性、対障害性、災害復旧 |
AWS CloudFormation
- 中断を伴わない更新:オペレーションの変更や物理名の変更を伴わずに実行
- 一時的な中断を伴う更新:物理名は変更されない。EC2のサイズ変更など。
- 置き換え:リソースが再作成され、新しい物理IDが振られる。RDSをMySQLからPostgreSQLに変える等。
UpdatePolicy
- MaxBatchSize:更新されるインスタンスの最大数
- MinInstancesInService:更新中のインスタンスの最小数
- PauseTime:アプリケーション開始までの時間
- WaitOnResourceSignal:AutoScalingグループが必要数の有効シグナルを受け取るまでの待機時間
- SuspendProcesses:AutoScalingのスタック更新への干渉を防ぐ。
- MinSuccessfulInstancesPercent:成功をシグナルに更新する必要があるローリング更新のAutoScalingのインスタンスの割合
依存関係の解決
- DependsOn:単純な依存関係を記述
- WaitCondition:先に進む前にWaitConditionHandleが通知されるのを待つ
- CreationPolicy:リソースの作成完了を定義する
スタックポリシー
- 全てのリソースへの更新をデフォルト拒否する
サポートされていないサービスとのワークフロー(Lambdaの例)
スタックセット
ヘルパースクリプト
起動時のインスタンスの設定をコントロール
- cfn-init:CloudFormationメタデータを一回実行する。
- cfn-hup:CloudFormationメタデータをモニタリングし変更のたびに適用する。
デプロイオプション
AWS Elastic Beanstalk
- 負荷分散
- ヘルスチェック
- Auto Scaling
- アプリケーションプラットフォーム管理
- コードデプロイ
構成要素
更新方法
カスタマイズ
- .ebextentions/config.ymlで行われる
- ECSと連携してマルチコンテナへのデプロイが可能
AWS OpsWorks
AWS OpsWorksスタック
シェフレシピ
Container
CI/CDツールとの連携
サーバレス
LambdaやApiGatewayがよく利用される
問題例
- CloudFormationで更新が失敗しロールバックするとスタックがUPDATE_ROLLBACK_FAILEDになる
-> スタックのリソースがCloudFormation以外で作成されている - ブルーグリーンデプロイメントで、バグ出現時にロールバックしたい。ブルーはロードバランサの後ろにAuto Scalingグループで構成
-> グリーンに新しいロードバランサとAuto Scalingグループをアタッチ。加重Route53パブリックレコードセットでトラフィックを徐々に移行 - CloudFormatinonスタックが削除できない。
-> 外部で作成されたEC2インスタンスがある。CloudFormationで終了保護が有効になっている。 - オンプレミスからAWS Elastic Beanstalkでデプロイ。Amazon SQSを使用したい
-> Dockerコンテナを使用しAWS Elastic Beanstalkワーカー環境にコンテナをデプロイ - ロードバランサーを含むアプリケーションで、A/Bデプロイで一部のユーザを24時間移行してから残りを移行
-> Amazon Route53加重ラウンドロビンを使用してロードバランサー感で必要な比率を作成する - AWS CLoudFormationを使用して変更をプッシュしたが、後続のコードのデプロイに最大15分かかった
-> cfn-hip.confを正しく設定する