DevOps (デブオプス) 入門Feb 27, 20238 分 READ

プラットフォームエンジニアリングとは?

Jacob Schmitt

シニア テクニカル コンテンツ マーケティング マネージャー

プラットフォームエンジニアリング

プラットフォームエンジニアリングとは?

プラットフォームエンジニアリング(Platform Engineering)とは、最近生まれたエンジニアリング手法です。モダンなソフトウェアデリバリーが抱える複雑さと不確実性を減らし、開発者の生産性を向上させることに重点を置いています。DevOps を大規模に実施する場合、開発の都合とビジネス上の優先順位をすり合わせたり、アプリケーションライフサイクル全体にわたって複雑に入り組んだツールやインフラストラクチャを手間なく管理可能にしたりといった、大きな課題が発生します。しかし、プラットフォームエンジニアリングを導入することでこれらの課題に対処できます。

プラットフォームエンジニアリングでは、プラットフォームチームがインフラストラクチャの管理を自動化し、一元管理されたテクノロジープラットフォームから信頼の置けるツールやワークフローを開発者がセルフサービスで利用できるようにします。このように開発チームの認知負荷を低減させることで、クラウドネイティブなソフトウェアデリバリーに大きな進化がもたらされます。

プラットフォームエンジニアリングの価値

プラットフォームエンジニアリングがソフトウェア組織にもたらすメリットは、運用の複雑さが軽減されることと、開発プロセスの摩擦が解消されることです。これまでは、開発した人が運用すべきという考え方があり、大規模な分散アプリケーションをクラウドに構築する場合に混乱やムダが生じていました。プラットフォームエンジニアリングは、この状況を変える堅実な考え方です。

プラットフォームチームの役割には、大きく分けて以下の 4 つの領域があります。

  1. 内部開発者プラットフォームの構築
  2. 重要なデリバリープロセスの標準化とセキュリティ確保
  3. 社内のサービスレベル アグリーメントの設定と順守
  4. チームのパフォーマンスメトリクスの監視

以下では、上述のプラットフォームエンジニアリングの各分野の詳細と、それらが開発プロセスにもたらす価値について見ていきます。

内部開発者プラットフォーム (IDP)

プラットフォームチームの最も重要な仕事の 1 つは、内部開発者プラットフォーム (IDP) を構築して、保守することです。IDP とは、組織全体でソフトウェアプロダクトの開発とデリバリーをスピーディに行うためのツール、サービス、自動化ワークフローを 1 つのプラットフォームにまとめたものです。IDP では、アプリケーションの構成やインフラストラクチャの管理の手間をサービスレイヤーで抽象化します。

重要なポイントは、IDP があることで、アプリケーションをすばやくスムーズに構築、テスト、デプロイ、監視するためのリソースを開発者がセルフサービス形式で利用できるようになることです。つまり、運用チームにインフラストラクチャをプロビジョニングしたり、チケットを解決したりしてもらう必要なく、クラウド環境のスピンアップ、テストやデプロイを自動化する CI/CD パイプラインのトリガー、ロールバックの実装、ログとビルドアーティファクトへのアクセスなどを、1 つの API や GUI から簡単に行えるのです。

プロセスの標準化と認知負荷の軽減のための “舗装道路”

プラットフォームエンジニアリングでは、一般的な DevOps のプロセスとワークフローを管理、標準化、拡張するための統合システムを用意します。つまり、リソースのカタログを吟味、整理することで、開発の手間を減らしスピードを高める “舗装道路” を構築するのです。この “道路” には、必要なときに好みのツールを使える自律性を開発者に与える効果もあります。

何百人、何千人もの開発者を擁する大組織では、自律性を与えすぎると、ツールの無秩序な増大、知識のサイロ化、コストの急騰、燃え尽きといった弊害が発生する可能性があります。”舗装道路” は、そのような弊害を発生させることなく開発チームが抱える運用の負荷を減らすことができる、実績ある確実な手法です。さらに、セキュリティ、コンプライアンス、予算管理の強化にもつなげることができます。

社内のサービスレベル アグリーメント (SLA) の設定と順守

プラットフォームチームにとって、IDP は商品であり、開発者は顧客です。IDP の導入を広げるために、サービスレベル アグリーメントで IDP の信頼性とパフォーマンスに対して高い期待値を設定し、チームが負う責任を明確にします。

IDP を安定かつセキュアに保つことは、プラットフォームエンジニアの重要な仕事です。内部システムに障害が発生すると、”舗装道路” に従わない開発者が増えるだけでなく、外部顧客に価値を提供するフローに中断が起きるおそれもあります。そのため、プラットフォームチームは、開発者の生産性と組織の顧客の満足度を維持するために、IDP の正常性とパフォーマンスを能動的に監視します。

重要なパフォーマンスメトリクスの監視

プラットフォームチームは、ボトルネックの解消や開発者のニーズに応じたプラットフォームのカスタマイズのために、スループット、ワークフローの実行時間、インシデントの復旧時間などの重要なエンジニアリングパフォーマンスメトリクスを追跡します。そして、たとえば復旧時間が基準値を超えるようになった場合には、パイプラインへの自動テストの追加や、IDP に用意している監視機能やアラート機能の改善などの対策を試します。

また、開発者の生産性やパフォーマンスに関連するデータを追跡することで、IDP が組織の開発パターンやビジネス目標に適切に対応しているかどうかも確認できます。

プラットフォームチームは必要?

多数のチームで複雑なエンジニアリングが必要とされる大規模な分散プロジェクトを進めている場合や、部門横断型のチームを編成してアプリケーションの開発、運用、インフラストラクチャを監督している場合には、おそらく何らかの形で暫定的なプラットフォームエンジニアリングを行っていることでしょう。そのような場合には、プラットフォームチームの編成を検討することをお勧めします。

プラットフォームチームの編成をお勧めする状況は他にもあります。組織に成熟した製品がある、将来に対する明確なビジョンがある、業務の規模を拡張する準備ができている、といった状況です。

また、エンジニアリングチームがクラウド統合とインフラストラクチャ運用に取り組んでいる場合も、プラットフォームチームが必要な可能性があります。検討するうえで重要となる前提条件は、各チームメンバーの役割と責任を明確に理解したうえで、エンジニアリングチームのワークフローが詳しく定義されていることです。エンジニアリングチームのサイズやプロダクトの成熟度は、必ずしも重要ではありません。規模の拡大に伴って、いずれプラットフォームチームが必要になるからです。

一方、組織規模が小さく、少人数の開発者でモノリシックアプリケーションを開発している場合は、プラットフォームチームを編成しても大きなメリットを得られる可能性は低いと考えられます。まずはプロダクトマーケットフィットの達成に注力し、反復タスクを自動化して、開発者がイノベーションに集中できる体制を整えましょう。アプリケーションを個別のサービスに分け、複数のエンジニアリングチームが異なるバリューストリームでデリバリーする段階に達したら、プラットフォームチームを編成すると、スピードと安定性の最適なバランスを実現するのに役立ちます。

CI/CD を使ったプラットフォームエンジニアリング

どのようなプラットフォームチームでも備えておくべきツールとして、堅牢な継続的インテグレーション & 継続的デリバリー (CI/CD) パイプラインが挙げられます。CI/CD パイプラインは自動化エンジンを備えており、テンプレート化されたワークフローをトリガーして開発環境、QA 環境、ステージング環境、本番環境でコードのビルド、テスト、デプロイを行うことができます。より概念的に言えば、成熟した CI/CD パイプラインとは、開発においてビジネス上の優先事項のコード化、適用、測定を行うコントロールプレーンの役割を果たすものです。

CircleCI には、プラットフォームチームが重要な開発タスクを自動化したり、効率化したりするうえで役立つ機能が数多く用意されています。たとえば、CircleCI Orb は移植性に優れた再利用可能な構成コードのスニペットです。Orb を使用すると、人気のツールやサービスをワークフローに簡単に統合したり、一般的なプロセスを複数のプロジェクトで共有したりできます。また、設定ファイルのポリシー管理機能では、グローバルなルールを設定することで、組織のすべてのパイプラインに同じ規則とセキュリティポリシーを適用できます。

Insights ダッシュボードでは、パフォーマンスを視覚的に確かめられます。これを活用して、改善が必要な領域をすばやく特定し、効率が最大になるようにパイプラインを最適化できます。表示される情報には、実行時間が長く頻繁に失敗するワークフローの時系列データ、リソース使用率、クレジット使用量などがあります。それらの情報から、パイプラインで開発者が求めるスピードや今日の企業が必要とするコスト効率を実現できているかどうかを把握できます。

CI/CD には、開発者の作業効率を高め、開発プロセスを改善する力があります。プラットフォームエンジニアリングツールの中核を担い、セルフサービス機能や再利用性など、プラットフォームエンジニアリング手法の重要な要素を形にできます。

まとめ

プラットフォームエンジニアリングは、品質、セキュリティ、効率のいずれも犠牲にすることなく、ソフトウェアデリバリープロセスをスケールアップできる強力なツールです。リソースのプロビジョニングと管理が簡素化および自動化されるので、開発者は今までよりも短時間で、より多くの価値を顧客に届けることができるようになります。

組織としては、プラットフォームチームを編成することで DevOps のメリットを享受し、高めることができます。その結果として、開発者のアジリティが強化され、組織の信頼性、可視性、自信も高まります。組織のパフォーマンス向上のためにプラットフォームエンジニアリングを導入すべき状況にあるなら、ぜひ CircleCI に無料でユーザー登録して、業界トップクラスの継続的インテグレーションサービスが反復サイクルの高速化とデリバリー成果の強化にもたらす効果を実感してください。

関連おすすめ記事

クリップボードにコピー