📝

なんとなーくわかる Platform Engineeringとは

2024/11/03に公開

はじめに

Platform Engineeringとは、昨今のクラウドネイティブやDevOpsの普及の中で登場してきた開発者に降りかかる認知負荷の軽減と、生産性の向上を目的とした活動です。

  • Platform Engineeringが登場してきた背景
  • Platform Engineeringとは何か

この記事は、私がPlatform Engineeringを理解するために調べたり学習した内容を、上記を軸に備忘録としてまとめたものとなります。この記事を通してなんとなーくPlatform Engineeringの理解が深まる助けになると幸いです。

各所より引用などさせていただいてるので、抜け漏れなどありましたら大変申し訳ございません...。

ガートナーのハイプサイクル

まずは、みなさん大好きガートナーのハイプサイクルを覗いてみましょう。

先進テクノロジーのハイプサイクル:2023年

現在ピーク期かつ5-10年以内にはクラウドネイティブがモダンな開発手法となっているそうです。

image

ソフトウェアエンジニアリングのハイプサイクル:2023年

こちらでは、プラットフォーム エンジニアリングが2-5年以内に定常的に採用されることが予想されています

image

Cloud NativeとDevOps

昨今のシステム構成は、Cloud NativeとDevOpsとは切っても切れない関係になってると感じてます。そこで、二つについてものすごーく簡単に紹介しておきます。

Cloud Nativeとは、

クラウドの小さくはじめて・素早く・柔軟にデプロイできる利点を活用したシステムの設計/構成のこと

DevOpsとは、

ソフトウェアの開発と運用を柔軟で迅速に実施し、かつイテレーティブにアップデートしていくようなアプローチ

- 自動化
- 継続的インテグレーション(CI)
- 継続的デリバリー(CD)
- 計測とフィードバック

効率的なDevOpsの実現 => Platform Engineeringの登場

  • クラウドの登場により、システムはよりモダンな設計/構成に(=クラウドネイティブ)
    • クラウドの利点を活かした開発アプローチであるDevOpsが普及
  • クラウドが普及し、多様なソフトウェアが登場する中、開発者の抱える認知負荷(後述します)は年々と増加傾向にある

上記のような背景から効率的なDevOpsを実現するべく登場してきたのがPlatform Engineeringなのです。

ではPlatform Engineeringとは何か?

Gartnerより引用

本文

Platform engineering has emerged in response to this increasing cognitive load resulting from the complexity of modern software tools and architectures. It centers on building pathways or platforms that ease the burden on developers, which, in turn, releases the productivity of software engineering teams and improves the developer experience.

日本語訳

プラットフォーム エンジニアリングは、現代のソフトウェア ツールとアーキテクチャの複雑さによって増大する認知負荷に対応するために登場しました。開発者の負担を軽減するパスまたはプラットフォームの構築に重点が置かれ、 その結果、ソフトウェア エンジニアリング チームの生産性が向上し、開発者のエクスペリエンスが向上します

platformengineering.orgより引用

本文

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.

日本語訳

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

上記を雑にかみ砕くと (※個人の解釈)

開発者向けの情シス的支援を目的とした共通基盤をプロダクトとして運用していく取り組み】かなーと解釈してます。


開発者向けセルフサービス型の共通基盤がなぜ必要か?

クラウド&DevOpsの登場

「時代はクラウドネイティブだからDevOps推進しようぜ!」と決心するも、登場人物はこんなにもいます...。

image

CLOUD NATIVE LANDSCAPEより抜粋

クラウドの登場 => Devopsの推進 => 認知負荷の増大化

前述していたように、多様なソフトウェアの登場により、私たちエンジニアの抱える認知負荷は日に日に増え続けています。

image

Platform Engineering 101: What You Need to Know about This Hot New Trendから抜粋


認知負荷とは

では、さきほどから登場している認知負荷とは何でしょうか?
認知負荷とは、

  • 「人間の認知アーキテクチャの能力と限界」を出発点とした、効果的な学習デザインを考案するための理論
  • 人間の頭の中で一度に処理できる情報量には限界があることを前提としている
  • 3種類の負荷が存在

認知負荷理論についての詳細はこちらの方の記事を参照いただくと詳しく解説されています。

3種の認知負荷

  • 課題内在的負荷 (Intrinsic cognitive load)
    • 学習対象そのものの難易度により生じる負荷
    • 学習者の既有知識や習熟度によって増減する
  • 課題外在的負荷 (Extraneous cognitive load)
    • 学習以外(指導者や教材)の難易度により生じる負荷
    • 学習に無関係であり、余計な負荷
  • 学習関連負荷 (Germane cognitive load)
    • 学習目標の達成のための認知活動により生じる負荷

いかに、課題内在的負荷と課題外在的負荷をできる限り低減させ、学習関連負荷の割合を増やして生産的な学習をするかが今後重要になってきます。

Platform Engineeringの目的

開発者に降りかかる認知負荷の軽減と、生産性の向上を目指し、
開発者を向けのセルフサービス型の基盤を提供する活動

Internal Developer PortalとInternal Developer Platform

ここで、 Platform Engineeringの推進でキーとなるInternal Developer PlatformInternal Developer Portalの紹介です。

Internal Developer Platform

  • アプリケーションが動作する環境を抽象化(わかりやすく)したもの
  • 開発者が必要とする機能や仕組みをプラットフォームチームは整備する
  • 開発者が「自分で構築して実行する」DevOpsを効果的に実現するもの

Internal Developer Portal

  • 開発者がプラットフォームを操作するためのUI
  • 開発者ポータルによってセルフサービスでの利用を実現する

image

Backstageで始める新たな開発者体験より抜粋

Internal Developer Portalの代表例: Backstage

Internal Developer Portalの代表例として挙げられることの多いBackstageについても軽く紹介しておきます。

image

  • インフラ全体を網羅することを目的にSpotify社が開発した開発者向けポータルのOSS
  • 2020年にCloud Native Computing Foundationに寄贈されている
  • 下記のような機能で構成される
    • Template
      • 社内標準の構成をテンプレート化することで、開発者は効率よくサービスを作成できる
    • Catalog
      • 社内のアプリケーションをカタログ化して一覧表示する
    • TechDocs
      • Markdown形式のドキュメントを一元管理する
    • Plug-in
      • 拡張可能なプラグインを用いて、自社にあったツールやサービスを統合できる

Backstageを使うことで多様なインフラツールの抽象化を実現し、開発者は各種ツールに対して深い知識を持たなくとも、安全かつ迅速にシステムを構築、スケールアップすることができます。

まとめ

  • Platform Engineeringは開発者に降りかかる認知負荷の軽減と、生産性の向上を目指し、
    開発者向けのセルフサービス型の基盤を提供する活動
  • Internal Developer Platformはアプリケーションが動作する環境を抽象化(わかりやすく)したもの
  • Internal Developer Portalは開発者がプラットフォームを操作するためのUI
  • Internal Developer Portalの代表例の1つがBackstage

Discussion