会社でソフトウェアの迅速なデリバリーについて検討している際に、DevOps やプラットフォーム エンジニアリングという言葉をよく耳にするかと思います。これらを相反する概念と捉えているかもしれませんが、実際には連携して機能します。
次のように考えてください。DevOps は全体像の目標です。それはチームワークの文化であり、マインドセットです。プラットフォーム エンジニアリングは、DevOps を簡単に機能させるツールを構築することで、その目標を実際に大規模に達成するための方法となります。
これらのコンセプトがどのように相互補完するのかを理解するには、まず明確な定義を確立することが重要です。その違いは、DevOps の文化的目標を、専門分野であるプラットフォーム エンジニアリング、そしてその分野で作成される具体的なツールである社内開発者プラットフォーム(IDP)とは区別して考えることにあります。
DevOps は、コードを作成する人(開発、つまり「Dev」)とコードを実行する人(運用、つまり「Ops」)をより緊密に連携させる一連の手法です。
これは主に、チームのコミュニケーションを改善し、責任を共有し、すべてを自動化することに重点を置いた文化的な変革です。目標は、人、プロセス、ツールを統合してビジネス価値の創出を加速し、アイデアからユーザーが使用できるソフトウェアへと迅速に移行することです。
プラットフォーム エンジニアリングとは、ソフトウェア エンジニアリング チームにゴールデンパスを提供するために、内部開発者プラットフォーム(IDP)を設計および維持する手法です。
プラットフォーム エンジニアリング チームは、デベロッパー ツールとクラウド インフラストラクチャをプロダクトのように扱います。その主なジョブは、開発チームから困難で反復的なタスクを取り除くことです。シンプルで信頼性の高いセルフサービス レイヤを構築してくれるため、開発者がネットワーキング、セキュリティ、コンテナ オーケストレーションなどの複雑なクラウド サービスの専門家である必要はありません。
内部開発者プラットフォーム(IDP)は、プラットフォーム エンジニアリング チームが構築するツールとサービスの実際のセットです。開発者は、コンテナ オーケストレーション、Infrastructure as Code(IaC)ツール、CI/CD パイプラインなどのリソースを含め、業務に必要なものをすべてこの 1 か所で入手できます。
たとえば、Google Cloud 上に構築された IDP では、コンテナを実行するために Google Kubernetes Engine(GKE)を使用する場合があります。プラットフォームのゴールデンパスにサイト信頼性エンジニアリング(SRE)と DevOps の原則を組み込むことで、プラットフォーム エンジニアリング チームは人的ミスの可能性を減らし、ダウンタイムを最小限に抑えることができます。IDP は難しい部分を抽象化し、開発者が利用できる自動化やチュートリアルを提供することで、最初から安全かつ正確に作業を行えるようにします。
DevOps は、連携して自動化する必要がある「理由」を示すものです。プラットフォーム エンジニアリングは、その自動化を誰でも簡単に利用できるようにする「方法」です。
小規模な企業やチームでは、確かに緊密なコミュニケーションを通じてプロセスを管理できますが、どのような組織でも、早い段階で DevOps の原則とベスト プラクティスを採用することにはメリットがあります。
ただし、何百人ものデベロッパーを抱える企業に成長した場合:
複雑さが爆発的に増大: すべての開発チームが、Cloud Logging、Cloud Monitoring、インフラストラクチャ コードなど、数十ものツールを学習して維持する必要があります。このような負担は認知負荷と呼ばれ、開発スピードを低下させます。 |
複雑さが爆発的に増大: すべての開発チームが、Cloud Logging、Cloud Monitoring、インフラストラクチャ コードなど、数十ものツールを学習して維持する必要があります。このような負担は認知負荷と呼ばれ、開発スピードを低下させます。
一貫性の欠如: チームごとに環境のセットアップ方法が異なり、使用するセキュリティ手法、コード標準、デプロイ構成もさまざまです。そのため、運用チームが全員をサポートするのは困難です。 |
一貫性の欠如: チームごとに環境のセットアップ方法が異なり、使用するセキュリティ手法、コード標準、デプロイ構成もさまざまです。そのため、運用チームが全員をサポートするのは困難です。
プラットフォーム エンジニアリングは、Google Cloud の包括的なマネージド サービス スイートを使用して標準化された IDP を作成することで、この問題を解決します。また、ゴールデンパスを使用すると、IDP の構築、管理、スケーリングが簡単になります。これにより、企業が拡大しても、スピードと品質という DevOps の目標が維持されます。
DevOps とプラットフォーム エンジニアリングは補完関係にありますが、主な焦点は異なります。
DevOps は文化的な変革を中心としており、チームワーク、責任の共有、デリバリー パイプライン全体の自動化を重視しています。その目標は、アイデアから本番環境へと迅速に移行して価値を提供するために、人とプロセスを連携させることです。
一方、プラットフォーム エンジニアリングは、デベロッパー エクスペリエンスを主な焦点としています。これは、インフラストラクチャの複雑さを抽象化し、セルフサービス機能を構築することで実現されます。開発者にシンプルで信頼性の高い道筋を提供することで、プラットフォーム エンジニアリングは、DevOps の文化的な目標の実現を大規模に加速させる専門分野として機能します。
プラットフォーム エンジニアリングは、技術部門のトップリーダーに財務面と管理面でメリットをもたらします。
リスクとコンプライアンス
プラットフォーム エンジニアリングは、セキュリティとコンプライアンスのポリシーをプラットフォームに直接組み込み、GKE クラスタなどのすべての環境で標準を自動的に適用して不整合を防ぐことで、リスクを軽減します。
デベロッパーの生産性
プラットフォーム エンジニアリングは、シンプルなセルフサービス API とポータルを提供することで財務上の成果を向上させます。これにより、開発者がインフラストラクチャ タスクに費やす時間を大幅に削減できます。
市場投入までの時間の短縮
Google Cloud 上のプラットフォーム エンジニアリングは、効率的なワークフローでチームを支援することで、組織が新しいサービスを迅速かつ簡単にリリースできるようにします。Google Cloud のインフラストラクチャにより、効率的なデプロイなど、さまざまなことが可能になります。
専任のプラットフォーム エンジニアリング チームを編成して IDP を構築するかどうかは、単にチームの規模によって決まるものではありません。組織のニーズと摩擦のコストに基づいて判断されます。アプリケーション開発者がインフラストラクチャ タスクに費やす時間と労力が、プラットフォーム自体の構築とメンテナンスに必要な投資を上回る場合は、プラットフォームの導入が妥当となります。詳しくは、プラットフォーム エンジニアリングに関するガイドをご覧ください。
アプリケーションが単純で、開発チームがインフラストラクチャのニーズを簡単に管理できる場合は、Cloud Build のようなシンプルな CI/CD ツールで十分です。この場合、DevOps の文化的な側面(コミュニケーションの改善、目標の共有、シンプルな自動化)に焦点を当てるのが最も効果的なアプローチです。
一般的に、プラットフォーム チームの必要性が生じるのは、複雑さによって組織全体のスピードが低下し始めたときです。これは通常、会社で次のいずれかの状況が発生している場合に起こります。
高い認知負荷: 開発者は、機能開発に集中する代わりに、基盤となるインフラストラクチャのセットアップ、構成、メンテナンスに過剰な時間を費やしています。 |
高い認知負荷: 開発者は、機能開発に集中する代わりに、基盤となるインフラストラクチャのセットアップ、構成、メンテナンスに過剰な時間を費やしています。
一貫性のない手法: 各種プロダクトごとにセキュリティ、運用、デプロイのパターンが異なるため、サポートや監査が困難になります。 |
一貫性のない手法: 各種プロダクトごとにセキュリティ、運用、デプロイのパターンが異なるため、サポートや監査が困難になります。
プロビジョニングの遅さ: デベロッパーは、新しいテスト環境や本番環境を立ち上げるのに数日を要するため、開発ライフサイクルでボトルネックが生じます。 |
プロビジョニングの遅さ: デベロッパーは、新しいテスト環境や本番環境を立ち上げるのに数日を要するため、開発ライフサイクルでボトルネックが生じます。
この段階で、プラットフォーム チームを編成して一貫性のある標準化された IDP を構築すると、投資収益率が最大化され、DevOps で約束されたスピードと品質を維持できます。