Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

AI 開発への未来へ備えよ!Platform Engineering と GitHub を使った開発

AI 開発への未来へ備えよ!Platform Engineering と GitHub を使った開発

「AI 開発への未来へ備えよ!Platform Engineering と GitHub を使った開発」
Platform Engineering Meetup #2 (2023/05/15) でお話しした内容です。

https://platformengineering.connpass.com/event/280339/

Yuki Hattori

May 15, 2023
Tweet

More Decks by Yuki Hattori

Other Decks in Technology

Transcript

  1. @yuhattor 1 AI と共創する未来へ備えよ! Platform Engineering と GitHub を使った開発 服部

    佑樹 @yuhattor Board Member, The InnerSource Commons Foundation Customer Success Architect, GitHub
  2. @yuhattor 本⽇のお話 • 他のチームで使⽤できる再利⽤可能なサービスおよびツールをどう提供するのか = GitHub でのコラボレーションをいかに成功させるのか。インナーソースのお話 (15m くらい) •

    開発環境の統⼀化に役⽴つ GitHub ツール = GitHub のツールでどうやって Platform Engineering を簡単にするのか (5m くらい) • Platform Engineering の実装をどうやって加速するのか = GitHub Copilot でどうやって「組織」を加速するのか (10m くらい) 2
  3. @yuhattor 作る対象 8 サービス ツール プラットフォーム ポータル 抽象化 • ソフトウェアテンプレート

    • ソフトウェア • ドキュメンテーション • IaCやAPIで作られる諸々の環境 • CI/CD 環境 • 監視、レポーティング…
  4. @yuhattor 管理対象 – ツールも含まれる 11 サービス ツール プラットフォーム ポータル 抽象化

    • ソフトウェアテンプレート • ソフトウェア • ドキュメンテーション • IaCやAPIで作られる諸々の環境 • CI/CD 環境 • 監視、レポーティング…
  5. @yuhattor インフラを作るだけだと⽚⼿落ちになる可能性がある 13 プラットフォーム エンジニアリングは、ソフトウェア エンジニアリング組織が⼀ 貫性を⾼め、⼀般的なタスクを⾼速化するためのワークフローとツールを設 計、構築、維持するプロセスです。 https://thenewstack.io/platform-engineering/platform-engineering-what-is-it-and-who-does-it/ Backstage

    ソフトウェアカタログは、エコシステム (サービス、Web サイト、ラ イブラリ、データ パイプラインなど) 内のすべてのソフトウェアの所有権とメタ データを追跡する集中システムです。 https://backstage.io/docs/features/software-catalog/
  6. @yuhattor プラットフォーム提供後の運⽤が重要 14 ユーザーは無限の欲求を持っている • 「テンプレートにないアプリを乗せたい…」 • 「個別要件としてプラットフォーム側にないものを使う必要がある…」 その結果⾒える将来 ⇨

    無限にテンプレートが増える ⇨ 顧客のカスタマイズ領域が増える ⇨ プラットフォームエンジニアリングが破綻する ⇨ プラットフォームエンジニアリングチームが、開発側に「強制」する ⇨ プラットフォームが使われない
  7. @yuhattor 開発者ポータルを管理する = ⾃律的な開発者エコシステムを作る • 顧客の有⽤なカスタマイズをプラットフォームに戻してもらう⽂化も同時に作り上げる • そうしないと⾃律的にプラットフォームが作られずプラットフォームチームが 「常にプラットフォームを提供する側」になる。 17

    開発者 ポータル 👀 ない! • 共有ライブラリ • GitHub Action • GitHub Actions テンプレート • アプリケーションテンプレート • Infrastructure as Code テンプレート 作成 / メンテナンス ソフトウェアカタログに登録 顧客 開発者
  8. @yuhattor インナーソース オープンソースの原則を社内のソフトウェア開発に適⽤すること 18 開発者 ポータル 👀 ない! • 共有ライブラリ

    • GitHub Action • GitHub Actions テンプレート • アプリケーションテンプレート • Infrastructure as Code テンプレート 作成 / メンテナンス ソフトウェアカタログに登録 顧客 開発者
  9. @yuhattor InnerSource の4つの原則 Openness - オープンなプロジェクト リポジトリのトップに置かれる README.md ファイルと CONTRIBUTING.md

    ファイルによって⼗分にドキュメント化され発⾒できるようになって いなければなりません。 Transparency - 透明性 プロジェクト/リポジトリとその⽅向性未解決の機能要件機能要件の進捗ホストチームの意思決事項を透明にします。 Prioritized Mentorship - 優先的なメンターシップ Trusted Committer によるホストチームからゲストチームへの優先的なメンターシップにより、ゲストチームの コントリビューター は、ホストチームの プロジェクト/リポジトリについて⼗分理解し、変更できるようにレベルアップされます。 Voluntary Code Contribution - ⾃発的なコードコントリビューション ゲストチームとホストのチームの両⽅からInnerSourceに参加することが、彼らの⾃由意志に基づいて⾏われること 23
  10. @yuhattor よくある誤解 GitHub を使ってるからInnerSourceはできてるでしょ? 24 InnerSourceの実現には GitHub が必要だという意⾒は、私達が毎⽇戦っている概念です。 GitHub は組織におけるコードの透明性を上げますが、それだけで組織の縦割り問題が解決するわけで

    はありません。 ほとんどの⼈々は、GitHub の活⽤よりもはるかに⼤変なことに気づいていません。 それは、社内におけるオープンソースの源を⾒つけ、コミュニティとし て育ててゆくことなのです。 コミュニティがソフトウェアを作るのであって他の何者でもないのですが、 ⼤企業にはそれに気づくための全体的なコミュニティに対する センスがないのです。 From “Understanding the Innersource Checklist” by Silona Bonewald, the founding member of the InnerSource Commons.
  11. @yuhattor プラクティス集 - InnerSource Patterns (⼀部) 25 ソフトウェアライフサイクル全体で参加型システムを作成し、デザインドキュメントを公開して早期のディスカッションを促進する。 30⽇の保証期間 社内兼業コントリビューター

    インナーソースライセンス インナーソースベースドキュメント インナーソースポータル インナーソースデザインドキュメント 基本原則ガイダンスの⽂書化 トラステッドコミッター コントリビューターが30⽇間のサポート付きでバグ修正や機能提案をすることで、両チームの信頼を向上させる。 ボランティアではなく、組織内で正式な契約と合意をすることによって、InnerSourceへの貢献を促す。 組織内でソースコードを共有するための法的枠組みを提供し、新たなコラボレーションオプションを提供する。 InnerSourceプロジェクト情報をインデックス化し、コントリビューターが興味を持つプロジェクトを発⾒しやすくする。 継続的なコントリビューターの仕事を認識し、報酬を与える⽅法を定義する 標準的なプロジェクトドキュメントを提供し、新規コントリビューターに⾃⼰サービスプロセスを提供する。 InnerSourceの主要原則を⽂書化し、広く公開する。 パターン名 パターンの概要
  12. ポートフォワード • Codespaces上に⽴てたサーバへのア クセス • 利⽤例) 動作確認するためにローカルのブラウ ザからCodespaces上のサーバにアク セスする •

    複雑なコンテナアプリも起動可能 https://docs.github.com/ja/codespaces/developing-in-codespaces/forwarding- ports-in-your-codespace
  13. @yuhattor Container Modes No Container Mode Use the runner container

    to run your workflows Docker in Docker Mode Creates a runner pod with a dind sidecar pod Kubernetes Mode Creates a runner pod and launches additional pod to execute job steps If you specify a container image your job will fail Allows both container and non- container workflows Requires privileged mode - A potential security risk By default if you do NOT specify a container image your job will fail (Set env variable to allow jobs on runner pod) Requires persistent volumes to pass work from runner to worker pod
  14. @yuhattor GitHub Copilot の活躍領域の例 37 ⾃然⾔語 ロー コンテキスト コメント to

    Code (テンプレーティングを含む) ドキュメント to Code (設計ドキュメント) コメント to Code (リファクタリング / 微調整) コーディング ⽇々のコーディングの補完 専⾨技術/ハイコンテキストな領域に おけるコーディング⽀援 調査 / デバッグ / 最適化 デバッグ / リファクタリング ハイ コンテキスト
  15. @yuhattor ⽇々のエンジニアリング効率化で⼤幅な時間節約は可能 コメント ot Code /⽇々のコーディングの補完 / 繰り返し / 定型的な作業

    などのコーディング業務および、 それらの作業の中での ドキュメントリーディング / 検索の時間を短縮可能 コンテキストがすべて ビジネスやプロジェクト・設計に関するコンテキスト: 背後にある事柄や⼈間関係・規制の把握 技術的なコンテキスト: フレームワークやライブラリ、現在のファイル内の変数、関連ファイルやスコープなどの要因 経験や知識が豊富な開発者はさらにブーストされる AI からの提案を評価する能⼒、AI に⽂脈にあった指令を出せる開発者は有利 38 GitHub Copilot は魔法のようだが、スキルも必要
  16. @yuhattor • 裏で .csv を開いているだけで⼀瞬でコード化 • ビジネスサイドも PowerPoint や Excel

    ではなく Markdown や csv で保持する必要性 40 個⼈の開発が変わる ⇨ 組織の開発も変わらなければいけない 精度の⾼い提案のためには、AI が読めるファイルである必要がある。 参考DB 厚⽣労働省 「シームレスな健康情報活⽤基盤実証事業」 地域連携システム https://www.mhlw.go.jp/seisakunitsuite/bunya/kenkou_iryou/iryou/johoka/johokatsuyou/dl/tenpu03_06.pdf
  17. @yuhattor 41 組織の開発も変わらなければいけない GitHub Copilot X = AI がエディタを⾶び出す =

    開発プロセスにAIが⼊る GitHub Copilot for PR GitHub Copilot for Docs GitHub Copilot for PR
  18. @yuhattor • 開発者個⼈の環境に AI が介在する • 開発プロセスの中に、AI が介在する • AI

    が読める内容を、AI がアクセスできる場所に格納する必要性 42 Copilot との協業はエンジニアだけにとどまらない チームとしてドキュメントドリブンな開発ができる組織が有利 Markdown, CSV などでコードと⼀緒に格納可能であると有利
  19. @yuhattor プラットフォームエンジニアリングに GitHub のツールを活⽤しよう GitHub Codespaces, GitHub ARC は最適です。 プラットフォームを⾃律的に繁栄させるためにはインナーソースが鍵

    ⼈を考慮した⽂化を育み、社内でオープンソースの源を⾒つけ、コミュニティとして育てよう AI と協業できるような開発スタイルを あなたの企業の競争⼒の源泉をコードに埋め込み、シナジーを⽣み出し、エコシステムを強化しよう 43 Key Takeaways