ソフトウェア エンジニアリングの主な目標の一つは、問題を解決して価値を創造することですが、現代の開発における日々の摩擦の中で、その焦点が見失われてしまうことがあります。社内開発者プラットフォーム(IDP)は、開発者がソフトウェア開発に集中できるように負担を軽減することを目的として設計されています。IDP の主な目的は、ソフトウェアをより迅速にリリースすることだけではなく、アプリケーションの構築とデプロイのために、安全で効率的かつ十分なサポートが提供されるテンプレートや自動化(多くの場合「ゴールデンパス」と呼ばれるもの)を整備することで、開発者の精神的負担を軽減することです。
社内開発者プラットフォームは、専任のプラットフォーム チームによって構築および維持される厳選されたテクノロジーとツールを統合したものです。このスタックには、オープンソース プロジェクトを利用したコンテナ オーケストレーション、Infrastructure as Code(IaC)ツール、CI / CD パイプラインのソリューションが含まれることがよくあります。
社内開発者プラットフォーム(IDP)は、開発者をユーザーとするプロダクトとして捉える必要があります。ユーザーのユースケースに対応し、フィードバックを収集し、反復処理を通じてプラットフォームを継続的に改良することが重要です。IDP は、これらのツールを接続するレイヤであり、その複雑さを抽象化することで、シンプルかつセルフサービス型のモデルを通じて開発者がタスクを実行できるようにします。その目的は、正しい方法を簡単に行うことです。これにより、開発者は自信を持って自律的に構築とリリースを行えるようになります。
認知負荷とは、人間のワーキング メモリで使用される精神的努力の総量を指します。開発者が持つ精神的な帯域幅と考えてください。この帯域幅がコーディング以外のタスクで消費されると、複雑な問題解決に集中する能力が低下します。
開発者は、簡単な変更をデプロイするだけでも、数十ものさまざまなツール、ダッシュボード、構成ファイルを切り替えなければならないことがよくあります。コンテキストを切り替えるたびに、開発者の脳は新しい情報を読み込む必要があり、精神的な負担がかかります。ツールやプロセスを絶えず切り替えるこの作業は認知負荷を増大させ、燃え尽き症候群、ミスの増加、イノベーションの鈍化を招く可能性があります。
プラットフォーム エンジニアリングとは、社内開発者プラットフォームを設計、構築、維持する手法です。IDP をプロダクトとすると、プラットフォーム エンジニアリング チームは、そのライフサイクルを担当するプロダクト チームにあたります。この場合、組織の開発者が顧客となります。
このアプローチでは、プラットフォームは他のソフトウェア プロダクトと同様に扱われます。プラットフォーム エンジニアリング チームは、開発者のニーズを把握し、ロードマップを定義するほか、信頼性が高く、安全で、使いやすいツールセットを提供します。
プラットフォームとポータルの違いも理解しておく必要があります。これらの用語は同じ意味で使用されることもありますが、デベロッパーのエクスペリエンスにおいて異なるレイヤを表しています。社内開発者プラットフォーム(IDP)は、開発ライフサイクルを支えるすべてのツール、ワークフロー、インフラストラクチャを含むエンジン全体と考えることができます。
一方、社内開発者ポータルは、そのエンジンのダッシュボードに相当します。これはグラフィカル ユーザー インターフェース(GUI)であり、開発者がプラットフォームの機能にアクセスするための単一かつ一元化された場所を提供します。開発者ポータルは、開発者がツールを見つけて使用したり、ドキュメントを表示したり、新しいサービスをスキャフォールディングしたり、ビルドのステータスを確認したりするのに役立ちます。その際、基盤となる複雑な仕組みを理解する必要はありません。包括的な IDP には、使いやすさと見つけやすさを向上させるための開発者ポータルが含まれることが一般的ですが、プラットフォーム自体は基盤となるテクノロジーと自動化されたプロセスの完全な集合体です。
企業によってニーズは異なりますが、ほとんどの IDP は、連携して動作するいくつかのコア コンポーネントで構築されています。これらのコンポーネントは、開発から本番環境まで、合理化された安全かつ効率的なパスの作成に重点を置いています。
デベロッパーのエクスペリエンスは、インフラストラクチャの基盤となる複雑さを抽象化する中心的なインターフェースです。開発者が必要とするツール、ドキュメント、リソースにセルフサービスでアクセスできる手段としては、デベロッパー ポータルやコマンドライン インターフェース(CLI)があります。たとえば、Cloud Code などの IDE プラグインを使用すると、開発者は使い慣れたツールでコードを直接記述してデバッグできます。一方、Google Cloud の Backstage などのソリューションで構築されたポータルは、ソフトウェア エコシステム全体を一元的に把握できる統合ビューを提供します。
アプリ テンプレート(ゴールデンパスとも呼ばれます)は、新しいアプリケーションの事前定義されたベスト プラクティス構造を開発者に提供します。これらのテンプレートには、ボイラープレート コード、構成済みの CI / CD パイプライン、Infrastructure as Code ファイル、モニタリング ダッシュボードを含めることができます。App Design Center などのリソースは、チームがこれらのテンプレートのカタログを作成および管理するのに役立ち、ベスト プラクティスを簡単に見つけて再利用できるようにします。このアプローチにより、開発者のオンボーディングが加速され、すべてのサービス間で一貫性が生まれます。
このコンポーネントは、セキュリティを開発ワークフローに直接統合します。Identity and Access Management(IAM)、ロールベース アクセス制御(RBAC)、ネットワーク ポリシー、脆弱性スキャン、インフラストラクチャの強化といったセキュリティ ポリシーの適用を自動化します。セキュリティをプラットフォームの基盤に組み込むことで、「セキュリティをシフトレフト」でき、開発ライフサイクルの早い段階で潜在的な問題に対処できます。これにより、本番環境の直前でセキュリティがボトルネックになるのを防ぎます。
アプリケーション中心の基盤は、基盤となるインフラストラクチャ上に標準化された抽象化レイヤを作成します。主な運用上の課題に対する統合モデルを提供し、あらゆる環境で機能するネットワーク、セキュリティ、オブザーバビリティに対する単一のアプローチを提供します。この一貫性により、管理が簡素化され、開発者の認知負荷が軽減されます。開発者は、特定の Google Kubernetes Engine(GKE)クラスタ構成など、デプロイ ターゲット固有の詳細情報について心配する必要がありません。
クラウド アプリケーション プラットフォームは、IDP 全体のバックボーンとして機能するクラウド サービスの統合セットです。コンピューティング、ストレージ、ネットワーキング、Cloud API、CI / CD ツール、オブザーバビリティを統合して一元化したシステムを構築します。Google Cloud のような包括的な基盤上に IDP を構築することで、強力なマネージド サービスを活用して開発を加速できるほか、信頼性の向上と、需要に応じたプラットフォームのスケーリングが可能になります。
社内開発者プラットフォームの導入は、エンジニアリング組織に大きなメリットをもたらします。
デベロッパー エクスペリエンスの向上
認知負荷を軽減し、シンプルなセルフサービス ワークフローを提供することで、デベロッパー エクスペリエンスを向上させます。
製品化までの時間を短縮
自動化と標準化により、ソフトウェアの構築とデプロイのプロセスを迅速化し、チームがより迅速に顧客に価値を提供できるようになります。
信頼性と一貫性の向上
ゴールデンパスを通じてベスト プラクティスの実施を支援し、より一貫性と信頼性の高いアプリケーションのデプロイを実現します。
セキュリティとコンプライアンスの強化
セキュリティ ポリシーをプラットフォームのテンプレートと自動化されたワークフローに直接組み込むことで、すべての新しいサービスが最初からコンプライアンス要件を満たすようにします。
デベロッパーの自律性の向上
プラットフォーム管理を一元化することで、デベロッパーは機能開発に集中できるようになり、アプリケーションのライフサイクル管理を自律的に管理できるようになります。
IDP が実際にどのように機能するかを確認するために、Google Cloud を使用した一般的な社内開発者プラットフォームの例を見てみましょう。デベロッパーが、独自のデータベースと CI / CD パイプラインを必要とする新しいマイクロサービスを立ち上げる必要があるとします。
デベロッパーは、Cloud Source Repositories を手動で作成し、Cloud SQL データベースをプロビジョニングする Terraform モジュールを作成し、Google Kubernetes Engine(GKE)デプロイ ファイル(YAML)を作成して構成し、Cloud Build で新しいトリガーを設定し、すべての IAM 権限を管理する必要があります。この作業には数日を要し、複数のチームが関与する可能性があります。
プロセスははるかにシンプルです。
ポータルからのリクエスト: デベロッパーはデベロッパー ポータルにログインし、「Cloud SQL データベースを使用した Python マイクロサービス」の事前構築済みテンプレートを見つけます。
簡単な入力: サービス名とチーム名をフォームに入力します。
オーケストレーションの開始: デベロッパーが [作成] をクリックすると、プラットフォーム オーケストレーターが処理を引き継ぎます。
自動化されたアクション: オーケストレーターは、Google Cloud API を使用して一連の自動タスクをバックグラウンドで実行します。
完了: 数分でプロセスが完了します。デベロッパーは、新しいリポジトリ、GKE ステージング環境で実行中のアプリケーション、データベース認証情報へのリンクが記載された通知を受け取ります。設定を 1 行も記述する必要はありません。
社内開発者プラットフォームを構成するコンセプトとテクノロジーの詳細については、以下のリソースをご覧ください。