(動画まとめ)AWS Summit Series 2016 | Chicago - DevOps on AWS

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
    • 並行/直列実行できる

例の流れ

  1. GitHubにコミット
  2. Pipelineが変更をpullする
  3. S3にartifactsをPUT
  4. 次のステージに遷移しJenkins立ち上がってポーリング
  5. S3からjenkinsがartifactsを取得
  6. Jenkinsがビルド結果をS3にPUT
  7. JenkinsがPipelineに成功を通知
  8. 次のステージへ
  9. ビルド結果を取得
  10. Beanstalkに渡す
  11. Beanstalkがデプロイ

例ではCodepipelineは別ツールへのインターフェース

AWS CodeDeploy

  • どんなインスタンスへも自動でコードをデプロイ
  • 複雑なアップデートのハンドリング
  • ダウンタイムを避けたデプロイ
  • 言語やOSにかかわらずEC2やオンプレにデプロイ
  • サードパーティツールとの統合

appspec.yml

hooksでライフサイクルの定義ができる
起動時キックするスクリプトとかの指定
 → ELBに登録したりとか

ダウンタイム無しでのデプロイ

  • One at time
  • half at time
  • all at one

Lambdaによるアクション

  • 5分では処理できないタスクはContinuation Tokenで