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

生成AI時代のソースコード管理を考える:‘X as Code’からGitOpsへのDevOps進化論

yuriemori
January 31, 2025
310

生成AI時代のソースコード管理を考える:‘X as Code’からGitOpsへのDevOps進化論

Burikaigi2025で発表させて頂いたときのスライドです。

GitHub Copilotをはじめとする生成AIツールの登場により、コード上でのインタラクティブなサポートや、組織のコードベースを活用した開発が可能になった今、開発者には「生成AIとのコラボレーションを強化できるコードベース」を育てることが求められます。
このセッションでは、DevOpsの歴史を振り返り、IaC(Infrastructure as Code)など「X as Code」の概念がどのように生まれ、インフラやパイプライン、構成管理のコード化が開発プロセスをどう変えたのかを概観します。そして、GitOpsという新たな開発文化の可能性を探り、生成AI時代に適したコードベースの構成や運用のための技術プラクティス、組織的な課題についてお話します。

yuriemori

January 31, 2025
Tweet

More Decks by yuriemori

Transcript

  1. 今日話すこと • DevOpsにおけるコード化(X as Code)の歴史 • コードベースを唯一の信頼源(single source of truth)とする

    GitOpsへの進化 • 生成AI時代のソース管理はどうあるべきか? • 我々はなにをコード化して、どのように運用していくべき?
  2. Agenda • Introduction • DevOpsにおける’X as Code’(なにかをコード化する)の歴史 • X as

    CodeからGitOpsへ • 生成AIとのコラボレーションを強化するソースコード管理 • コードベースとエンジニアリング組織 • まとめ • References
  3. Yurie Mori(森 友梨映) • DevOps Engineer(Sr.Consultant)@Avanade • Microsoft MVP for

    Developer Technologies(DevOps) 2024~ • Zennでの記事執筆(Azure DevOpsを使ったAgile/DevOpsの実践, エンタープライズでGiHub を使うとか) • TFSUGでの登壇 • 書籍執筆(AZ-400の試験対策本) • お仕事 • AgileとDevOpsの実践の支援 • エンタープライズでのDevOpsソリューション( Azure DevOps/GitHub )の導入・構築 • 技術スタック • Azure DevOps, GitHub, Azure, .NET, C# • Please follow me
  4. What is DevOps? DevOps is the union of people, process,

    and technology to continually provide value to customers. 継続的に価値を届けるための人・プロセス・テクノロジーの総体 https://azure.microsoft.com/ja-jp/resources/cloud-computing-dictionary/what-is-devops
  5. 2000’s Agile/DevOps, クラウドの誕生 クラウド化技術、それから派生したインフラ構成の迅速化へのニーズ、Infrastructure as Codeの発生 Agile, DevOpsのムーブメントもこの頃から発生 • 2001

    • アジャイル開発宣言 • 2006 • Team Foundation Server(のちのAzure DevOps) リリース • Amazon Web Service リリース • Liquibase リリース • データベースの変更をXML/YAML/JSONで記述し、管理 • Schema as Codeの実用化 • 2008 • Patrick Debois、Agile Infrastructure and Operations発表 • IaCという概念は明言されていないものの、インフラ構成にもアジャイル手法を適用し、迅 速で効率的なインフラ運用の必要性を提唱 • Google App Engine(のちのGoogle Cloud)リリース • GitHubリリース • 2009 • DevOps Days開催 DevOpsのムーブメントのはじまり • Chefリリース • インフラの設定をコードで管理 Infrastructure as Codeの実用化 ※年表の諸元はAppendixを参照
  6. 2010s’前半: DevOpsの台頭とX as Codeの発展 DevOpsが広まり、CI/CDの普及が加速。それによるPipelines as Code, SREのムーブメントの発 生によるObservability as

    Code(コードとしての監視)の萌芽 • 2010 • Windows Azure(のちのMicrosoft Azure)リリース • 2011 • Jenkins1.0 リリース • CI/CDの普及。Pipeline as Codeの土台が築かれる • 2012 • Ansible リリース • YAMLベースの構成管理 Configuration as Codeの実用化 • 2013 • Team Foundation Services リリース • Team Foundation Serverのクラウド版。Azure DevOps Servicesの前身。 • The Phoenix Project 出版 • DevOpsの名著。DevOpsのムーブメントの加速化 • 2014 • HashiCorp Terraform リリース • 2016 • Site Reliability Engineering 出版 • Observability as Codeの萌芽 ※年表の諸元はAppendixを参照
  7. 2010s’後半:Cloud Native Kubernetesの普及と共に、GitOpsの概念が登場。 Policy as Codeの実用化、「すべてをコード化する」というEverything as Codeというコンセプトの発生。 • 2017

    • Weavework, GitOpsを提唱 • Gitリポジトリを唯一の信頼源とし、Gitを唯一の信頼できる情報源(Single Source of Truth)」として活用し、システムのインフラやアプリケーションの運用を自動化する運 用手法の提唱 • 2018 • Open Policy Agent(OPA) リリース • Policy as Code(ポリシーのコード化)の実用化 • この頃からEverything as Code(ぜんぶコード化)という概念が提唱される • GitHub Actionsリリース • 2019 • GitHubのユーザー数40万+突破 ※年表の諸元はAppendixを参照
  8. Cloud Native • Policy as Code • GitOps • Everything

    as Code DevOpsの台頭とX as Codeの発展 Agile/DevOps, クラウドの誕生 DevOpsにおける‘X as Code’の発展 DevOpsの進化とともに、“X as Code”の概念はインフラ管理からソフトウェア開発、運用、セキュリティ、 可観測性まで広がり、クラウドネイティブな世界における新しい標準となっている 2000s‘ 2010s‘前半 2010s‘ 後半 • Infrastructure as Code • Schema as Code • Pipeline as Code • Configuration as Code • Observability as Code
  9. GitOps • インフラストラクチャ、構成、アプリケーション コードを定義および管理するための唯一の 信頼できる情報源(Single Source of Truth)として Git リポジトリを活用する、ソフ

    トウェアデリバリのアプローチ • インフラストラクチャのプロビジョニング、構成の更新、アプリケーションのデプロイなど、シ ステムに対するすべての変更は、Git のコミットと pull request を通して行われる As in source code, as in cloud. (ソースで定義されたように、クラウド上でも) ソフトウェア開発で発生するあらゆる変更(アプリ、インフラ)はコードベースでの変更を 起点として、コードレビュー、CI/CDを経て適用される。 Azure App Service Storage Account App Service Plan インフラ構成を コードとして定義 Gitでのコード変更をトリガーとしてCI/CDツール で自動的に変更をクラウド上に適用
  10. コード化する(Codification)ということ • What is codification? Well, the term "codify" is

    very straightforward. It means you're going to capture a process, routine or algorithm in a textual format. It's basically "write something as text." • コード化(codification)とはなにか?あるプロセスやルーチン、アルゴリズム をテキスト化するということだ。 基本的には "何かをテキストとして書く " ということだ。 https://www.hashicorp.com/resources/everything-as-code-the-future-of-ops-tools
  11. コード化の恩恵 • 自動化 • すべてをコードとして記述することで、様々なプロセスを自動化できる • デプロイ、スケーリング、ツールのセットアップのアジリティの向上 • バージョン管理/追跡性 •

    バージョン管理による変更の追跡性の向上 • 必要であれば「時を戻す」こともできる • 再現性/一貫性 • 同じような環境を容易に再現可能 • 安定性を確保し、手作業による設定ミスを回避 • 拡張性と柔軟性 • リソースの追加や拡大・縮小、ニーズの変化への対応が容易になる • コラボレーションとナレッジの共有 • 開発者、オペレーション、その他のパートナーが一緒に作業し、コードを共有し、変更点を確認し、コメントを 出すことができる • 一緒に仕事をし、情報を共有するという考え方が促進される • ナレッジベースとしても利用できる
  12. Everything as Code すべてをコード化する • アプリケーションコードだけでなく、構成ファイル やドキュメント、パイプライン定義、データス キーマ定義、インフラの構成やプロビジョニン グスクリプトなど、アプリケーションのビルド、テ スト、デプロイ、実行に必要なすべてのファイ

    ルをリポジトリに含める • すべてをコードで記述することで、手動操作 を排除し、信頼性、効率性、スピードを最大 化 • 構成の一貫性・再現性・追跡性の担保 • 「これはいつ誰が変えてこうなってるんだっ け?」を回避 • CI/CD, 自動化は「それをコード化すること」 から始まる
  13. 2020s’~: 生成AIの台頭 OpenAIのChatGPTリリース、GitHub CopilotのGA、Azure Open AIの登場により、生成AIの 開発プロセスへの活用が進む • 2021 •

    GitHub Copilot preview開始 • 2022 • Azure Open AI 発表 • GitHub Copilot リリース(GA) • ChatGPT リリース • 2023 • Gitlab Duo 発表 • Azure Open AI Serviceリリース(GA) • GitHub、Universe2023でCopilot Workspace, Code scanning Autofix, GitHub Copilot Enterpriseを発表 コードベースを介した生成AIとのコラボレーション ※年表の諸元はAppendixを参照
  14. 生成AIの登場による開発体験の変化 • GitHub CopilotなどのAIペアプログラマーの登場により、コードベースを介して生成AIとのコラボレー ションが可能になった • Knowledge Base: 組織のコードベースをGitHub Copilotのinputとする

    • →組織のコードベースに含まれるナレッジをベースにしたコラボレーションが可能に • コードベースが良質(高い可読性、豊富なドメイン知識、よいアーキテクチャ)であるほど、より質 の高い提案を受けられるようになる • 良質なコードベースであるほどコラボレーションは強化される
  15. 生成AIが解釈しやすいコード GitHub Copilotを活用するためのデザインパターン • どのような処理、どのような データ構造なのかが具体的に わかるような命名 • コンテキストに依存しないアー キテクチャ

    • 疎結合で独立したコンポーネ ントに分割する 具体的で説明的な命名 コンテキストレス・アーキテクチャ • 提供されたコードの範囲 が非常に限られている場 合、外部ソースに依存す るよりも、内部に含める方 が良い 微細なOSS依存の排除 コードチャンクは小さく • KISSの原則, 単一責任の 原則を意識する ハイレベルアーキテクチャを先に • プログラムのハイレベルなアー キテクチャを先に設計し、コー ドの各部分の機能と目的につ いてコメントしていく AIフレンドリーなドキュメン テーション • AI の時代では、Infrastructure as Code、データベーステーブル仕様、テス ト要件などのファイルは、即座に実際の コードに変換できる可能性を持つ • 複雑なエクセル、パワーポイントファイル、 PDF、画像形式ではなく、テキストベース のドキュメントに https://patterns.hattori.dev/
  16. Design as Code • 開発に必要なドキュメンテーションもコード化する • markdownやmermaid diagramなど • 仕様書、設計書、etc.

    • これらをコード化することで生成AIはシステムに必要な前提 知識をinputすることができる • PDF, 複雑なExcel設計書(神Excelとかいわれるやつ)だと 変更管理や追跡性の担保が難しい • でもmarkdownとかmermaidは学習コストが高い!とい う方には。。。 • 最近ではIssueに記述されているCopilotが自然言語から markdownの設計書や仕様書を作ってくれるCopilot Workspaceとかツールも発達している
  17. 開発組織としてのチャレンジ:技術の発展と文化のギャップ • Design as Codeのような仕様や要件、設計をコード化するプラクティスや、IaC、GitOps、 Everything as Codeという技術や概念の発展、コードベースを介した生成AIとのコラボレーション が可能になった •

    ビジネスレイヤ(クライアント)と開発とのギャップを取り除くというアジャイルが目指していた姿、開発と 運用のギャップを取り除くというDevOpsが目指していた姿に近づきつつあると感じている • しかし、個人的にはこれらを可能とする技術は発展しているものの、(技術の進歩が急すぎて)組 織文化はまだそれに適合する準備ができていないと感じている • 学習コストやリソースの問題:すべてをコード化していくのにはそれなりのコストが掛かる • 組織的な問題:開発者、オペレーター、ビジネスレイヤの組織のサイロ化 • 技術の価値を最大限に発揮するためには技術の発展に合わせた組織・文化の醸成に力を入れるべ き • いきなりGitOps!すべてを自動化!とかは難しいので、まずは基盤となる「コード化」を推進するこ と、良質なコードベースを育成していくことから始めてみたらどうだろう
  18. • クラウドの進化など、開発を支える技術の進化に応じて、何をコード化すべきかが変わってきた • あらゆるものをコード化(Everything as Code)し、コードベースを唯一の信頼源(single source of truth)とするGitOpsという概念に発展した •

    生成AIとのコラボレーションとコードベースの質は相互に影響し合う • 良質なコードベースを持っていれば、生成AIはそれから学習することができる • 生成AIが良質なコードベースの情報をinputしていれば、開発者の学習やナレッジは強化される • 生成AIが解釈しやすいか?を考慮したコードベース(すべてをコード化、解釈しやすいコンポーネント サイズ、SOLID原則にfollowする)を育てていくことで、生成AIとのコラボレーションは強化される • 技術の発展に合わせた組織文化のアジャスト まとめ
  19. • What is DevOps? • https://azure.microsoft.com/ja-jp/resources/cloud-computing-dictionary/what-is-devops • DevOpsにおけるX as Codeの歴史

    • The DevOps Handbook (https://amzn.asia/d/7ChR899) • https://medium.com/@bijit211987/the-evolution-of-x-as-code-in-2024-9e4e559635a2 • https://lesia-topol.medium.com/x-as-a-code-close-your-engineering-strategy-gaps-today-6ab9251b239d • https://www.hashicorp.com/resources/everything-as-code-the-future-of-ops-tools • アジャイル開発宣言(2001) • https://agilemanifesto.org/iso/ja/manifesto.html • Agile Infrastructure and Operations: How Infra-gile are You? • https://www.computer.org/csdl/proceedings-article/agile/2008/3321a202/12OmNCxbXIB • 50以上ものX as Code • https://www.jedi.be/blog/2022/02/23/trends-and-inventory-of-50-as-code-concepts • Everything as Code • https://www.bairesdev.com/blog/everything-as-code-approaches-software-development/ • https://learn.microsoft.com/ja-jp/compliance/assurance/assurance-microsoft-security-development-lifecycle • https://zenn.dev/yuriemori/articles/330d53c96d72e3 • GitOps • https://qiita.com/ozora/items/80c913b0790c88c24f67 • https://speakerdeck.com/michmuch/infrastructure-as-code-gitops • GitHub Copilot デザインパターン • https://patterns.hattori.dev/ References
  20. • 2001 • アジャイル開発宣言 • https://agilemanifesto.org/iso/en/manifesto.html • 2006 • Team

    Foundation Server(のちのAzure DevOps) リリース • https://ja.wikipedia.org/wiki/Team_Foundation_Server • Amazon Web Service リリース • https://ja.wikipedia.org/wiki/Amazon_Web_Services • Liquibase リリース • https://ja.wikipedia.org/wiki/Liquibase • 2008 • Patrick Debois、Agile Infrastructure and Operations発表 • https://ieeexplore.ieee.org/document/4599477 • Google App Engine(のちのGoogle Cloud)リリース • https://ja.wikipedia.org/wiki/Google_App_Engine • GitHubリリース • https://github.blog/news-insights/the-library/we-launched/ • 2009 • DevOps Days開催 • https://everythingdevops.dev/a-brief-history-of-devops-and-its-impact-on-software-development/#the-history-of-devops • Chefリリース • https://ja.wikipedia.org/wiki/Chef_%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2 %29 2000’s Agile/DevOps, クラウドの誕生
  21. • 2010 Windows Azureリリース • https://ja.wikipedia.org/wiki/Microsoft_Azure • 2011 • Jenkinsリリース

    • https://ja.wikipedia.org/wiki/Jenkins • 2012 • Ansibleリリース • https://ja.wikipedia.org/wiki/Ansible_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2) • 2013 • Team Foundation Servicesリリース • https://ja.wikipedia.org/wiki/Team_Foundation_Server • 2014 • Terraformリリース • https://ja.wikipedia.org/wiki/Terraform • 2016 • Google、Site Reliability Engineering出版 • https://amzn.asia/d/awvymOk 2010s’前半:DevOpsの台頭とX as Codeの発展
  22. 2010s’後半:Cloud Native • 2016 • Open Policy Agent リリース •

    https://github.com/open-policy-agent/opa/releases?page=17 • 2017 • Weavework、GitOpsを提唱 • https://devops-blog.virtualtech.jp/entry/20230228/1677552290 • 2018 • GitHub Actionsリリース • https://github.blog/news-insights/company-news/a-few-favorite-ships-2018/ • 2019 • GitHubユーザー40万+突破 • https://octoverse.github.com/2019/
  23. 2020s’~:生成AIの台頭 • 2021 • GitHub Copilot preview開始 • https://github.blog/news-insights/product-news/introducing-github-copilot-ai-pair-programmer/ •

    2022 • Azure Open AI Service発表 • https://news.microsoft.com/ja-jp/2023/01/23/230123-general-availability-of-azure-openai-service-expands-access-to-large- advanced-ai-models-with-added-enterprise-benefits/ • GitHub Copilot GA • https://github.blog/news-insights/product-news/github-copilot-is-generally-available-to-all-developers/ • ChatGPTリリース • https://metaversesouken.com/ai/chatgpt/from-when/#GPT-35ChatGPT202211 • 2023 • Azure Open AI Service、GA • https://news.microsoft.com/ja-jp/2023/01/23/230123-general-availability-of-azure-openai-service-expands-access-to-large- advanced-ai-models-with-added-enterprise-benefits/ • Copilot Workspace, Copilot Autofix発表 • https://github.blog/news-insights/product-news/universe-2023-copilot-transforms-github-into-the-ai-powered-developer- platform/