昨今のクラウドネイティブ技術の発展により、様々なことを簡単に行えるようになった一方で、開発者の認知負荷も上がっています。
これを解決するためのアプローチとして、1, 2 年ほど前から Platform Engineering が注目を集めており、2024 年 7 月 9 日には Platform Engineering Kaigi 2024 というカンファレンスも開催されました。
私も現地にて参加させていただいたのですが、1,000 人近くの方が登録をしていたらしく、こちらからも注目度が伺えます。
(本記事は参加レポートではないので詳しくは書きませんが、様々な企業の事例を聞くことができてとても面白かったです。こちらでアーカイブが公開されているので、気になる方はぜひ見てみてください。)
そこで今回は、個人的に気になっている Backstage の Plugin である OPA (Orchestrate Platform and Applications) on AWS について紹介しようと思います。
Platform Engineering とは
まず初めに、前提知識として必要な Platform Engineering について簡単に紹介します。
CNCF のサイトには以下のように記述されています。
## What is platform engineering?
Inspired by the cross-functional cooperation promised by DevOps, platforms
and platform engineering have emerged in enterprises as an explicit form of
that cooperation. Platforms curate and present common capabilities,
frameworks and experiences. In the context of this working group and related
publications, the focus is on platforms that facilitate and accelerate the
work of internal users such as product and application teams.
Platform engineering is the practice of planning and providing such
computing platforms to developers and users and encompasses all parts of
platforms and their capabilities — their people, processes, policies and
technologies; as well as the desired business outcomes that drive them.
Platform Engineering Maturity Model より引用
つまり、Platform Engineering は DevOps の協力精神からインスピレーションを受けたものであり、企業内のチームが効率的に作業できるように共通の機能やフレームワーク (技術に限らず人やプロセス、ポリシーなどを含む) を計画、提供し、最終的にはビジネスの目標達成を支援することを目的としたものになっています。
もっと簡単に言うと、開発者の認知負荷を下げてアプリケーション開発の生産性を向上しようぜ!といったものになります。
多くの企業、個人が分かりやすいガイドやブログを公開しているので、詳しくは調べてみてください。
また、CNCF Platforms White Paper に、Platform とは何か、なぜ Platform なのかなどの本質的な部分が分かりやすくまとめられているので、こちらも読んでみることをお勧めします。
Backstage とは
もう一つの前提知識として、Backstage についても簡単に紹介します。
Backstage は、Spotify 社が開発した開発者ポータルを構築するための OSS で、Platform Engineering の一環で IDP (Internal Developer Platform / Portal) を構築する際に利用することができます。
機能としては以下のものを提供しています。
Core Feature | 説明 |
---|---|
Software Catalog | 企業が管理する資産 (サービス、ウェブサイト、ライブラリ、データパイプラインなど) を一元管理できる機能 |
Software Templates | テンプレートからコンポーネントを作成できる機能 |
Search | 情報を検索できる機能 |
TechDocs | 技術ドキュメントを管理できる機能 |
Kubernetes | Deployment や Pod などの状態を確認できる機能 |
上記は Core Feature ですが、サードパーティ製を含む多くの Plugin が提供されているため、企業のニーズに合わせて自由にカスタマイズすることができるようになっています。
公式がデモを用意しているので、こちらも見てみるとよりイメージが付くかもしれません。
OPA on AWS とは
ここからがようやく本題で、OPA (Orchestrate Platform and Applications) on AWS について紹介します。
OPA on AWS は上述の Backstage の Plugin として提供されているツールで、アプリケーション開発者がクラウドの専門知識を習得していなくても AWS 上に環境とアプリケーションを迅速に構築できるよう、プロビジョニングおよび運用レイヤーとセキュリティを提供します。
これにより、以下の図のように、Platform Engineering Team と Application Developers のそれぞれの役割に集中することができるようになります。
アーキテクチャ
OPA on AWS の全体像は以下のようになっています。
OPA on AWS (Backstage) 自体も AWS でホスティングする形になっていて、各種設定などは RDS に永続化されるようになっています。
また、バージョン管理システム (デフォルトでは GitLab) とも統合されており、アプリケーションや IaC、Backstage のテンプレートなど、各種リソースのソースコードはこちらのリポジトリにプッシュされるようになっています。
CI/CD パイプラインもあらかじめ用意されているため、IaC ツールを介して AWS 環境へ自動的にデプロイされます。
その他、IdP (Identity Provider) (デフォルトでは Okta) とも統合されているため、要件が合えばそのまま利用することができるようになっています。
カタログエンティティ
OPA on AWS では、Backstage が提供しているカタログエンティティに加え、独自のエンティティを用意しています。
これらのエンティティは Backstage のテンプレートで以下のようにして利用できます。
apiVersion: aws.backstage.io/v1alpha
kind: AWSEnvironment
metadata:
...
使い方
OPA on AWS を使用してアプリケーションを作成した時の動きは以下の図のようになっています。
Developer は OPA on AWS (Backstage) を介してテンプレートを利用し、それをもとにアプリケーションを作成していることが分かります。
これを頭に入れた上で、以下のページを参考に構築してみましょう。
また、上記をもとに Docker で動かせるようにしたものを作成したので、こちらも必要に応じて見てみていただけると良いかもしれません。(とりあえず動かしてみたというものなので、あくまでも参考程度として)
カスタマイズ
OPA on AWS では多くのデフォルトテンプレートが提供されていますが、欲しいテンプレートが無いことや、テンプレート自体は存在したとしても設定を変えたいことは往々にしてあると思います。
OPA on AWS はそのようなユースケースにも対応しており、all-templates.yaml に定義を追加、または既存の定義の変更をすることで、テンプレートの追加・変更を行うことができます。
詳しくは Customizations | OPA on AWS をご参照ください。
まとめ
冒頭でも述べましたが、Platform Engineering は世界的に注目を集めているアプローチであり、2023 年 12 月 4 日の Gartner のプレスリリースでも以下のように述べられています。
2026年までに、大規模なソフトウェア・エンジニアリング組織の80%が、アプリケーション・デリ
バリのための再利用可能なコンポーネント、ツール、サービスを提供する社内プロバイダーとして、
プラットフォーム・エンジニアリング・チームを結成するとみています。
その Platform Engineering をどのようにして実現するかは様々なところで議論されており、体感的には Backstage を利用して IDP (Internal Developer Platform / Portal) を構築する手法をよく見る気がしていたのですが、どうやら Notion を使っている企業も多いようです。
#PEK2024 サイバーエージェントブースにお越しくださった方々、ありがとうございました!アンケート企画の最終結果をお伝えします。
— CyberAgentDevelopers (@ca_developers) July 9, 2024
運営の皆様、素晴らしいカンファレンスをありがとうございました🙏お疲れさまでした!次回開催も心待ちにしております✨ pic.twitter.com/bChnhA3tQ3
Platform Engineering Kaigi 2024 の CyberAgent 社のブースで行われていたアンケート
Backstage は React のコードをいじったりすることもあるので、フロントエンドに触れたことのある方でないとハードルが高いかもしれませんが、個人的には Backstage の方が機能的に開発/運用のサイクルに乗せやすいのかなと思っています。(自分が Notion を簡単なドキュメントツールとしてしか使ったことがないと言うのもありますが)
今後どのような方向で発展していくのかは分かりませんが、今後も情報を追っていきたいと思います。