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

CICD

Cybozu
August 19, 2020

 CICD

Cybozu

August 19, 2020
Tweet

More Decks by Cybozu

Other Decks in Technology

Transcript

  1. CI の利点 ▌⾼速なフィードバック l 問題の早期発⾒ l ⾼速な学習 ▌頻繁に変更がマージされるようになれば差分が⼤きくならない l 問題発⾒時の調査が簡単になる

    l リスク(不確実性)が減る ▌Success/Fail の可視化によるコミュニケーション促進 ▌毎回の変更が⾃動テストで保証される安⼼感 24
  2. ⾃動テスト ▌ 単体テスト l ⼩さい単位のコードが役割通り動作するかチェックする ▌ 結合テスト l 複数のコードを組み合わせた機能が正しく動作するかチェックする ▌

    受け⼊れテスト(E2E テスト) l ビジネス要求を満たしてるかチェックする ▌ 上記以外にもいろいろ l テストの種類ごとの呼び⽅や⽬的はチームによって異なるので、 認識を揃えることが⼤事 31
  3. デプロイ・リリース ▌ メインラインにマージされたときだけ実⾏されることが多い l タスクブランチでも動作確認⽤環境にデプロイとかはある ▌ ステージング環境 l 本番環境によく似せたステージング環境でまずデプロイする ▌

    本番環境へのリリース戦略 l 万⼀の問題発⽣に備えることが重要 l ⼀部の環境から広げていく、ロールバック、無停⽌ l カナリアリリース、ブルーグリーンデプロイ、フィーチャーフラグ など 34
  4. 38

  5. 40

  6. GitHub Actions ▌GitHub が提供する CI/CD サービス l 現在は Enterprise Server

    は未対応 ▌パブリックリポジトリでは完全無料 ▌CI/CD に限らず GitHub の様々なイベントにフックできる 41
  7. その他の CI/CD ツール ▌AWS Code シリーズ l CodeBuild, CodeDeploy, CodePipeline,

    ... l AWS と権限周りを統合しやすい ▌Argo CD l Kubernetes ⽤ CD ツール l GitOps できる l https://www.weave.works/technologies/gitops/ 42
  8. 不安定なビルド ▌不具合ではないのにビルドが失敗する l CI/CD の信頼性が下がる ▌原因はいろいろ l 本番コードではないので書かれる⼿抜きスクリプト l E2E

    テストの微妙なタイミングのズレ l 不安定な環境 l 構築⼿順が微妙に異なる、前のビルドのゴミが残ってる、など 61
  9. Continuous Delivery vs Continuous Deployment ▌コード変更ごとにリリースまでの検証を⾏うのはどちらも同じ ▌Continuous Delivery l 毎回本番環境にリリースするとは限らない

    ▌Continuous Deployment l 毎回本番環境へのリリースまで⾃動で⾏う ▌どちらを選ぶかは時と場合に合わせて 66