🚀

Platform Engineering の始め方 〜マインドセット〜

に公開

こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。

はじめに

Platform Engineering が注目を集めています。しかし、ツールやフレームワークを導入すれば成功するわけではありません。
本記事では、Platform Engineering を成功させるために最も重要な要素である「マインドセット」に焦点を当てます。プラットフォームを単なる共通基盤ではなく「製品」として捉える視点、開発者の認知負荷を軽減するという本質的な価値、そして長期的な忍耐強さ。これらのマインドセットを理解することで、Platform Engineering の真の姿が見えてきます。

なぜこのテーマで書きたかったのか

私は以前、「SRE は管理職に向いている」というテーマで登壇した経験があります。
SRE の文化面、マインドセットを取り上げ、管理職との共通点をやや強引に説明しました。

SRE の文化と管理職の共通点

SRE に優れた文化が存在します。それらは管理職が組織運営で取り入れるべき文化と多くの共通点があります。
下の表は SRE の文化と管理職の文化を対比させたものです。

SRE の文化 管理職の文化
SLO がチーム共通の信頼性目標となる 組織の KGI/CSF/KPI が組織の目標となる
データ駆動の意思決定、推測するな、計測せよ 組織の目標管理を定量的に行う
リスク許容、信頼性100%は誤った目標 不確実さの許容、リスク内で組織活動を推進
エラーバジェット、機能リリースとサイト安定という相反する目標のバランス プロジェクトやタスクの優先度でリソースを分配
非難しないポストモーテム 心理的安全性は、組織の生産性を高める
トイルの撲滅 非効率な定型作業を排除
ステークホルダーとの連携 部門内外とのコラボレーション

どうでしょうか。かなり似ていると思いませんか?
SRE は管理職に向いている、ということが理解できるのではないでしょうか。

Platform Engineering のマインドセット

ここからが本題です。
Platform Engineering のマインドセットについて考えてみましょう。

1. 「プラットフォーム=製品(Product)」というマインドセット

Platform Engineering で重要なのは、プラットフォームを単なるインフラやツールの集まりではなく、社内の開発者を顧客とした「製品」として捉えることです。

顧客中心主義と共感

エンジニアはどうしても技術的な面白さ、最新技術の導入にフォーカスしてしまいがちです。
そうではなく、「開発者の課題を解決すること」に焦点を当てます。開発者の痛みを理解し、彼らが本当に必要としているものを見つけ出す共感が必要です。

キュレーション(目利き)の精神

顧客の要望をすべてそのまま実装する御用聞きになってはいけません。何でもできる汎用的なものではなく、組織のニーズに合わせて選択肢を絞り込み、使いやすい「舗装された道」を提供するという意志が必要です。
「舗装された道」とは、開発者が迷わず、安全に、素早くリリースできるよう整備されたツールやテンプレート群です。

ノーと言う勇気

製品としての整合性を保つために、戦略に合わない要望には妥協せず、あるいは代替案を提示しつつ断る姿勢が求められます。
ここで注意しなければならないのは、ノーという言葉の強さです。上で述べた通り開発者の痛みを理解し共感することは忘れてはいけません。「No」ではなく「Yes,and」の精神で、代替案を示すことが重要です。

2. ソフトウェアとシステムのハイブリッド思考

Platform Engineering チームは、Dev とも Ops とも異なるバランス感覚が求められます。

自動化と抽象化への渇望

手動作業やトイルを嫌い、コードを書いて問題を解決しようとするソフトウェアエンジニアのマインドセットが必要です。インフラを単に管理するのではなく、抽象化を作り出すことに情熱を持つべきです。
手作業を嫌う考え方は "No human labor is no human error" にも通じます。

運用責任の受容

「You Build It, You Run It」 の精神は Platform Engineering にも当てはまります。
開発者は自分のコードと無関係な下位レイヤーの複雑性や障害対応を嫌います。これらはプラットフォームで抽象化し吸収します。
Platform Engineering チームは提供するプラットフォームに対する運用の責任を持つ必要があります。
そして、双方が深夜のオンコールや地味なメンテナンス作業も、信頼構築のために不可欠な業務として受け入れる姿勢が求められます。

3. フェーズに応じた「開拓者・定住者・都市計画家」の使い分け

プラットフォームの成長段階に応じてマインドセットを切り替えます。
常に新しいものを作ることだけに固執せず、プラットフォームの熟練度に応じてマインドセットを使い分け、ときには地道な道を選ぶ忍耐強さが求められます。

  • 開拓者(Pioneers): 不確実性が高い初期段階で、失敗を恐れず、素早くプロトタイプを作り、新しい概念を探求するマインドセット。スクラップ&ビルドを厭わない姿勢です。
  • 定住者(Settlers): プロトタイプを、より多くの人が使える有用な製品に変えるマインドセット。信頼性を高め、理解を深め、製品として成立させます。
  • 都市計画家(Town Planners): 規模の経済を活かし、システムを産業化・標準化するマインドセット。効率、経済性、スピードを追求し、堅牢な基盤を構築します。

4. 長期的視点と忍耐

プラットフォームの構築は、短期間で結果が出るものではありません。
プラットフォームの構築や既存ツールからの移行には数カ月かかることもあります。その間、地道に価値を積み上げ続ける忍耐強さが求められます。

既存ツールから新しいプラットフォームへの移行は、開発者にとって負担となることがあります。
移行プロセス自体を自動化するなどといった工夫を凝らし、開発者の負担を最小限に抑える努力が必要です。

Platform Engineering 導入の罠

Platform Engineering は、伝統的な「共通基盤」として捉えられてしまうことがあります。
マインドセットを理解してもらえると明確だと思いますが、単なる共通基盤の提供ではありません。
開発者の認知負荷を軽減することが最大の価値です。これを使えば楽になる、と思ってもらえることでプラットフォームの利用が促進されます。
また、良いものを作れば使ってもらえる、というのは幻想です。積極的な普及活動も必要です。

参考資料

https://tag-app-delivery.cncf.io/ja/wgs/platforms/whitepaper/

https://www.oreilly.co.jp/books/9784814401413/

Discussion