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

State of DevOps Report 2020/2021から見るCI/CDの始め方

Noboru Kurumai
September 03, 2021

State of DevOps Report 2020/2021から見るCI/CDの始め方

Noboru Kurumai

September 03, 2021
Tweet

More Decks by Noboru Kurumai

Other Decks in Programming

Transcript

  1. 1 State of DevOps Report 2020/2021 から見るCI/CDの始め方 車井 登 @

    CircleCI シニアソリューションズエンジニア
  2. 2 自己紹介 名前:車井 登 / Noboru Kurumai ポジション:Senior Solutions Engineer

    Email: [email protected] 経歴:パッケージソフト開発    クラウドサービスエンジニア   :@kurumai   :kurumai
  3. 3 今日お話したいこと - State of DevOps reportについて - State of

    DevOps report 2020概要 - State of DevOps report 2021概要 - CI/CDの始め方
  4. 4 State of DevOps reportについて - Puppet社によって2011年から行われているアンケートベースの DevOpsに関する調査レ ポート。2021年版で10年目。 -

    2013年のレポートではDevOpsのパフォーマンス指標となる「4つのメトリクス」を発表 - 2018年のレポートではDevOps成熟度モデルを発表 - CircleCIは2019年から参加
  5. 5

  6. 7 指標 エリート 高 中 低 デプロイ頻度 必要に応じていつでも (1日あたり複数回) 1時間から1日に1回

    1週間から1ヶ月に1回 1週間から1ヶ月に1回 変更に要する リードタイム 1時間以内 1日から1週間 1日から1週間 1ヶ月から6ヶ月 復旧時間 1時間以内 1日以内 1日以内 1週間から1ヶ月 失敗の頻度 0-15% 0-15% 0-15% 46-60% 4つのメトリクス
  7. 8

  8. 9 DevOpsジャーニー Source: 2019 State of DevOps Report 単一の標準的な OSにデプロイし

    ている 標準的な技術セットを使って構 築している ステージ1 正規化 アプリケーション開発チームが バージョン管理システムを利用し ている 標準的なOSセットにデプロイし ている ステージ2 標準化 チーム外の手動による承認作業 無しに個人が仕事ができている アプリ・サービスを構築するため のデプロイパターンが再利用さ れている 本番環境にデプロイされる前に インフラの変更がテストされてい る(*) ステージ3 拡大 システム設定が自動化されてい る プロビジョニングが自動化されて いる システム設定がバージョン管理 されている (*) インフラチームがバージョン管理 システムを利用している アプリケーション設定がバージョ ン管理されている (*) セキュリテイポリシーの設定が 自動化されている ステージ4 インフラデリバリ の自動化 インシデント対応が自動化され ている リソースが開発者自ら利用可能 な状態になっている アプリケーションがビジネスニー ズに応じて再設計されている (*) セキュリティチームが設計・開発 に携わっている ステージ5 セルフサービス Stage 0 基盤構築 サービスを運用しているチームが自ら監視と通知を設定可能 アプリケーションサービスを構築するためのデプロイパターンの再利用 アプリケーションサービスを構築するためのテストパターンの再利用 他のチームが提供するツールの改善に貢献できる 構成管理ツールによる設定の管理 *ステージと高い相関性を持つプラクティス
  9. 10

  10. 11

  11. 12

  12. 13 DevOpsジャーニー Source: 2019 State of DevOps Report 単一の標準的な OSにデプロイし

    ている 標準的な技術セットを使って構 築している ステージ1 正規化 アプリケーション開発チームが バージョン管理システムを利用し ている 標準的なOSセットにデプロイし ている ステージ2 標準化 チーム外の手動による承認作業 無しに個人が仕事ができている アプリ・サービスを構築するため のデプロイパターンが再利用さ れている 本番環境にデプロイされる前に インフラの変更がテストされてい る(*) ステージ3 拡大 システム設定が自動化されてい る プロビジョニングが自動化されて いる システム設定がバージョン管理 されている (*) インフラチームがバージョン管理 システムを利用している アプリケーション設定がバージョ ン管理されている (*) セキュリテイポリシーの設定が 自動化されている ステージ4 インフラデリバリ の自動化 インシデント対応が自動化され ている リソースが開発者自ら利用可能 な状態になっている アプリケーションがビジネスニー ズに応じて再設計されている (*) セキュリティチームが設計・開発 に携わっている ステージ5 セルフサービス Stage 0 基盤構築 サービスを運用しているチームが自ら監視と通知を設定可能 アプリケーションサービスを構築するためのデプロイパターンの再利用 アプリケーションサービスを構築するためのテストパターンの再利用 他のチームが提供するツールの改善に貢献できる 構成管理ツールによる設定の管理 *ステージと高い相関性を持つプラクティス
  13. 14

  14. 15 基盤を製品として扱うには・・・ - セルフサービスとAPIを第一に考える - 開発者自らのペースで利用できる環境を整える - 全体展開を視野に入れつつ、まずは局所的に構築する - リーン製品管理アプローチの採用

    - 開発者の経験とフローに注目する - サービスの継続的な改善のための調査 - 啓蒙する - 変更点や更新内容の継続的な発信、改善予定の周知、指標の公表 - 継続的に製品に投資する - 基盤はリリースしたら終わりではない。社内ニーズの変化を掴み、継続的に応え続 ける
  15. 16

  16. 17

  17. 18

  18. 21 チームトポロジーのキーコンセプト 4つの基本トポロジー - Stream-Aligned Team - ビジネスドメインの流れで仕事をするチーム - Enabling

    Team - Stream-Aligned Teamを助けるチーム - Complicated subsystem team - ニッチな技術的専門性を提供するチーム - Platform team - 社内向けプロダクトを提供するチーム 3つのチーム相互モデル - Collaboration(一定期間の協業、新規性の発見) - X-as-a-Service(サービスとしての提供と利用) - Facilitation(別のチームの支援)
  19. 24 - CI/CDをどこから始めれば良いのか分からない - 開発会社にすべて委託していて生産性がなかなか上がらない - 次期案件でCI/CDを導入することで他社コンペに勝ちたい - 次期案件でCI/CDを導入しても売上を下げたくない -

    内製化を進めるために開発環境を手元で整備したい - 自分のプロジェクトの or 基盤チームからみた各プロジェクトの - 生産性を上げたい - 品質を上げたい - CI/CDはやっているが改善ポイントが分からない - もっとビルドスピードを上げたい - もっとデプロイ頻度を上げたい DevOpsやCI/CDを導入するときの課題例 CI/CDの利用状況に応じて 課題は変化していく
  20. 25 CI/CD導入による価値の連鎖 テストの自動化による手戻りの防止 (短期的なコスト増、長期的なコスト削減) 継続的インテグレーションによる 改善文化の定着 (小さな失敗と成功を高速に繰り返すことによる学習スピードの向上) 成功事例をもとにした組織内部での横展開 (スケールメリットによる コスト削減、成功パターンの蓄積による

     既知の失敗の抑止と、新たな知見を含んだ失敗へ) リリース・デプロイの自動化による リリース品質の向上 (人手を少しづつ減らすことで人的ミスを抑止) 継続的インテグレーション・継続的デプロイメントの成熟による ビ ジネススピードの向上
  21. DevOpsジャーニー 26 Source: 2019 State of DevOps Report 単一の標準的な OSにデプロイし

    ている 標準的な技術セットを使って構 築している ステージ1 正規化 アプリケーション開発チームが バージョン管理システムを利用し ている 標準的なOSセットにデプロイし ている ステージ2 標準化 チーム外の手動による承認作業 無しに個人が仕事ができている アプリ・サービスを構築するため のデプロイパターンが再利用さ れている 本番環境にデプロイされる前に インフラの変更がテストされてい る(*) ステージ3 拡大 システム設定が自動化されてい る プロビジョニングが自動化されて いる システム設定がバージョン管理 されている (*) インフラチームがバージョン管理 システムを利用している アプリケーション設定がバージョ ン管理されている (*) セキュリテイポリシーの設定が 自動化されている ステージ4 インフラデリバリ の自動化 インシデント対応が自動化され ている リソースが開発者自ら利用可能 な状態になっている アプリケーションがビジネスニー ズに応じて再設計されている (*) セキュリティチームが設計・開発 に携わっている ステージ5 セルフサービス Stage 0 基盤構築 サービスを運用しているチームが自ら監視と通知を設定可能 アプリケーションサービスを構築するためのデプロイパターンの再利用 アプリケーションサービスを構築するためのテストパターンの再利用 他のチームが提供するツールの改善に貢献できる 構成管理ツールによる設定の管理 *ステージと高い相関性を持つプラクティス
  22. 開発基盤G ジャーニー DevOpsの習熟度は、個人に依 存する。 経験がある中途入社メンバーに より良くなることも、退職者により 停滞することもある。 ステージ1 現状維持 開発環境の改善を検討していな

    い。 利用しているツールがなぜ利用 されているか説明できないことが 多い。 ステージ2 個人が主導 DevOpsの習熟度は、個人に依 存する。インフォーマルなグルー プにより、プロジェクト内やプロ ジェクト間で情報交換がなされて いる。 ステージ3 インフォーマルグ ループ コスト削減を主目的として開発基 盤Gチームが発足される。 開発ツールの比較や、勉強会な どを企画することで組織全体の 知識底上げにも貢献している。 ステージ4 開発基盤G 発足 投資対効果をあげるために、コ スト削減だけではなく生産性向 上も同時に改善を図る目的の チーム。 現場とのつながりが強く、成熟し たチームになると、プロジェクト チームと開発基盤 Gを兼任する 担当が存在する。 ビルドデータを分析し、異常値の 改善や平均値の底上げを実施。 ステージ5 生産性向上 達成目標 検討メンバー - - プロダクト開発 個人 プロダクト開発 インフォーマル グループ コスト削減 開発基盤Gとインフォー マルなグループ 生産性向上 開発基盤G
  23. 28 ステージ1 導入する 目標 CI/CDの導入 ステージ2 改善する ステージ3 拡大する 要件

    手作業を自動化する 課題 自動化されていないテスト、 属人化された手動デプロイ 初期コストが低い/かからない Developer Experienceの改善 3rdパーティ製品との連携 開発生産性を高め、 自動化範囲の拡大の追求 ジョブ同時実行、高速化、デバッグ 他の製品と容易に連携可 メンテナンスフリー ノウハウ・パイプラインの横展開 プロジェクト間の生産性比較 規模のメリットを得られていない 1つのCI/CDツールでカバーできる パイプラインの部品化・共有化 パイプライン改善メトリクス 収集・比較 開発者の導入障壁が低い CI/CDを成熟させる3つのステップ (ステージ1の素早い導入を目指しつつ、ステージ3を常に意識する) 初期導入支援サポートがある 全プロジェクトの トータルコスト見直し トータルコスト見直し
  24. 29 リソース - State of DevOpsレポート2020 https://www2.circleci.com/Content-JP-Puppet2020StateofDevOpsReport.html - State of

    DevOpsレポート2021 (現在翻訳中です。9月初旬に公開予定です) - DevOpsの実践に関する3000万のワークフローから得られた知見 https://www2.circleci.com/ja-Data-Driven-Case-for-CI-2019.html - 2020 年版ソフトウェア デリバリーに関する現状調査 https://www2.circleci.com/JPThe2020StateofDeliveryReport_LP.html
  25. CircleCIをもっと知りたい!なら 最新の情報なら @CircleCIJapan をフォロー! #CircleCIJp タグつけて情報共有! イベント、セミナー、勉強会の情報なら connpassのCircleCIグループから! https://circleci.connpass.com/ 動画でCircleCIについて学ぶなら

    CircleCIチャンネルを登録! (日本語プレイリストは QRから→)  他社でのCircleCI活用事例やQ&Aなら  CircleCI discuss のトピックから!  https://discuss.circleci.com/