アプリケーション開発の新潮流「プラットフォームエンジニアリング」とは?
2023年8月18日(金)渡辺 隆(ヴイエムウェア マーケティング本部 チーフストラテジスト)
読者の皆さんは「プラットフォームエンジニアリング」をご存じでしょうか。顧客にデジタルサービスを迅速・頻繁に届けるためのアプローチとして米国を中心に注目が高まっており、ガートナーも「2023年の戦略的テクノロジのトップ・トレンド」の1つに挙げています。顧客にとって価値のあるデジタルサービスを迅速かつ頻繁に提供するためには、開発者が重責を担っています。プラットフォームエンジニアリングは開発者の認知負荷を軽減しデジタルサービスのリリーススピードを高めるための取り組みとして有効な手段なのです。
プラットフォームエンジニアリングが注目される背景
2023年に入り、クラウドベンダーやDevOpsソリューションベンダー、そしてIT業界アナリストから「プラットフォームエンジニアリング(Platform Engineering)」というキーワードを聞く機会が増えています。特定技術の規格や仕様ではないので、唯一正しい定義というものは存在しませんが、多くの企業がプラットフォームエンジニアリングの定義を試みています。共通点をまとめると、以下を実現するための取り組みだと言えます。
プラットフォームエンジニアリングとは
①デジタルサービス(=アプリケーション)のより迅速なデプロイを実現する
②インフラの自動化とセルフサービス機能の提供により、開発者体験と生産性を高める
③再利用可能な標準の提供により、開発者の認知負荷(注1)を軽減する
注1:認知負荷(Cognitive Load)は、人間の脳のワーキングメモリーが処理する情報量が認知能力に与える負荷のこと。ワーキングメモリーの上限に達すると新たな情報の学習やタスクの完了が困難になる。1980年代にオーストラリアのジョン・スウェラー(John Sweller)氏が確立した認知心理学理論。
それでは、プラットフォームエンジニアリングが注目されるようになった背景から見ていきましょう。プラットフォームエンジニアリングが対象とするアプリケーションは、いわゆるSoR(Systems of Record)のような、長期にわたって開発を行う比較的変化の少ない領域ではなく、顧客とのタッチポイントとなるモバイルやWebアプリといったSoE(Systems of Engagement)の領域になります。今日これらのアプリケーションは以下の特徴を持っています。
●開発期間が短い
●顧客の要望を即座に反映する必要があるため、変更の頻度が高い
●稼働基盤にパブリッククラウドを利用することが多い
パブリッククラウドの広範な普及とDevOpsの定着により、アプリケーションのデプロイスピードは以前より高まりました。しかし近年、マイクロサービスアーキテクチャやコンテナ(Docker、Kubernetes)、IaC(Infrastructure as Code)など、モダンなアプリケーション開発・運用のためのテクノロジーが登場したことでアプリケーション開発者の業務は複雑化し、開発者の認知負荷が高まり、その結果として開発者の生産性が低下してしまうという問題が顕在化しました(図1)。
本来、開発者が行うべき業務はプログラムコードを記述し、機能をソフトウェアとしてリリースすることです。しかしながら新たなテクノロジーがもたらした複雑さにより、業務以外の作業を強いられてしまうようになったわけです。
そして重要なのは、プラットフォームエンジニアリングは、何もIT企業やソフトウェア/サービス事業者に限った取り組みではないということです。それら以外の企業・組織でも、デジタルサービスを自社の顧客に届けることがコアコンピタンスになっている今、この取り組みは業種や規模を問わず重要なテーマになりつつあるのです。
拡大画像表示
中核の取り組みは「IDP」の構築
上記の課題を解決するための取り組みがプラットフォームエンジニアリングであり、プラットフォームチームがその実装を行います。 取り組みの中核をなすのが、「社内開発者ポータル」(IDP:Internal Developer Portal)の構築です。
IDPには、米Spotifyが開発したオープンソースの「Backstage」のようなポータル画面のみならず、標準的なアプリケーションフレームワークやコードのテンプレート、ランタイムやツール、そしてKubernetesを抽象化するレイヤなども含みます。
IDPとしてどのような機能を備えるべきなのかに関しては、標準や正解というものはありません。重要なのは、自社・自組織の開発チームにとって開発作業以外の負荷がどこにあって、どんな機能を実装すれば開発生産性が高まるかという点に注力していることです。図2に一例としてのIDPの機能群を示して、以下にそれぞれの構成要素を説明します。
拡大画像表示
サービスカタログ
開発者はIDPを通じて、サービスカタログにあるコードのテンプレート、API、CI/CDパイプライン(ソフトウェアサプライチェーン)、脆弱性チェックといった機能にアクセスすることができます(画面1~3)
拡大画像表示
拡大画像表示
拡大画像表示
アプリケーションサービス
データベースやメッセージングサービス、CI/CDツール、ログ管理ツールなどのアプリケーションの開発・実行に必要な標準的なサービス群です。
クラウドネイティブランタイム(Kubernetesコントロールプレーン)
Kubernetesの上に位置する抽象化レイヤです。コンテナイメージのビルドやKubernetes設定の煩雑さを軽減し、さまざまなKubernetesディストリビューションに対してアプリケーションをデプロイするような機能を実装します。
●Next:チーム体制、推進メンバーの役割は?
会員登録(無料)が必要です
- 1
- 2
- 次へ >