ishikawa_pro's memorandum

若手webエンジニアの備忘録です.

Swift Node.js Docker AWS etc...色々やります。

Platform Engineering とは

こんにちは。
もう1月が終わりですね。
今日は Platform Engineering についてちょっと気になって調べていたので、ついでに自分なりに簡単にブログにまとめみます。

調べたきっかけ

僕はバックエンドエンジニアとして、ここ1年くらい、社内のサービス開発プラットフォームの開発・運用などをしています。
特に最近は SRE の人たちと一緒に プラットフォームの改善や CI/CD の改善などについて取り組んでいます。
そういうプラットフォームを作ったり改善したりする上で、どういうことを考えながら取り組んだらいいのかとかを色々調べていたら Platform Engineering という言葉が最近流行っているようだったので、気になったのがきっかけです。
あとは自分がやっていること的にバックエンドエンジニアなのか?とちょっと疑問に思ったのもきっかけの一つです。
特に肩書を気にしてるわけではなく、ロールモデル的なのがあるといいなと思って色々調べたという感じです。

Platform Engineering とは

いろいろなサイトから引用してみます。
Gartner ではこう紹介してあります。

  • 再利用可能なツールとセルフサービス機能を実装し、インフラストラクチャ・オペレーションを自動化することで、開発者のエクスペリエンスと生産性を向上させる
  • アプリケーションの再利用可能で構成可能なコンポーネントとサービスを活用する
  • 標準化されたツールとコンポーネント、そして自動化されたプロセスを利用できるというメリットがある

www.gartner.co.jp

PlatformCon という Platform Engineering に関するカンファレンスを運営しているコミュニティのサイトがあり、そこではこう説明されていました。

Platform engineering is the discipline of designing and building toolchains and workflows that enable self-service capabilities for software engineering organizations in the cloud-native era. Platform engineers provide an integrated product most often referred to as an “Internal Developer Platform” covering the operational necessities of the entire lifecycle of an application.

プラットフォーム エンジニアリングは、クラウド ネイティブ時代のソフトウェアエンジニアリング組織のセルフサービス機能を可能にするツールチェーンとワークフローを設計および構築する分野です。プラットフォーム エンジニアは、アプリケーションのライフサイクル全体の運用上の必要性をカバーする「Internal Developer Platform」と呼ばれる統合された製品を提供します。

platformengineering.org

The Global Home for Platform Engineers

↑で書かれているように Internal Developer Platform (IDP) も他のサイトや記事などをみても、セットでよく語れている印象でした。
ちなみに IDP のサイトもあります。

internaldeveloperplatform.org

Gartner の2022年のハイプサイクルで Platform Engineering は黎明期の真ん中くらいにあり、 Plateau will be reached は水色なので 2 ~ 5 年くらいで普及するとの予想みたいです。
https://emtemp.gcom.cloud/ngw/globalassets/en/articles/images/hype-cycle-for-emerging-tech-2022.png

www.gartner.com

つまり、自社のエンジニア組織にフィットした、アプリケーションの構築方法やデリバリー方法・環境を提供して、アプリケーションエンジニアがプロダクト開発に専念して高速に本番環境へリリースできる仕組みやサイクルを作って上げるのが Platform Engineering なのかなと思いました。

SRE と Platform Engineer の違い

ambassador の SRE vs. Platform Engineering という記事が面白かったです。
www.getambassador.io

この記事によると、 Platform Engineer は、ソースコードから本番環境までのソフトウェア開発ライフサイクル全体を常に見ていて、開発から本番環境へのデリバリーが高速にされるワークフローを構築することに責任を持つようです。
また、ベストプラクティスやプラットフォームの最適な利用方法について、アプリケーション開発者を教育することも役割の1つのようです。

一方 SRE は、SLO(サービスレベル目標) を設定して、SLOが達成できるようにシステムを組む。そして、監視、インシデント管理、単一障害点の排除、障害の軽減などを含むプラットフォームとワークフローに進化させるために取り組む。

記事にある図がイメージしやすくてよかったです。

https://cdn.sanity.io/images/e3vd3ukt/production/f1519c4f28a92922b310ba6d4db287600eee56c4-4320x2208.png?rect=1,0,4319,2208&w=1600&h=818&auto=format

その他関連しそうなこと

Microsoft と Alibaba Cloud が共同でやっている Open Application Model(OAM)というプロジェクトがあります。
これは、 k8s はアプリケーションエンジニアへの負担が大きいという課題を解決するために提案された、k8s などのプラットフォームに依存しない、アプリケーションに特化したスペックです。 oam.dev

そして OAM に準拠して作られたプロダクトに KubeVela があります。

kubevela.io

これらは、 アプリケーションエンジニアが k8s などのインフラを意識せずに、サービス開発に専念できるようにするためのプロダクトなので、 Platform Enginnering を手助けするツールだなと思いました。

まとめ

自分のやっていること・やりたいことを、なんとなく言語化できたような気がしてちょっとすっきりしました。
去年作った社内用の Next.js ホスティング基盤なんかは、Platform Engineering の一部なのかなと思います。

cam-inc.co.jp

developers.cyberagent.co.jp

Platform Engineering には、ある程度インフラの知識も必要だし、ソフトウェア開発の知識もないと開発速度や開発者体験の向上はできないなと思ったので、どっちも頑張って勉強しないとなと思いました。