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

choosing-crossplane-to-reduce-developer-cogniti...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for hacomono Inc. hacomono Inc. PRO
May 14, 2026
8

 choosing-crossplane-to-reduce-developer-cognitive-load-ideals-vs-realities-of-self-service

クラウドネイティブ会議2026
day2 5/15 Track A 17:40~

Avatar for hacomono Inc.

hacomono Inc. PRO

May 14, 2026

More Decks by hacomono Inc.

Transcript

  1. 2 目次 1. 導入 2. Crossplane概要 3. hacomonoでの採用事例 4. 運用して感じた良さ

    5. 運用して感じた難しさ 6. 運用上の工夫 7. まとめ
  2. 4 自己紹介 有働 開(Kai Udo) • 社歴 ◦ 2020/4 ~

    2024/6 某製造業 ◦ 2024/7 ~ 株式会社hacomono 現在: 共通基盤グループ所属 • GitHub: u-kai, X: @u_kai1012 • CloudNative会議初参加です! よろしくお願いいたします!
  3. 5 本日話すこと・話さないこと 話すこと • Crossplaneでできることの概要 • 我々がCrossplaneを選定した理由 • 我々のCrossplane活用方法 •

    Crossplaneを活用して感じられたメリットや難しさ、工夫点など 話さないこと • Crossplaneの具体挙動 a. https://speakerdeck.com/hacomono/platform-engineering-with-crossplane-resource-abstraction-simplified b. https://techblog.hacomono.jp/entry/2025/12/11/000000 • Crossplane以外の具体的な技術選定について a. https://techblog.hacomono.jp/entry/2025/10/14/110000 b. https://findy-tools.io/products/aws-eks/208/840 • Crossplaneの網羅的な活用方法
  4. 18 Self-service 基盤の技術選定 K8s ✖ エコシステム ✖ GitOpsを採用 必要なmanifestをGitにpushするだけで OKな状態を目指した

    • 必要な機能を基盤に組み込みやすい • GitOpsによって開発者の認知負荷や運用工数を下げられる • あらゆるリソースを一貫したK8s APIで管理/提供できる
  5. 20 マネージドサービスの扱い • マネージドサービスはGitOpsで管理しづらいので別IaCを使う必要あり K8s✖GitOps マネージドサービス ✖IaC ✖ CDツール •

    manifest + 別IaCの学習/管理が必要になる • K8sリソースとマネージドサービスの連携が必要なケースは複雑... • それぞれ別々の仕組みでデプロイする必要がある
  6. 22 基盤独自の仕様や複雑さ • 開発者は基盤独自の設定を適切に設定する必要がある ◦ Account IDやデプロイするネットワークリソース IDなど ◦ 付与が必須なラベルや属性など

    基盤管理者 開発者 cost-center labelつけてください devはxxでprodはyy AccountIDで す この前お願いした環境変数です が、HOGE_HOGEに変更してほ しいです。 このリソースはdevに置きたい IDなんだっけ??💦 調整必須の細かい変更多いんだ よな〜💦 • 上記に変更があった場合は基盤管理者と開発者で調整が必要になる
  7. 24 K8s を使ってプラットフォームエンジニアリングを実現する際の考慮ポイント • K8s 自体の運用負荷 ◦ 専門チームが頑張るしかない!? • manifest

    を開発者に書いてもらう場合... ◦ 開発者に生じる manifest の認知負荷 ◦ ガバナンス担保が難しい ◦ 基盤変更の適用が難しい • 他のマネージドサービスと連携する場合... ◦ K8sとの連携が難しい ◦ マネージドサービスの設定/管理が大変 イケてる仕組みでも開発者の負荷が高いと意味がない... 認知負荷や工数が大きい。。。 なんとかせねば。。。
  8. 25 K8s を使ってプラットフォームエンジニアリングを実現する際の考慮ポイント • K8s 自体の運用負荷 ◦ 専門チームが頑張るしかない!? • manifest

    を開発者に書いてもらう場合... ◦ 開発者に生じる manifest の認知負荷 ◦ ガバナンス担保が難しい ◦ 基盤変更の適用が難しい • 他のマネージドサービスと連携する場合... ◦ K8sとの連携が難しい ◦ マネージドサービスの設定/管理が大変 イケてる仕組みでも開発者の負荷が高いと意味がない... Crossplaneを採用!
  9. 29 Self-service 基盤詳細 • インフラコードは基盤リソース/複数プロダクトをまとめたモノレポ • プロダクト毎のAWSリソース分離はXRの裏側で達成 • 開発者にはGitおよび限定されたAppProjectの権限のみ解放 •

    一般的なプロダクト開発のニーズに焦点を当ててXRを構築 • 許可されたリソースのみを利用可能にしてガバナンス担保 • 全AWSサービス/K8sリソースに対応しているわけではない • 基盤を利用できるケースとできないケースでガイドラインを引いている
  10. 36 K8s を使ってプラットフォームエンジニアリングを実現する際の考慮ポイント • K8s 自体の運用負荷 ◦ 専門チームが頑張るしかない!? • manifest

    を開発者に書いてもらう場合... ◦ 開発者に生じる manifest の認知負荷 ◦ ガバナンス担保が難しい ◦ 基盤変更の適用が難しい • 他のマネージドサービスと連携する場合... ◦ K8sとの連携が難しい ◦ マネージドサービスの設定/管理が大変 イケてる仕組みでも開発者の負荷が高いと意味がない... Crossplaneサイコーでは??
  11. 37 K8s を使ってプラットフォームエンジニアリングを実現する際の考慮ポイント • K8s 自体の運用負荷 ◦ 専門チームが頑張るしかない!? • manifest

    を開発者に書いてもらう場合... ◦ 開発者に生じる manifest の認知負荷 ◦ ガバナンス担保が難しい ◦ 基盤変更の適用が難しい • 他のマネージドサービスと連携する場合... ◦ K8sとの連携が難しい ◦ マネージドサービスの設定/管理が大変 イケてる仕組みでも開発者の負荷が高いと意味がない... もちろん難しさもあります。
  12. 40 他IaC ツールと比べ てエコシステムが 発展途上 に感じる • Terraformのplanのような機能がない • Testツールが最近出たばかり

    ◦ 商用版には前から存在する模様 (今後OSS版に追加されるかも!?※) • カスタムリソースの構成リソースをレンダリングする機能はあるが... ◦ 現在の構成との差分がわからない ◦ それが正しいか、稼働するかどうか 動かさないとわからない 運用管理には独自ツールの作成やマインドチェンジが必要 ※: https://github.com/crossplane/crossplane/issues/6810
  13. 41 Crossplaneによるカスタムリソース提供の落とし穴 ~実際に起きた設定ミス ~ カスタムリソース作成には十分な Crossplane/K8s/マネージドサービスの知識と検証 /テストが必要 失敗しても Runningし続けるカスタムリソース ...

    設定ミスによる AWSサービスとの差分で無限 Reconcile… 消したくても消えない永続層が無限 Reconcile... Crossplaneのバグで期待する更新がされない ... etc… 重い。。。
  14. 42 全てのユースケースを CrossplaneによるSelf-serviceで対応するのは大変 • Crossplaneで機能のサポートを追加→運用コストがかかる 多くをサポートする十分な運用体制の構築 OR サポート外の明示やサポート外に対する対策方針を固める などが必要 •

    能機能追加には追加する機能の十分な知識と運用していく覚悟が必要 • サポート外は開発者責務で別IaC管理→インフラ管理の一貫性が欠如 ◦ Terraform module配布の方が”オプションで組み合わせ可能 ”を達成しやすい...
  15. 43 Self-serviceや抽象化を用いても認知負荷を 0にするのは難しい 現実: 基盤に慣れるまではやり取りが必要だった 当初の想定 : ドキュメントや AIを駆使すればほぼ自走できるはず さらに認知負荷を減らすか基盤に慣れてもらうための施策が必要

    • 基盤固有のルールや思想と従来の開発手法との乖離がある • GitOpsの思想やツールの利用方法に慣れてない • 抽象化されているとはいえmanifestの扱いに慣れてない
  16. 46 Crossplaneを利用して Self-service提供する上での工夫 ~Crossplane完全理解 ~ コードやドキュメントリーディングによる Crossplane 完全理解を実施 • カスタムリソースを正確に提供するために!

    • 正確なトラブルシューティングやモニタリング設定をするために! • AI活用で精度の高いアウトプットを得るために! おすすめのドキュメントやコード • https://docs.crossplane.io/latest/whats-crossplane/ • internal/controller/apiextensions/definition/reconciler.go • internal/controller/apiextensions/composite/reconciler.go • internal/controller/apiextensions/composite/composition_functions.go
  17. 49 Crossplaneを利用して Self-service提供する上での工夫 ~その他~ • 独自ツールの開発によるカスタムリソース開発効率化 • K8s Eventのモニタリング強化によって設定ミスを気付ける状態へ •

    永続層はK8sリソースのみ削除するように設定し、無限Reconcileを防止 • 開発者の心理的ハードルを下げるためのSkills整備 • dev環境かつ担当範囲であればapproveなしでmerge可能にし、いち早く基盤 に慣れてもらうように などなど
  18. 54 今後の展望 • 基盤利用にいち早く慣れてもらう仕組みの整備 ◦ オンボーディングの実施 ◦ Getting Startedの整備 •

    対応ユースケースを広げて基盤利用をさらに加速させる • 利用者からのフィードバックをもとに継続的改善 • Crossplaneの新CLIの検証/評価 ◦ シナリオテストを薄くしたい... • 上記を達成するための運用体制強化