プラットフォーム・エンジニアリング・ツールとは
プラットフォーム・エンジニアリング・ツールは、必要なものを必要な時に利用できるセルフサービス方式により、(社内および外部の) 開発チームの生産性向上を支援します。プラットフォーム・エンジニアリング・ツールは、継続的インテグレーションおよび継続的デリバリーまたはデプロイメント (CI/CD)、Infrastructure as Code (IaC)、コンテナ化、可観測性、セキュリティ、開発者向けセルフサービスを含む、さまざまな機能をサポートします。
プラットフォーム・エンジニアリング・チーム (単にプラットフォームチームと呼ばれることもあります) は、開発者ポータルのサポートを担当します。開発者ポータルを通じて、開発者は各種サービスや API の操作に必要なリソース、ドキュメント、ツールへのセルフサービスアクセスが可能です。この他にも、プラットフォームチームは、開発者がアプリケーションを構築、デプロイ、管理するための基盤となるインフラストラクチャである内部開発者向けプラットフォーム (IDP) のメンテナンスを担当することもあります。
プラットフォーム・エンジニアリング・テクノロジーと開発者用ツールは、関連性はあるものの、カテゴリが異なります。プラットフォーム・エンジニアリング・テクノロジーと IDP、つまりプラットフォームそのものは、開発者の業務を効率化する一貫したプロセスの確立を促進します。一方、開発者用ツールは、この基盤を活かしたツールであり、開発者による IDP のエクスペリエンスの向上や、特定のプロジェクトの遂行を支援します。
ここからは、プラットフォーム・エンジニアリングが達成しようとしている目的、そしてその目的達成を支える種々のテクノロジーやサービスについて詳しく見ていきます。
プラットフォーム・エンジニアリングの目的
プラットフォーム・エンジニアリングは、このクラウドネイティブの時代に存在する膨大な数の既存テクノロジーを把握することに努めています。プラットフォーム・エンジニアは、ソフトウェア・エンジニアリングに携わる組織がセルフサービスで利用できる機能として、ツールチェーンやワークフローを設計し、構築します。開発チームは、数分で必要な機能にアクセスできるのに加え、提供されるソリューションは確実に内部でサポートされ、可観測性があり、組織のセキュリティ慣行に沿ったものであるため安心して利用できます。
プラットフォーム・エンジニアリングは、より効率的なソフトウェア開発を目的として、企業文化、業務運営、チームによるコラボレーションなど幅広い分野を総合的に融合するアプローチです。ソフトウェア開発者にかかる認知負荷を認識し、開発者が問題だと感じている課題を特定し、軽減することを目指します。
では、それはどのような形で実践されるのでしょうか。プラットフォーム・エンジニアは、組織全体の一貫性を維持しながらも柔軟性を提供する、コンテンツ、ツール、ドキュメント、テンプレート、ワークフローを集めたコレクションを作ります。繰り返し使える共通のツールや機能を提供することで、開発者が効率的に業務を行い、生産性を高められるようにします。
AI 時代のプラットフォーム・エンジニアリングの現状
内部開発者向けプラットフォーム (IDP) とは
IDP は、コードの作成やデプロイの際に開発者がセルフサービス方式で利用できるツールとテクノロジーからなる標準化されたセットです。開発プロセスの諸要素を統合および単純化することにより、IDP は開発チームの業務の管理性や効率を向上させ、コラボレーションを促進します。
IDP は、プラットフォーム・エンジニアリングに関する選択が形になったものです。IDP は、魅力的な社内向け製品として提供される、セルフサービス方式で利用できる API、ツールとサービス、ナレッジ、そしてサポートの基盤です。IDP の主たるユーザーは開発チームですが、初期設定、メンテナンス、サポートはプラットフォーム・エンジニアが担当します。そのため、過去に誰が作成したものかに関係なく、組織全体で使用するテクノロジーやリソースを統一できます。IDP を提供することは、開発チームと運用チームのより効率的な連携を促進する DevOps のベストプラクティスを実現し維持する手段の 1 つでもあります。
「内部開発者ポータル」と「内部開発者向けプラットフォーム」という用語が混同されることがあります。両者の違いはというと、開発者ポータルは、内部開発者向けプラットフォームのフロントエンドとして機能することもある一方、内部開発者向けプラットフォームは、アプリケーション・プラットフォームを追加することで機能に深みとスケーラビリティをもたらします。
開発者向けプラットフォームのオープンソース・プロジェクトとして特によく知られているものの 1 つに、Spotify のエンジニアによって開発され、後に Cloud Native Computing Foundation (CNCF) に寄贈された Backstage があります。Backstage は Red Hat® Developer Hub の基盤となっています。Red Hat Developer Hub は、エンタープライズ向けの統合機能とサポートを備え、開発者向けプラットフォームを構築するためのサポート付きの独自のフレームワークを提供します。
CI/CD ツールとは
CI/CD ツールは、開発、デプロイ、テストの自動化を支援します。ツールには、特にインテグレーション (CI) 側を処理するものや、開発とデプロイ (CD) を管理するもの、継続的なテストや関連機能に特化したものがあります。こうしたツールの多くは、プラットフォーム・エンジニアリングのアプローチの一環として IDP に統合できます。
オープンソースの CI/CD ツールには、よく知られているさまざまなツールがあります。ここでは代表的なもののみ紹介します。
- Argo CD は、GitOps プラクティスに合致した Kubernetes 向けの宣言型継続的デリバリーツールです。スタンドアローンのツールとしても、必要なリソースをクラスタにデリバリーする CI/CD ワークフローの一部としても使用できます。
- Red Hat OpenShift® GitOps は、Argo CD を基盤に構築されています。
- Tekton は、コンテナを使用した標準的なクラウドネイティブ CI/CD エクスペリエンスを提供する、Kubernetes プラットフォーム向けの CI/CD フレームワークです。
- Red Hat OpenShift Pipelines は、Tekton フレームワークを基盤として構築されています。
- Jenkins は、CI および CD プロセスを小規模なものから大規模なものまで処理できる自動化ツールです。
- Spinnaker は、マルチクラウド環境向けに設計された CD プラットフォームです。
- GoCD は、モデリングと可視化に重点を置いた CI/CD サーバーです。
- Concourse は継続的なプロセスに適した自動化ツールです。
- Screwdriver は、CD 向けに設計されたビルドプラットフォームです。
さまざまなベンダーから入手できるマネージド型の CI/CD ツールを検討することも推奨されています。適切な CI/CD ツールを選択することで、あらゆるプラットフォームでのアプリケーションの構築、テスト、デプロイを自動化できます。
IaC (Infrastructure as Code) ツールとは
IaC は、インフラストラクチャを管理する方法の 1 つです。IaC を通じて、管理者はサーバーや仮想マシンなどのインフラストラクチャの管理とプロビジョニングを自動化できます。自動化されたセルフサービス型インフラストラクチャに対応しているという点は、プラットフォーム・エンジニアリングの目的と一致しています。
IaC を使用する場合、インフラストラクチャの仕様は、設定ファイルを使って定義することになります。そのため、一貫した環境のプロビジョニングが容易です。IaC により、組織全体の設定を編集し、配布できるため、記録されていないアドホックな変更を抑制できます。
IaC は、サーバーの自動化および構成管理ツールを利用します。IaC アプローチとの整合性のある一般的な IT 自動化ツールとして、Red Hat Ansible® Automation Platform、Terraform、Chef、Puppet、Salt などが挙げられます。
コンテナツールとは、Kubernetes とは
コンテナツールは、プラットフォーム・エンジニアのツールボックスに欠かせないツールです。
コンテナは、アプリケーションとランタイム環境全体 (実行に必要なすべてのファイル) をパッケージ化し、分離します。このため、コンテナ化アプリケーションは、デプロイ先の環境やインフラストラクチャが異なっても一貫して実行されます。コンテナは、クラウドネイティブ開発の基盤となる手法であり、大規模なアプリケーションを分割して、小規模で独立した、疎結合のマイクロサービスの集合体を作ります。
さまざまなオープンソースツールがコンテナの利用を容易にしています。開発者はコンテナの構築やデプロイに Docker や Podman などのツールを使用できます。どちらのツールも Open Container Initiative (OCI) 標準規格に対応しています。
運用チームによる大規模なコンテナの管理には、オープンソース Kubernetes プロジェクトなどのコンテナ・オーケストレーション・プラットフォームを利用します。コンテナ・オーケストレーションは、コンテナのライフサイクル全体を通じて、コンテナのデプロイメント、管理、スケーリング、ネットワーキングを自動化します。
Kubernetes プラットフォームは、さまざまなプロバイダーを通じて利用できます。Red Hat OpenShift は、Kubernetes を基盤として構築されたエンタープライズ・アプリケーション・プラットフォームです。プラットフォーム・エンジニアは、Red Hat OpenShift を Red Hat OpenShift Developer Hub などの IDP と統合して、開発者向けプラットフォームを提供できます。
可観測性ツールとは
プラットフォーム・エンジニアリングにおいては、監視と可観測性が重要です。チームは出力、ログ、パフォーマンス指標を調査することで、システムやアプリケーションの状態に関する理解を深められます。この可視性により、開発者や管理者は複雑なアプリケーションやインフラストラクチャの信頼性、パフォーマンス、セキュリティを向上させることができます。
可観測性は、監視の概念を拡張して、問題の根本原因の特定に加え、予測や予知まで含めたものです。可観測性ツールやテクノロジーの選択肢は数多くあり、チームに最適な方法で独自の可観測性システムを構築できます。
広く使用されている可観測性のためのオープンソースツールには、Grafana、Jaeger、OpenTelemetry、Prometheus などがあります。Red Hat OpenShift Observability は、OpenTelemetry 標準規格に基づいて Red Hat OpenShift で利用するために構築された、一連の可観測性ツールです。
プラットフォーム・エンジニアリング・セキュリティ・ツールとは
セキュリティへの懸念が高まる中、先進的なソフトウェア開発では、ソフトウェア開発ライフサイクル (SDLC) の各段階でセキュリティに対応する「シフトレフト」戦略が採用されています。これによりセキュリティは、デプロイ前の最後のチェックではなく、プロジェクトの最初から取り組むものとなりました。
プラットフォーム・エンジニアは、開発者が SDLC 全体を通してセキュリティ・ガードレールを守れるように支援します。そのためのステップには、CI/CD パイプラインにおけるチェックやテストの自動化などがあり、これらを通じてコードを保護し、データ漏洩を防止し、ポリシーの順守を徹底し、品質を保証します。
その他にも、シークレット管理 (パスワード、クライアント設定ファイル、リポジトリ認証情報などの管理) や、API キーの管理を含む API セキュリティに役立つプラットフォーム・エンジニアリング・セキュリティ・ツールがあります。
Red Hat は、ソフトウェアのセキュリティをサポートする一連のツールやサービスを提供しています。
Red Hat Trusted Software Supply Chain は、Red Hat Trusted Profile Analyzer、Red Hat Trusted Application Pipeline、そして Red Hat Trusted Artifact Signer など、脆弱性を低減し、セキュリティポリシーを適用する一連のソリューションを統合したものです。
- Red Hat Trusted Profile Analyzer は、ソフトウェア部品表 (SBOM) の管理を支援すると同時に、信頼できるソースからの CVE やセキュリティ・アドバイザリーを相互参照します。オープンソース・プロジェクトである Graph for Understanding Artifact Composition (GUAC)、Trustification、Exhort のテクノロジーを取り入れています。
- Red Hat Trusted Application Pipeline は、開発プロセスの早い段階で脆弱性に対処する手段として、アーティファクトの署名、出所、証明を検証します。
- Red Hat Trusted Artifact Signer は、Sigstore プロジェクトをベースにしたもので、コンテナイメージ、バイナリ、ドキュメントなどのソフトウェア・アーティファクトの暗号署名と検証を単純化します。また、Cosign と Fulcio の各プロジェクトのテクノロジーを取り入れて、Hashicorp Vault、Google/Azure、AWS KMS など、他社の主要な管理システムとの全面的な統合をサポートしています。
Kubernetes デプロイメントでは、Red Hat Advanced Cluster Security for Kubernetes があらゆるプラットフォームのコンテナ化されたワークロードを保護し、チームが脆弱性を特定して対処し、セキュリティポリシーを適用できるよう支援します。
プラットフォーム・エンジニアリングで Red Hat を選ぶ理由
Red Hat では、プラットフォーム・エンジニアの目的に合致する幅広いソリューションを取りそろえています。Red Hat の製品とサービスの相乗効果によって、チームの生産性を高め、セルフサービスを推進できます。そして、オンボーディングが迅速化し、反復作業が減少します。
Red Hat OpenShift はエンタープライズ・アプリケーション・プラットフォームであり、デプロイ先がオンプレミス、クラウド、エッジのいずれであっても、さまざまなアプリケーションで信頼できるツールを使用できます。
Red Hat Developer Hub は、ソフトウェア開発プロセス全体を通じて効率化とコラボレーションを促進します。統一されたオープンなプラットフォームを提供すると同時に、開発チームが感じる認知負荷や不満を軽減します。Red Hat Developer Hub を利用することで、IDP を活用して開発プロセスの諸要素を統合し、ワークフローを最適化し、組織内でのコラボレーションを促進できます。
Red Hat Trusted Software Supply Chain によって、ソフトウェアファクトリーのコンポーネント、プロセス、プラクティスに最初からセキュリティを組み込めます。
Red Hat Developer Hub ビジネスソリューション
Backstage ベースのオープンなエンタープライズ・プラットフォームで、開発プロセスの要素を視覚的に統合した開発者ポータルを構築できます。