The Modernization Imperative: シフトレフトはもうやめて、シフトダウンに移行する
Google Cloud Japan Team
※この投稿は米国時間 2023 年 6 月 9 日に、Google Cloud blog に投稿されたものの抄訳です。
本日の投稿は「The Modernization Imperative」シリーズ、略して「TMI」の第 1 回です。この略語は私たちのミッション、つまりテクノロジーに関するあらゆる情報を、熱意を込めて過度に共有すること(TMI: Too Much Information)を完璧に表しています。Google Cloud のリーダーたちが執筆するこのコラムでは、ソフトウェア開発、分散システム、サーバーレス、マイクロサービス、DevOps と SRE、プラットフォーム運用など、コラムニストの想像力を刺激する最新の流行語について取り上げます。今回のコラムニストは、Google Cloud のモダン インフラストラクチャ チームでアウトバウンド戦略およびエンゲージメント担当ディレクターを務める Richard Seroter です。彼は、ほぼ 20 年間、これらのトピックについて思考を巡らせてきました。最新のインフラストラクチャに関しては「情報が多すぎる」ことはないという点を念頭に置いて、記事をお楽しみください。
10 歳の少年だった頃、私は、凍えそうに冷え切った車の運転席にひとり座り、王様のような気分になっていました。「見て、僕運転してる!」と、隣に座る空想の乗客に向かって叫んだものです。その後何年も経って、母親が巧妙な方法で、私に車のエンジンを「かけさせてくれていた」ことに気づきました。自分の驚異的に素晴らしい運転技術に夢中になっていた私は、母親がやりたくない作業、つまり朝の通勤のために車のエンジンを暖める作業を自分が代わりにしていたことに気づかなかったのです。
現在も似たようなものですが、意識してやっているという点が変わりました。現在は 40 代ですが、食料品店のセルフレジでタッチ スクリーンを夢中になって押し、「種なしブドウ」のコードを探しながら、自分の商品をスキャンして買い物バッグに詰めるという「特権」を楽しんでいます。
私の母親や地元の店舗のケースでも、ソフトウェア開発に関しても、ワークロードをグループ間で再分散することはリソース最適化における重要なステップです。現在、開発者には「シフトレフト」して進化する手法に適応するよう伝えています。しかし、それは大変な重荷です。開発者の負担を増やすのではなく、開発者が利用できる豊富なツールとサービスを活用することで、その才能を最大限に引き出すことができます。
開発プロセスでセキュリティ レビューと QA レビューを前倒しして組み込む手法、「シフトレフト」は確かに優れたアイデアです。しかし、過去数年間、従来は開発者の業務ではなかった種類の作業が「フルスタック エンジニア」に権限を与えるという名目で「シフトレフト」され、開発者がそれらの作業を担当してきました。この状況に終止符を打つ必要があります。
[補足: 真の「フルスタック エンジニア」は、この地球上にほとんどいないように思えます。React でのフロントエンドの記述、Kubernetes の設定、RabbitMQ インスタンスの構成、SAN でのスペースのプロビジョニング、トップオブラック スイッチの設置といった作業すべてに 1 人で対応できるというエンジニアは、実質的に存在しないでしょう。現代の開発者は、ウェブ フレームワーク、アーキテクチャ パターン、テスト戦略、ビルドシステム、複数の種類のデータベース、キャッシュ、自動化ツール、コンテナ オーケストレータ、L4~L7 のネットワーキング コンセプト、SaaS API、モニタリング システム、多数のパブリック クラウドなどに関するさまざまな知識、そしておそらくは ML についてもある程度の知識を持つことを求められています。求人サイトの Indeed.com を少し検索してみましたが、ジュニアレベルとシニアレベルの開発者に求める条件を見て驚きました。あまりにも多すぎます。]
シフトダウン!
業界全体での支援が必要です。まず、開発者(そしてそのマネージャー)にすべてをシフトレフトするよう指示するのではなく、利用できるあらゆるテクノロジーを活用して、すでに使用しているプラットフォームに、より多くのワークロードをプッシュダウンすることで「シフトダウン」するよう推奨する必要があります。技術スタックを圧縮するのです。職務遂行のために、あまりにも多くの知識を求めてはいけません。プラットフォームを抽象化しましょう。最近、あるお客様に Google の DevOps の手法についてお話しする際に、エンジニアに提供しているプラットフォームの数を強調して説明しました。Google は、コーディング、テスト、ビルド、リリース、ロールアウト、ホスティング、アラートなどを対象としたマネージド エクスペリエンスを提供しています。Google の専門チームがこれらの重要なプラットフォームをサポートするため、プロダクト エンジニアはインフラストラクチャの「フルスタック」を把握または運用せずに、自らが遂行すべき業務に集中できます。すべての組織が同じことをすべきです。
テクノロジー リーダーに必要なのは、新しい言語、プラットフォーム、クラウドの習得など、より多くのことを現在のエンジニアリング リソースに求めることではなく、プラットフォームをプロダクトのように扱うプラットフォーム エンジニアリング チームを立ち上げることです。最適化は、開発者の認知負荷を削減し、そのイノベーションを妨げる不要な職務を取り除くことから始まります。同時に、AI と大規模言語モデル(LLM)の力を活用するために必要なツールとインフラストラクチャを提供することで、開発者は疲労困憊せずに革新を押し進めることができるようになります。現在、誰もがプラットフォーム エンジニアリングに携われるようにコーチングと参考資料の拡充に取り組んでいますので、今後の情報にご注目ください。
オピニオンを介した支援
クラウド プロバイダとして可能な 2 つ目の対応は、プロダクトにオピニオンを反映させることです。職務を遂行するために幅広いプロダクトとサービスを使用したいと開発者が考えたとしても、それが可能なのは、インフラストラクチャ管理の負担を共有する「シフトダウン」の原則が浸透している環境だけです。私は GKE Autopilot が気に入っています。適切に管理された強固な Kubernetes クラスタをオンデマンドで提供してくれるうえに、ワークフローが妨害されることが一切ないからです。Kubernetes を使用する必要がある場合は、ぜひ Autopilot をお試しください。開発時間を削るクラスタのプロビジョニングにまつわる課題や悩みすべてを解消できるでしょう。安全なサプライ チェーンは必要ですが、ソフトウェア アーキテクトのサプライ チェーン レベル(SLSA)のマニフェストを解析するよう生身の人間に依頼するのはやめてください。ビルドに自動的に証明書を追加し(Cloud Build の場合と同様)、ランタイムのチェックをチェックボックス化するとよいでしょう。Google Cloud はこれに対応しています。開発者に答えを求めるのではなく、デフォルトでサービスの可用性を高めています。Pub/Sub、Firestore、Spanner、Cloud Storage、Cloud Logging などの Google Cloud のサービスはすべてそれで「問題なく機能」します。より詳細なオピニオンを組み込むことで、開発者に答えを求めるのではなく、誰でもコードの CloudEvents を解析できるようにすることもできます。Generative AI App Builder などのツールを使用すると、デジタル アシスタント、カスタム検索エンジン、チャット インターフェースなどの魅力的な新しいエクスペリエンスを短期間で開発し、リリースできます。テクノロジーへの投資から最大限の成果を引き出すために使用できる、オピニオンに基づく広範なフレームワークをお客様に提供することが、(クラウド)エクスペリエンスを成功に導く鍵です。
Google Cloud は、お客様が優れたテクノロジーを活用して類を見ないソリューションを開発できるよう支援しています。このために、安全性を重視して設計されたハードウェアおよびソフトウェア エクスペリエンスを開発者に提供するツールとサービスを開発しています。これにより、多くの「シフトレフト」のベスト プラクティスをデフォルトで実装でき、開発が促進されます。ワークロードを効率的に割り当てることで、エンジニアリング リソースの可用性は高いまま維持され、それらのリソースが最も必要とされるタイミングでピークのパフォーマンスを発揮できます。
2023 年にソフトウェア開発者のポジションにいることは非常に素晴らしいと言えますが、あらゆる職業の中でも特に大きな認知負荷が伴うことも事実です。Google Cloud は、ソフトウェア ライフサイクルの中で増え続ける責任を開発チームに負わせるのではなく、持続可能で革新的なエンジニアリング文化を醸成するプラットフォーム プラクティスを確立できるよう、お客様を支援しています。「シフトダウン」の手法を取り入れ、テクノロジー スタックのメリットを最大限に活用することで、適切な構成の自動化とマネージド サービスを介してイノベーションを実現できます。私たちは AI 支援技術の新たな局面を迎えており、自然言語の chatbot を活用してリアルタイムのガイダンスを得ることで、開発者のコード作成が簡略化されるようになっています。そうしたなかで、あらゆる領域の開発者がビジネスとテクノロジーの両面で成功を促進できるよう支援を続けていきます。運転席に座っていただけのあの 10 歳の頃の私とは違って、開発者たちは実際に自分の手で道を進むことができるかもしれません。