AWS Summit Series 2016 | Chicago - DevOps on AWS
AWS Summit Series 2016 | Chicago - DevOps on AWS
ソフトウェアのリリースプロセス
Continuous integration
ソースコードをどこかにコミットして、テストして、ビルドまで。
Continuous delivery
ソースコードをどこかにコミットして、テストして、ビルドして、どこかの環境へのデプロイの準備ができるまで。
Continuous deployment
あらゆるコミットが本番環境に反映されるまで。
Continuous deliveryのメリット
- 同じことなんかいもするのはだるい
- コミットごとにテストを動かしてバグを対処したりできる
- 週末とか夜のビルドをまたなくていい
- 素早いアップデートの提供
AWS Codepipeline
- 素早く信頼性のあるアプリケーションのアップデート
- リリースプロセスの可視化
- コードの変更ごとにビルド、テスト、デプロイ
- サードパーティツールとの統合
AWS Codepilelineの要素
- Pipeline
- Stageで構成される
- Stage
- Actionで構成される
- Transisionで違うStageとつながる
- Action
- 並行/直列実行できる
例の流れ
- GitHubにコミット
- Pipelineが変更をpullする
- S3にartifactsをPUT
- 次のステージに遷移しJenkins立ち上がってポーリング
- S3からjenkinsがartifactsを取得
- Jenkinsがビルド結果をS3にPUT
- JenkinsがPipelineに成功を通知
- 次のステージへ
- ビルド結果を取得
- Beanstalkに渡す
- Beanstalkがデプロイ
例ではCodepipelineは別ツールへのインターフェース
AWS CodeDeploy
appspec.yml
hooksでライフサイクルの定義ができる
起動時キックするスクリプトとかの指定
→ ELBに登録したりとか
ダウンタイム無しでのデプロイ
- One at time
- half at time
- all at one
Lambdaによるアクション
- 5分では処理できないタスクはContinuation Tokenで