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

組織規模に応じたPlatform Engineeringの実践

組織規模に応じたPlatform Engineeringの実践

Platform Engineering Kaigi 2025 #PEK2025

Makoto Shiga
株式会社hacomono
Senior Platform Engineer

株式会社hacomono所属のSenior Platform Engineer。
入社時から基盤チームとして様々な角度からプロダクトチームへの基盤提供やEnabling活動に従事。

https://www.cnia.io/pek2025/sessions/90bded05-896a-4725-ba1e-903e39a22c68/

Avatar for hacomono Inc.

hacomono Inc. PRO

September 18, 2025

More Decks by hacomono Inc.

Other Decks in Technology

Transcript

  1. 5 自己紹介 • 志賀 誠(まこたす) • 株式会社hacomono ◦ 2022/8 ~

    ◦ プラットフォーム部所属 • x: Maco_Tasu • GitHub: MacoTasu
  2. 7 株式会社 hacomono / プラットフォーム部について • プラットフォーム部 ◦ hacomonoインフラグループ(4名) ▪

    hacomono本体のインフラの開発運用 ◦ マルチプロダクト基盤グループ(2名) ▪ マルチプロダクト基盤の開発運用
  3. 8 本セッションの内容 • 内容 ◦ 弊社のプラットフォームチームの取り組み / 成果(成功 / 失敗)

    ◦ 技術的な話は少なめです • 対象者 ◦ これからPlatform Engineeringを実践しようとしている組織 ◦ Kubernetesの採用を検討している組織
  4. 12 Platform Engineeringとは ~ 4つのチームと 3つのインタラクション ~ チーム名 役割 ストリームアラインド

    組織の主要なビジネス領域や提供価値(ワークストリーム)に沿って編 成され、顧客に直接的な価値を届けることに責任を持つ プラットフォーム 自律的にサービスを開発・運用できるようにするための内部プラット フォームを提供する イネーブリング 特定の専門知識を持ち、ストリームアラインドチームが新しい技術やス キルを習得するのを支援をする コンプリケイテッド サブシステム 専門的な知識が必要なサブシステムを専門に担当する
  5. 13 Platform Engineeringとは ~ 4つのチームと 3つのインタラクション ~ 名称 内容 コラボレーション

    両チームが密接に連携し、特定の課題解決や新しい機能開発のために 協力して作業する ファシリテーション ストリームアラインドチームに対して、特定の技術やプラットフォームの 利用方法について指導や支援を行う X-as-a-Service ストリームアラインドチームがセルフサービスで利用できるプラットフォー ム(ツール、API、ドキュメントなど)を「製品」として提供する
  6. 17 背景と当時の状況 • 人数増加 x モノリス • コミュニケーションコストの増加 ◦ →

    誰が何を知っているのか / 正しい仕様が把握できない ◦ → 意思決定までに時間がかかる etc… • CI/CDの長時間化 ◦ → 顧客へ価値を届ける時間が増える ◦ → 開発速度の低下へ直結する etc.. • 成長機会の損失 ◦ → 新規技術を入れにくい
  7. 18 背景と当時の状況 • モノリス x 人数増加 • コミュニケーションコストの増加 ◦ →

    誰が何を知っているのか / 正しい仕様が把握できない ◦ → 意思決定までに時間がかかる etc… • CI/CDの長時間化 ◦ → 顧客へ価値を届ける時間が増える ◦ → 開発速度の低下へ直結する etc.. • 成長機会の損失 ◦ → モノリス側を気にするため新規技術を入れにくい つらい
  8. 20 背景と当時の状況 • Platform Engineering ◦ セルフサービス、IDPはあくまで実現手段の1つ ◦ 目的 =

    開発者の認知負荷を下げること • 当時の課題への温度感 ◦ 組織成長の課題に対して、アサインは自分のみ ◦ 課題に対してマイクロサービス化どうだろうか...? みたいなオーダー
  9. 21 マイクロサービス or モジュラーモノリス 観点 マイクロサービス モジュラーモノリス 🚀 開発速度 チームが独立して動けるため、大規模開発では高速。

    ただし初期の環境構築は遅い。 初期開発は非常に高速。しかし、コードベースが大きくなると速度が 低下する可能性がある。 🔧 複雑性 分散システム特有の問題(通信、データ整合性)を考慮する必要 がある。 シンプル。単一のアプリケーション内で完結するため、管理しやすい。 💪 スケーラビリティ 特定のサービスだけを独立してスケール可能で、リソース効率が 良い。 アプリケーション全体でのスケーリングとなり、リソース効率は劣る。 🧩 柔軟性 高い。サービスごとに最適な技術(言語、 DB)を選択できる。 低い。アプリケーション全体で技術スタックが統一されるため、制約が 多い。 🛡 障害耐性 高い。一部のサービスの障害が、システム全体に波及しにくい。 低い。一部のモジュールの障害が、アプリケーション全体の停止につ ながる可能性がある。 💰 コスト 運用・管理コスト(インフラ、監視ツールなど)が高い。 開発・運用コストは低い。 👥 チーム体制 大規模・分散チームに適している。チームの自律性を促進する (コンウェイの法則)。 小〜中規模チームに適している。密なコミュニケーションが前提とな る。 🔄 デプロイ サービスごとに独立して迅速にデプロイ可能。 CI/CDが複雑にな る。 アプリケーション全体を一度にデプロイする必要がある。デプロイの 頻度は低くなりがち。 🗃 データ管理 サービスごとにDBが分散し、データの一貫性を保つのが難しい (結果整合性)。 単一のDBでトランザクション管理が容易。データの一貫性を保ちや すい。 📊 テスト サービスをまたがる統合テストが複雑で難しい。 単一アプリケーション内のテストなので比較的容易。 🛣 将来の移行 サービス間の境界を後から変更するのは困難。 モジュールをマイクロサービスとして切り出すための良い出発点とな る。 generated by Gemini
  10. 22 マイクロサービス or モジュラーモノリス 観点 マイクロサービス モジュラーモノリス 🚀 開発速度 チームが独立して動けるため、大規模開発では高速。

    ただし初期の環境構築は遅い。 初期開発は非常に高速。しかし、コードベースが大きくなると速度が 低下する可能性がある。 🔧 複雑性 分散システム特有の問題(通信、データ整合性)を考慮する必要 がある。 シンプル。単一のアプリケーション内で完結するため、管理しやす い。 💰 コスト 運用・管理コスト(インフラ、監視ツールなど)が高い。 開発・運用コストは低い。 👥 チーム体制 大規模・分散チームに適している。チームの自律性を促進する(コ ンウェイの法則)。 小〜中規模チームに適している。密なコミュニケーションが前提とな る。 🔄 デプロイ サービスごとに独立して迅速にデプロイ可能。 CI/CDが複雑にな る。 アプリケーション全体を一度にデプロイする必要がある。デプロイの 頻度は低くなりがち。 📊 テスト サービスをまたがる統合テストが複雑で難しい。 単一アプリケーション内のテストなので比較的容易。 generated by Gemini
  11. 23 マイクロサービス or モジュラーモノリス 観点 マイクロサービス モジュラーモノリス 🔧 複雑性 分散システム特有の問題(通信、データ整合

    性)を考慮する必要がある。 シンプル。単一のアプリケーション内で完結す るため、管理しやすい。 🗃 データ管理 サービスごとにDBが分散し、データの一貫性 を保つのが難しい(結果整合性)。 単一のDBでトランザクション管理が容易。 データの一貫性を保ちやすい。 🛣 将来の移行 サービス間の境界を後から変更するのは困 難。 モジュールをマイクロサービスとして切り出す ための良い出発点となる。 generated by Gemini
  12. 25 マイクロサービス or モジュラーモノリス • 組織・技術の成熟度 ◦ 基盤チーム(プラットフォーム) ▪ マイクロサービス

    /モジュラーモノリスの経験 ◦ プロダクトチーム(ストリームアラインド) ▪ 分散システムの経験 ◦ 共通事項 ▪ リソース観点 • 事業の方向の確実性 ◦ どんなドメインを扱っていくか可視化されている ◦ 既に確立したコアとなるドメインがある
  13. 26 マイクロサービス or モジュラーモノリス 名称 状態 モジュラーモノリス (出発点) 実現する技術/リソースも不安がある。 ドメインも枯れ切っていない。

    => 技術もモジュールの切り方も不安定 筋の良いモジュラーモノリス 技術/リソースはあるが、ドメインがまだ不安定 => 技術で論理的分離ができるが、モジュールの粒度が不安定 堅実なモジュラーモノリス ドメインは枯れ切っているが、技術 /リソースが不安定 => モジュールの粒度は適切だが、モジュール /マイクロサービスの 実現に不安が残る マイクロサービス 技術/リソースも確かで、ドメインも見えている => 最短ルートでマイクロサービス化へ
  14. 28 モジュラーモノリスを実現する技術 • モジュラーモノリスで始めるチームファーストの実現 hacomono application modules module A module

    B module .. team A team B team … • 境界分離 ◦ packwerk(コード分離) ◦ protobuf(API定義) ◦ arproxy(table分離) ◦ github codeowner(責任分離) • 詳細は こちら
  15. 29 ~ モジュラーモノリス ~ • インタラクションモード変遷 序盤 (モジュール1個目 ) 中盤

    (モジュール 2 ~ 4個) 現在 (モジュール20個) ストリームア ラインド プラットフォー ム 兼 ストリームアラ インド プラットフォー ム ストリームア ラインド プラットフォー ム セルフコラボレーション? サポート機能の開発 コラボレーション サポート機能の不足している部分の 開発およびドキュメント化 ファシリテーション ドキュメントの案内 サポート機能利用方法の説明
  16. 30 ~ モジュラーモノリス ~ • インタラクションモード変遷 序盤 (モジュール1個目 ) 中盤

    (モジュール 2 ~ 4個) 現在 (モジュール20個) ストリームア ラインド プラットフォー ム 兼 ストリームアラ インド プラットフォー ム ストリームア ラインド プラットフォー ム セルフコラボレーション? コラボレーション ファシリテーション 導入から2年...
  17. 31 結果  • 認知負荷軽減ができたケース ◦ 新規機能系のモジュールは好感触なフィードバック ▪ 特に基盤系(メール、webhookなど) ◦ AI

    Coding活用でもコンテキストが絞られるため、少ないtokenで効果 的に扱える • 要因 ◦ 既存機能に依存しないものが多い ◦ 基盤系は機能が明確なため、I/Fを定義しやすい
  18. 32 結果 • 認知負荷軽減ができなかったケース ◦ 既存機能に紐づく機能のモジュール化 • 要因 ◦ 特に既存コア機能のモジュール化が進んでいなかったため、本体側

    とのやり取りで無理がある場合がある ◦ ドメインが固まっていないため切り出し単位が難しい • 成果 ◦ Fail Fastで切り出したドメインの見直しが進むきっかけになった ▪ モジュラーモノリスなので切り直しも容易
  19. 33 結果 • 反省 ◦ 開発基盤チームのDevOps意識の不足 ▪ 継続的な会話が足りてなかった • 改善

    ◦ #pj_modular_monolith ▪ 目的意識の共有 / 当事者化 ▪ リアルタイムコミュニケーション
  20. 34

  21. 40 背景 • 残っている課題 ◦ プロダクト毎のCI/CD基盤構築、運用保守 ▪ プロダクト数に合わせて人数も増えたら困らないけど...😢 ◦ ファシリテーションコストの増加

    ▪ ドキュメントが整備されていても、新規にプラットフォームサービス を使うチームには一定発生するコスト これはセルフサービス化( k8s)に取り組む機運か ...? 🤔
  22. 42 EKS(k8s) • k8sは学習コストがかかる? ◦ No 󰻶 ▪ エコシステムが多いための学習コストが高い •

    Argo CD, Istio, Crossplane etc… • k8sは運用が大変? ◦ 多分No 󰻶 ▪ EKS Auto Mode (2024/12)登場。 色々マネージド化された • control plane(etcdなど) • リソース(Karpenter, load balancing)
  23. 43 k8s導入の判断 ✏ 課題 ⏱ 2年の自信 🚩 タイミング プロダクト数増加による基盤コ スト増

    モジュラーモノリスを経て、マイ クロサービス化が見えてきた ECS/Serverless運用経験から 失敗しても戻れる自信 AI発展によるガードレールの重 要性 EKS AutoModeの誕生 チーム拡大による余力 k8sを用いたセルフサービス化の実現に取り組み始めた 💪
  24. 44 k8s基盤での取り組みについて • 🕸 Istioを用いたservice meshの実現 ◦ プロダクト毎にnamespace / virtual

    serviceを付与 • 🐙 Argo CDによるGitOpsの実現 ◦ CI/CDの仕組み及び利用体験の統一 • ✈ Crossplane活用 ◦ プロダクトに紐づくAWSリソース管理も移譲できるようにする • 📕 IDPとしてのBackstage ◦ 検討中
  25. 45 k8s基盤での取り組みについて • 🕸 Istioを用いたservice meshの実現 ◦ プロダクト毎にnamespace / virtual

    serviceを付与 • 🐙 Argo CDによるGitOpsの実現 ◦ CI/CDの仕組みの及び利用体験の統一 • ✈ Crossplane活用 ◦ プロダクトに紐づくAWSリソース管理も移譲できるようにする • 📕 IDPとしてのBackstage ◦ 検討中 挑戦中🔥
  26. 46