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

Developer_Hubが解き放つセルフサービス化の可能性 / Developer Hub ...

Shintaro Kitamura
March 28, 2024
910

Developer_Hubが解き放つセルフサービス化の可能性 / Developer Hub Golden Path

OpenShift.Run - 究極で最強のテックカンファレンス 2024
https://openshift.connpass.com/event/310201/

Shintaro Kitamura

March 28, 2024
Tweet

More Decks by Shintaro Kitamura

Transcript

  1. 1 変革の先駆け Cloud Native 開発・運用のたイント Shintaro Kitamura Specialist Solution Architect

    Red Hat K.K. @IT Cloud Native Week 2024 winter Developer Hub (Backstage) が解き放つ セルフサービス化の可能性 Shintaro Kitamura Specialist Solution Architect Red Hat K.K. OpenShit.Run
  2. 北村 慎太郎 Red Hat - Specialist Solution Architect - OpenShiftを中心としたプリセールス

    得意領域: - SRE - Automation - CICD - Platform Engineering (←New!!) #Kubernetes #OpenShift #AWS #GCP #Terraform
  3. Internal Developer Platform オンボーディング Internal Developer Platform (IDP) ドキュメント オーケストレーター

    (K8s) Git CICD ストレージ Observability コンテナ テスト セキュリティ コンプライアンス レジストリ Developer Centric ポータル テンプレート 開発者の幸せを追求する開発者向けプラットフォーム 
 開発者体験を向上するためのあらゆるツー ルを提供
 このPlatform上でアプリを効率的に開発・ 運用するための環境を提供 
 
 

  4. Internal Developer Platform オンボーディング Internal Developer Platform (IDP) ドキュメント オーケストレーター

    (K8s) Git CICD ストレージ Observability コンテナ テスト セキュリティ コンプライアンス レジストリ Developer Centric ポータル テンプレート 開発者の幸せを追求する開発者向けプラットフォーム 
 Platform Engineering 成功のカギ いかに開発者にPlatformが持つ機能を うまく使ってもらえるか? いかに会社のガイドラインと開発効率性を両立で きるか? いかに開発者の認知負荷を軽減できるか?
  5. Backstage Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組

    織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 IDPのアクセスポイントとしてのポータル機能と プラットフォームの機能を活用するためのユーザーインターフェースを提供
  6. Backstage Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組

    織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 Platformの様々なステータスと ツールへのアクセスポイントを提供
  7. Backstage Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組

    織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 Golden Pathの提供を強力に支援する プロビジョニング機能
  8. Backstage Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、 カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組

    織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ポータルの可視化機能を強化 テンプレート実行機能を強化 Platform Services 他サービスとの連携を強化 Backstage全体の機能を強化する 豊富※な拡張機能 ※https://backstage.io/plugins/
  9. Red Hat Developer Hub 開発チームのコラボレーションを加速する Internal Developer Portal v 1.1

    Release!! Backstageをベースとした開発者ポー タルがOpenShiftで利用可能に 3月中旬 v 1.1 GA!!!! 🎉EKS/AKSサポート開始 🎉Operator提供開始 🎉RBACをUI上で設定可能に 🎉GitLab用Actionが強化 🎉その他UI改善
  10. Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、

    カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ツール・プラグイン全体のエンタープライズサポートを提供
  11. Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、

    カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ※https://backstage.io/plugins/ UIの継続的な改善を実施
  12. Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、

    カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ※https://backstage.io/plugins/ 独自のプラグインと動的な プラグインインストール機能を提供
  13. Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、

    カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ※https://backstage.io/plugins/ 定義済み、サポート付きの Golden Pathを提供
  14. Red Hat Developer Hubの強化ポイント Internal Developer Portal 開発チーム プラグインエコシステム 機能を拡張し、

    カスタマイズを提供する ソフトウェアテンプレート 新しいプロジェクトを迅速に立ち上げ、組 織のベストプラクティスに従ってツールを標 準化 技術ドキュメント 「Decument as Code」アプローチを 使用して、技術ドキュメントを簡単に 作成、保守、検索 検索 Backstage内の 適切な情報を検索 ソフトウェアカタログ 組織内のすべてのソフトウェアのア プリケーションの所有権と メタデータを追跡 ※https://backstage.io/plugins/ 定義済み、サポート付きの Golden Pathを提供 ★本日の主役★
  15. Step #1 Step #2 • • Step #N + 既存のプラクティスと会社の

    ガイドラインを使用して最適な 構成(Golden Path)を作成す る 新しいプロジェクトを素早く立ち上げ、組織のベストプラクティスでツールを標準化 Automatically starts GIT ソフトウェアテンプレート テンプレートの実行に関連 する必要なデータを入力す る 開発チームはテンプレート実行に よって払い出された Gitリポジトリを使って開発を開始 組織のガイドラインに従って自動 的に作成され、プロビジョニングさ れる 開発チームの ベストプラクティス フォームの入力 実際に動作する環境も デプロイ 新しいGitリポジトリを自 動的に作成
  16. ソフトウェアテンプレートの仕組み apiVersion: scaffolder.backstage.io/v1beta3 kind: Template metadata: name: sample-template title: deploy

    sample app tags: - recommended spec: parameters: - title: Provide information required: - app_name properties: app_name: title: Appliction Name default: sample-blog type: string cluster_name: title: EKS Cluster Name template.yaml PFE Team push template入力画面 read Dev Team
  17. ソフトウェアテンプレートの仕組み apiVersion: scaffolder.backstage.io/v1beta3 kind: Template metadata: name: sample-template title: deploy

    sample app tags: - recommended spec: parameters: … steps: - id: get-app-code name: Get the Application Source Code action: fetch:plain input: url: ./app-skeleton targetPath: ./tenant-app - id: get-catalog-info name: Generating the Catalog Info … template.yaml action1 execute action2 execute ・・・ Dev Team read Template実行
  18. テンプレート実行の流れ ① fetch:template   Sketelonリポジトリをローカルにコピーし、ユーザーが入力した値を代入する Action skeleton repo … … …

    key1: “${{values.app-name}}” key2: “${{values.k8s-url}}” Dev Team Backstage local … … … key1: “app-1” key2: “k8s.local.com” app-1 app-name k8s.local.com k8s-url ※変数代入など特別な処理をしたくない場合は fetch: plain というactionを使う
  19. テンプレート実行の流れ ② publish:github / publish:gitlab / publish:azure / publish:bitbucket   Backstage

    localにあるファイルをGit にPushするAction Backstage local … … … key1: “app-1” key2: “k8s.local.com” app-1 repo … … … key1: “app-1” key2: “k8s.local.com” ※リポジトリは新規に作成される
  20. テンプレート実行の流れ ④ catalog:register   Git上にあるBackstage用のmanifestファイルを読み込み、 Backstage上に反映するAction app-1 repo apiVersion: backstage.io/v1alpha1 kind:

    Component metadata: name: sample-blog-021 spec: type: app system: "system:default/test-system" lifecycle: production … key1: “app-1” key2: “k8s.local.com” read Component管理画面
  21. templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) Deploy App

    sample-app-skeleton app-skeleton manifest-skeleton terraform fetch:template push:github
  22. templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) Deploy App

    sample-app-skeleton app-skeleton manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC
  23. templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton

    manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App argocd:create-resource
  24. templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton

    manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest fetch:template push:github
  25. templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton

    manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest RDS terraform apply ECR
  26. templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton

    manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest RDS terraform apply ECR build push images
  27. templates eks-skeleton デモ概要 Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton

    manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest RDS terraform apply ECR build push images frontend backend argocd:create-resource
  28. デモ概要 templates eks-skeleton Create EKS OpenShift Cluster (ROSA) sample-app-skeleton app-skeleton

    manifest-skeleton terraform EKS Cluster terraform apply argocd setting EKS VPC ArgoCD Applications OpenShift Cluster (ROSA) terraform destroy 6 hours have passed Deploy App app code terraform k8s manifest RDS terraform apply ECR build push images frontend backend ここが超頑張っている
  29. テンプレートについて伝えたいこと • BackstageのTemplateはセルフサービス化の補助であり、自動化の補助ではない。 ◦ 自動化はIaC、CIパイプライン、GitOpsが頑張る世界。 ◦ Pluginの活用でActionの幅は広げられるが、基本の考えは変わらない(はず)。 • 現実的な範囲でのテンプレート化を目指す。 ◦

    全部入りを頑張りすぎると、ZTP専用のスクリプトが量産されて却って開発者が使いづらいソースコードになりか ねない。 ◦ 払い出されたGitリポジトリは開発者が今後使っていくため、”手離れのいい自動化”を目指すこと。 • 実現すべきは開発者に対するベストプラクティスの提供 ◦ 単なるセルフサービス機能の集合ではなく、開発者を導くためのTemplate(Golden Path)であるべき ◦ Platform Engineeringの本来の目的に立ち返って、本当に開発者に必要なTemplateを作成しよう。
  30. Golden Path公開までの道のり • 自分たちの開発環境の状態、制約、ノウハウの醸成具合を正しく把握する • 現在の開発環境にGitOps、CI/CD、IaC、(Kubernetes) を導入する • 複数開発プロジェクトに対するプラットフォーム支援から、”共通的なノウハウ”を抽出する —---

    このあたりからBackstageの導入を検討する —-- • 共通的なノウハウをGolden Pathとして定義し、Skeletonリポジトリを作成する • BackstageにTemplateとして公開するにあたり、開発者に入力してもらうパラメータを定義する • Backstageのtemplate.yamlを作成する • template.yamlに”testing”などのタグを付与し、テストを実施する • 期待した動作が確認できたら、”production”タグに切り替え、開発者に公開する
  31. Tips Developer Hubと相性のいいツールは? ArgoCD ・CDにおいてはほぼ一強。 PluginもRed Hat がサポートを提供しているため利用しやすい (現在はRoadie社製のPluginを採用) ・argocd:create-resourcesでapplicationのデプロイを実行できるが、細かい

    Optionが設定できないため、 Gitリポジト リ配下のArgoCD applicationリソースをデプロイすることに特化した使い方 (App Of Apps)をおすすめ ・今後はRed HatもArgoCD pluginの開発を進めていき、将来的には置き換えることになるかも? Ansible / Terraform ・クラウドサービスのプロビジョニングに利用 ・現時点ではRed HatのPluginにAnsible / Terraform 用のActionが存在しないため、基本は CIツール上で実行するこ とになる ・ソフトウェアカタログの観点では Ansible Automation PlatformのPluginを提供しているため、 AAP利用者はAnsibleの 採用をおすすめ
  32. Tips Developer Hubと相性のいいツールは? GitHub • ソフトウェアカタログに対する機能が非常に充実しており、かなり使い勝手が良い • Actionも豊富で、Pull Requestの発行やWorkflowのDispatchもできるので、Developer Hubとの相性はかなり良い

    • Pipelineをひとつのyamlファイルで管理できるため、可読性が高い& ChatGPTとの相性が最高 GitLab • CIツールとしてはGitHubと同じくらい相性が良い • Developer Hub v1.1から大幅にActionが増え、GitHubと遜色なくなった • 日本のエンタープライズ界隈では GitLabユーザーが多いため、 Developer Hubの導入障壁が下がってきた印象 Tekton • GitHub / GitLabと比べて少々扱いづらい印象。そもそも Tektonが難しい説もあり • 基本的にArgoCDを使ってPipelineやTask、EventTrigger系をデプロイして利用する • GitのPushを契機に最初のPipelineを実行できるGitHub/GitLabとは違い、Gitリポジトリの作成後に Pipelineがデプロイされるため、 初回の実行方法に工夫が必要 • 一部はGitHub ActionsやGitLab Runnerで実行した方がいい処理もあるため、現在すでに Tektonで問題なくPipelineの 構築・運用ができているユーザー以外はまずは GitHub / GitLabでGolden Pathの作成に着手することをおすすめ • pipelinerunの実行など、もっとActionが増えると使いやすくなると思う(頑張れ Red Hat !!)
  33. Management Cluster Tips 中央集権的なポータルにする?開発チームごとに払い出す? Developer Hub 開発用OpenShift 開発用OpenShift 開発チームA 開発チームB

    開発用OpenShift 開発用OpenShift 開発チームA 開発チームB Developer Hub Developer Hub Backstage Resources Backstage Resources ・開発チームごとに細かいチューニングが可能 ・気軽に設定変更が可能 ・同じBackstage Resource(Golden Pathなど)を参照する こ とでガバナンスも取れる ・リソースの分割損が発生 ・他のチームのノウハウを参照できない ・効率的なノウハウの展開が可能 ・リソースの効率化 ・クラスターや開発ツールの連携設定の度にRHDHの  再起動が必要 ・権限管理が大変 個人的には こっちをおすすめ
  34. token: hoge … Tips テンプレート実行時における Secretの取扱いについて token: hoge action: publish:github

    secrets: - token: ${{parameters.token}} … リポジトリの Secretsに登録する action:fetch:template kind: Secret data: token : ${{values.token}} ソースコードからは 参照しない GitHub Repository Repository Secrets workflow.yml AWS Secrets Manager ex-secret-token.yaml kind: externalsecret … externalSecret Secret token: hoge OpenShift ArgoCD 外部のSecretストアにSecretを登録する Workflowを作成・実行 aws secretsmanager create-secret --name token --secret-string ${{ secrets.token }}
  35. さいごに〜Backstageについて思うこと〜 • 初期のKubernetesのようなフインキを感じる ◦ デフォルトのままだと手が届かない範囲が結構ある ◦ 独自プラグインで俺TUEEEEする感じが、K8s黎明期の独自CRDで俺TUEEEEする感じと似ている • プラガブルかつエディタブルなので、独自の路線を貫きやすい柔軟なプロダクトである ◦

    ポータルという特性も相まって、Platform as Productの観点で考えると開発者からの要望を 拾いやすく、反映しやすい領域でもある ◦ 一方で、あくまで開発者の体験を向上させるのはPortalの品質ではなく、Platformとしての品質であるため、優先 度をつけて改修していくことが重要 • ネットに情報が無さすぎる。。。もっとみんなBackstageで遊ぼう。
  36. Update confidential designator here Version number here V00000 linkedin.com/company/red-hat youtube.com/user/RedHatVideos

    facebook.com/redhatinc twitter.com/RedHat Red Hat is the world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you
  37. Developer Experience Platform Engineering Developer Experience Business Value (TCO /

    ROI) Tech Platforms テクノロジーをビジネス価値の実現につなげる 
 People and Process 人材、プロセス、技術の習熟度向上による 
 ビジネス価値の創出 
 開発者の生産性を向上させ、 
 ビジネス価値を創出するためのスタート地点 
 プロジェクトで得た経験から開発のプラクティスを Golden Pathとして定義し、展開する 
 開発者のイノベーション加速を支援するために 
 Platformの継続的な改善を実施 
 Kubernetes/OpenShiftの各種機能を理解し、 
 単一クラスターの運用業務を定義 
 ビジネス価値の実現に向けて”単なる基盤”からの進化を目指す