Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS CodePipelineで実現するCI/CD自動化 〜コミットからデプロイまで〜/The automation of CICD with AWS CodePipeline  

AWS CodePipelineで実現するCI/CD自動化 〜コミットからデプロイまで〜/The automation of CICD with AWS CodePipeline  

Yuki Fujita

July 04, 2019
Tweet

Other Decks in Technology

Transcript

  1. 3 今日お話すること • AWS CodePiepeline とは? • CI/CD の基本 •

    スペースマーケットの CI/CD の事例 ◦ CodePipeline 導入前の課題 ◦ CodePipeline 導入後に解決したこと • AWS CodePipeline 導入に取り組んで得たノウハウ ◦ 様々なシナリオへの応用 ◦ CI/CD の仕組みを横展開するためには
  2. 4 今日お話しないこと • CI/CD の細かいお話 • 発表に登場する AWS 各サービスの細かい説明 •

    AWS CodePipeline の具体的な設定方法 ◦ スペースマーケットの tech ブログに書きました! ◦ 「AWS CodePipeline で CI/CD の仕組みを構築したお話」で検索!
  3. 8 つまり AWS CodePipeline は • 面倒くさい部分は AWS が管理してくれて •

    継続的にプロダクトの自動的なリリースを実現する CI/CD プロダクトなのです。 「自動化」・・・好きですよね?
  4. 17 しかし、何回も繰り返す必要があるんです! • 開発の単位を小さくして早いペースで 実装 > テスト > デプロイ を繰り返す

    ◦ スピードは上がりそうだけど、品質の担保は必要 ◦ テストを繰り返し実行する必要がある ◦ デプロイ作業が増える • 実装 > テスト > デプロイ をできるだけ自動化したい! プロダクトの成長にスピードと品質の両立が求められる昨今(アジャイル開発) CI/CD
  5. 20 Continuous Integration(CI) Code > Build > Test > Code

    > Build > Test ・・・ のサイクルを高速に回して開発スピードと品質の担保を実現するのが Continuous Integration(CI)
  6. 24 CodePipeline 導入前の課題 • Circle CI でビルド・テスト・デプロイのパイプラインを構築していた ◦ フロントエンド・バックエンドの複数のシステムが Circle

    CI を使っていた ◦ ジョブの同時実行数の上限の関係で CI/CD の待ち時間が増えてきた • (AWS ECS へのデプロイも自前で作る必要があった) CI/CD は構築していたけど、デプロイされるまでの待ち時間が問題に・・ Job Job Job Job Job
  7. 32 CodePipeline 導入後に解決したこと • CodePipeline による実行の時間だけで、他の要因はなくなった ◦ (before) 最大1時間近く待つ ->

    (after) 安定して 20分ぐらい • AWS ECS へのデプロイも CodePipeline の標準の機能でカバーできる • CloudWatchEvent などの他の AWS サービスとの連携が楽なので夢が広がる ◦ デプロイ完了後の Slack への通知も設定 CI/CD が独立したので Circle CI の制限に引っかからなくなった
  8. 35 設定次第で様々な自動化が可能 • 開発環境のアプリケーションを現在の本番環境に追従させる ◦ 毎日決まった時間に、各システムの master ブランチに対して CI/CD 回す

    ◦ デプロイ先を開発環境に向けた version の CodePipeline を作るだけ ◦ CloudWatchEvent で定期スケジュールで CodePipeline の実行設定可能 • バッチや migration 用のタスクの CI 構築 ◦ バッチや migration の実行内容の実装 > ビルド > テストだけ自動化 ◦ 実行は AWS Batch で設定 or 手動で実行などなど ◦ バッチや migration の内容の CI と、実行のサイクルを分離 カスタマイズ次第で色々なシナリオに対応できる
  9. 37 こんな使い方も Aの Pipeline Bの Pipeline Cの Pipeline Dの Pipeline

    Eの Pipeline 複数システムの CI/CD を同時に並列で 実行する Pipeline を作る
  10. 38 CI/CD の仕組みを横展開するには • コード化すると設定の変更・変遷を Git 管理&レビューできる • 横展開する際もコードの一部の値を書き換えて実行するだけで、安全&確実 ◦

    AWS CloudFormation ◦ Terraform(今回私はこちらを使って横展開しています) 構築した AWS CodePipeline の設定をコード化する 構文やルールを理解するために 多少の学習コスト入りますが・・・