$30 off During Our Annual Pro Sale. View Details »

至高のCI/CDパイプラインを実現する5つの約束 #jawsdays / The five principles to spark joy in your pipelines

至高のCI/CDパイプラインを実現する5つの約束 #jawsdays / The five principles to spark joy in your pipelines

Presented virtually at JAWS DAYS 2019.

Tori Hara
PRO

February 23, 2019
Tweet

More Decks by Tori Hara

Other Decks in Technology

Transcript

  1. twitter.com/toricls
    ⾄⾼のCI/CDパイプラインを実現する5つの約束
    Yasuhiro Hara
    Feb. 23, 2019
    #jd2019_d

    View Slide

  2. twitter.com/toricls
    Yasuhiro Hara /
    Specialist Solutions Architect, Containers
    Amazon Web Services Japan
    ❤ AWS Fargate & AWS Lambda
    toricls

    View Slide

  3. twitter.com/toricls
    ▶ CI/CD パイプラインの必要性
    ▶ 具体的な実装テクニック
    ▶ ツールやサービスの紹介
    話さないこと

    View Slide

  4. twitter.com/toricls
    最⾼のパイプラインを⼿に⼊れるための
    マインドセットとは?
    本⽇の話題

    View Slide

  5. twitter.com/toricls
    1. パイプラインファースト

    View Slide

  6. twitter.com/toricls
    1. パイプラインファースト
    ▶ プロジェクトの初期、まずアプリケーション開発に着⼿しがち
    ▶ 少⼈数なチームであればあるほどそうなりがち
    ▶ アプリケーション開発から着⼿するとCI/CD整備が後回しになりがち
    ▶ プロジェクトで⼀番最初に作るべきはパイプライン
    ▶ 理想は⼀発⽬のデプロイからパイプラインを通す
    ▶ パイプライン作る → rails new → デプロイ → アプリケーション開発に着⼿

    View Slide

  7. twitter.com/toricls
    1. パイプラインファースト
    ▶ 最初からパイプラインを持つことはプロジェクトへの投資
    ▶ 開発そのものの加速を考えれば圧倒的な低リスク投資
    ▶ 最初からちゃんとしたパイプラインである必要はない
    ▶ ローカルにて⼿で実⾏するコマンドはスクリプトにまとめる
    ▶ スクリプトを普段の開発だけでなくパイプラインからも利⽤する
    ▶ 整えるのは後からで良い

    View Slide

  8. twitter.com/toricls
    2. ⾃動化されたパイプラインの維持

    View Slide

  9. twitter.com/toricls
    2. ⾃動化されたパイプラインの維持
    ▶ ビジネス要求の変化とともにアプリケーションやシステムは変化を求められる
    ▶ 油断するとすぐに⾃動化できないアプリケーションが出来上がる
    ▶ ⾃動化が難しくなる変更を避ける
    ▶ ビジネス要求への対応⽅法が本当にそれしかないのか3回くらい考える
    ▶ 他の実装⽅法がないか10回くらい考える
    ▶ 「オペレーションの⾃動化が難しいものは開発しない」くらいの気合いが必要

    View Slide

  10. twitter.com/toricls
    2. ⾃動化されたパイプラインの維持
    ▶ 常にパイプラインをシンプルに保つ
    ▶ アプリケーション都合の複雑性をパイプラインやインフラに押し込まない
    ▶ より柔軟性が⾼いアプリケーションで複雑性を吸収する⽅が良いことも
    ▶ e.g. データベースマイグレーション
    ▶ アプリケーションを新旧どちらのスキーマでも動く形で実装
    ▶ 先にアプリケーションをデプロイし、その後スキーマ変更をデプロイ
    ▶ データベーススキーマに後⽅互換性のない変更を加えない

    View Slide

  11. twitter.com/toricls
    3. 柔軟なパイプラインの維持

    View Slide

  12. twitter.com/toricls
    3. 柔軟なパイプラインの維持
    ▶ プロジェクトの進みに合わせてパイプラインも変化が必要となる
    ▶ 継続的な変化を柔軟に受け⼊れられるよう、パイプラインを常にシンプルに保つ
    ▶ パイプラインへの要求変化に柔軟に対応できる状態を維持する
    ▶ ビジネス要求の変化
    ▶ ポリシーの変更
    ▶ デプロイ対象アプリケーションの変化
    ▶ システムを構成するコンポーネントの変化、etc.

    View Slide

  13. twitter.com/toricls
    3. 柔軟なパイプラインの維持
    ▶ パイプラインそのものをコード化し、リポジトリで管理する
    ▶ Iterative な変更をパイプラインに加えることへの⼼理的障壁を取り除く
    ▶ Iterative な改善が必要なのはアプリケーションだけではない

    View Slide

  14. twitter.com/toricls
    4. パイプライン UX の継続的改善

    View Slide

  15. twitter.com/toricls
    4. パイプライン UX の継続的改善
    ▶ パイプラインはチームメンバーに対して提供される「サービス」
    ▶ 何が実⾏されたのか、なぜ処理が落ちたのかを他のメンバーが分かるように
    ▶ パイプライン全体の処理時間の維持・短縮に継続的に取り組む
    ▶ 何を⾔っているか分からない、時間のかかるパイプラインを使いたい⼈はいない
    ▶ ただし、時間短縮のための過度な作り込みは避ける
    ▶ 黒魔術になりがち & パイプラインの安定性を損ねがち
    ▶ 不安定なパイプラインを使いたい⼈はいない

    View Slide

  16. twitter.com/toricls
    5. パイプラインが唯⼀のリリース⼿段

    View Slide

  17. twitter.com/toricls
    5. パイプラインが唯⼀のリリース⼿段
    ▶ パイプラインを通さないデプロイは禁忌
    ▶ うまくビルド・テストが通らない、なんかデプロイこけるは常に起き得る
    ▶ 「とりあえず今回は急ぎだから⼿作業でやっちゃうか」を断固避ける
    ▶ 「とりあえず⼿作業」は楽。慣れてしまうとこれがパイプライン崩壊の始まりに
    ▶ パイプラインを通さないデプロイが許される例外の境界
    ▶ ビジネスが危機的状況にある場合、という感覚を持つ

    View Slide

  18. twitter.com/toricls
    まとめ

    View Slide

  19. twitter.com/toricls
    ⾄⾼のCI/CDパイプラインを実現する5つの約束
    ▶ パイプラインファースト
    ▶ ⾃動化されたパイプラインの維持
    ▶ 柔軟なパイプラインの維持
    ▶ パイプライン UX の継続的改善
    ▶ パイプラインが唯⼀のリリース⼿段

    View Slide

  20. twitter.com/toricls
    λ
    おしまい

    View Slide