Presented virtually at JAWS DAYS 2019.
twitter.com/toricls⾄⾼のCI/CDパイプラインを実現する5つの約束Yasuhiro HaraFeb. 23, 2019#jd2019_d
View Slide
twitter.com/toriclsYasuhiro Hara /Specialist Solutions Architect, ContainersAmazon Web Services Japan❤ AWS Fargate & AWS Lambdatoricls
twitter.com/toricls▶ CI/CD パイプラインの必要性▶ 具体的な実装テクニック▶ ツールやサービスの紹介話さないこと
twitter.com/toricls最⾼のパイプラインを⼿に⼊れるためのマインドセットとは?本⽇の話題
twitter.com/toricls1. パイプラインファースト
twitter.com/toricls1. パイプラインファースト▶ プロジェクトの初期、まずアプリケーション開発に着⼿しがち▶ 少⼈数なチームであればあるほどそうなりがち▶ アプリケーション開発から着⼿するとCI/CD整備が後回しになりがち▶ プロジェクトで⼀番最初に作るべきはパイプライン▶ 理想は⼀発⽬のデプロイからパイプラインを通す▶ パイプライン作る → rails new → デプロイ → アプリケーション開発に着⼿
twitter.com/toricls1. パイプラインファースト▶ 最初からパイプラインを持つことはプロジェクトへの投資▶ 開発そのものの加速を考えれば圧倒的な低リスク投資▶ 最初からちゃんとしたパイプラインである必要はない▶ ローカルにて⼿で実⾏するコマンドはスクリプトにまとめる▶ スクリプトを普段の開発だけでなくパイプラインからも利⽤する▶ 整えるのは後からで良い
twitter.com/toricls2. ⾃動化されたパイプラインの維持
twitter.com/toricls2. ⾃動化されたパイプラインの維持▶ ビジネス要求の変化とともにアプリケーションやシステムは変化を求められる▶ 油断するとすぐに⾃動化できないアプリケーションが出来上がる▶ ⾃動化が難しくなる変更を避ける▶ ビジネス要求への対応⽅法が本当にそれしかないのか3回くらい考える▶ 他の実装⽅法がないか10回くらい考える▶ 「オペレーションの⾃動化が難しいものは開発しない」くらいの気合いが必要
twitter.com/toricls2. ⾃動化されたパイプラインの維持▶ 常にパイプラインをシンプルに保つ▶ アプリケーション都合の複雑性をパイプラインやインフラに押し込まない▶ より柔軟性が⾼いアプリケーションで複雑性を吸収する⽅が良いことも▶ e.g. データベースマイグレーション▶ アプリケーションを新旧どちらのスキーマでも動く形で実装▶ 先にアプリケーションをデプロイし、その後スキーマ変更をデプロイ▶ データベーススキーマに後⽅互換性のない変更を加えない
twitter.com/toricls3. 柔軟なパイプラインの維持
twitter.com/toricls3. 柔軟なパイプラインの維持▶ プロジェクトの進みに合わせてパイプラインも変化が必要となる▶ 継続的な変化を柔軟に受け⼊れられるよう、パイプラインを常にシンプルに保つ▶ パイプラインへの要求変化に柔軟に対応できる状態を維持する▶ ビジネス要求の変化▶ ポリシーの変更▶ デプロイ対象アプリケーションの変化▶ システムを構成するコンポーネントの変化、etc.
twitter.com/toricls3. 柔軟なパイプラインの維持▶ パイプラインそのものをコード化し、リポジトリで管理する▶ Iterative な変更をパイプラインに加えることへの⼼理的障壁を取り除く▶ Iterative な改善が必要なのはアプリケーションだけではない
twitter.com/toricls4. パイプライン UX の継続的改善
twitter.com/toricls4. パイプライン UX の継続的改善▶ パイプラインはチームメンバーに対して提供される「サービス」▶ 何が実⾏されたのか、なぜ処理が落ちたのかを他のメンバーが分かるように▶ パイプライン全体の処理時間の維持・短縮に継続的に取り組む▶ 何を⾔っているか分からない、時間のかかるパイプラインを使いたい⼈はいない▶ ただし、時間短縮のための過度な作り込みは避ける▶ 黒魔術になりがち & パイプラインの安定性を損ねがち▶ 不安定なパイプラインを使いたい⼈はいない
twitter.com/toricls5. パイプラインが唯⼀のリリース⼿段
twitter.com/toricls5. パイプラインが唯⼀のリリース⼿段▶ パイプラインを通さないデプロイは禁忌▶ うまくビルド・テストが通らない、なんかデプロイこけるは常に起き得る▶ 「とりあえず今回は急ぎだから⼿作業でやっちゃうか」を断固避ける▶ 「とりあえず⼿作業」は楽。慣れてしまうとこれがパイプライン崩壊の始まりに▶ パイプラインを通さないデプロイが許される例外の境界▶ ビジネスが危機的状況にある場合、という感覚を持つ
twitter.com/toriclsまとめ
twitter.com/toricls⾄⾼のCI/CDパイプラインを実現する5つの約束▶ パイプラインファースト▶ ⾃動化されたパイプラインの維持▶ 柔軟なパイプラインの維持▶ パイプライン UX の継続的改善▶ パイプラインが唯⼀のリリース⼿段
twitter.com/toriclsλおしまい