Improbable、DevOps Awards で「クラウドの機能を最大限に活用」賞を受賞
Google Cloud Japan Team
※この投稿は米国時間 2023 年 7 月 22 日に、Google Cloud blog に投稿されたものの抄訳です。
Improbable Worlds Limited(通称 Improbable)は、2012 年以降、仮想世界構築の最前線に立ち続けているメタバース テクノロジー企業です。世界トップクラスのチームを擁する Improbable は、Morpheus Technology を使って没入感の高いゲーム体験やイベント体験を創出し、15,000 人を超えるユーザーが同時に同じ場所にいるかのような交流を実現しています。このブログ投稿では、2022 年の DevOps Awards で「クラウドの機能を最大限に活用」賞を獲得した Improbable による DevOps の成功事例をご紹介します。DevOps Awards の受賞者と、各受賞者が DevOps Research and Assessment(DORA)の指標と手法を活用して企業を成長させた事例の詳細については、まずこちらをご覧ください。
ビデオゲームのビルドは従来、高額なインフラストラクチャ費用を払うか、開発やその他の下流工程で長時間待つ必要がありましたが、単一の仮想環境に何万人ものユーザーを集めようとする場合、そのどちらも許されません。ゲーム業界や仮想世界を構築する企業にとって、迅速なプロトタイピングと QA は不可欠です。開発者はできるだけ早くビルドを機能させ、デプロイを実施することで、検証、フィードバック収集、イテレーション、再試行ができるようにしなければなりません。たった一度のビルドの失敗で、何百人もの開発者の作業やテストが中断する可能性があります。修正されるまで何時間も待つという選択肢はありません。そのため、当社は高速で信頼できるシステムを提供する必要があります。
スピードだけでなく、スケーラビリティと安定性も大きな問題になりつつありました。なぜなら、納期のさらなる短縮と日々のビルド要件の急増が伴う急速な拡張に、Improbable の静的で柔軟性に欠ける当初のシステムを適応させる必要があったからです。緊密に統合されたシステムに依存する古いインフラストラクチャでは、アップグレードや新機能の追加によっても 1 つの小さなシステムに障害が生じることがあり、その障害が会社のサービス全体の停止につながる可能性がありました。
お客様のニーズに応える
当社の組織では、増大する需要に対応するには、技術面の課題とプロセス面の課題の両方に取り組む必要があると考えました。また、お客様のニーズに応えるには、Windows Metaverse(ゲーム)開発のための、高速かつ安価で、信頼性とスケーラビリティが高い専用インフラストラクチャが必要でした。なお、このインフラストラクチャでは、開発者の作業を中断させないトップクラスのサポートを提供する必要もありました。
このプロジェクトの成功の鍵は、サービスとして CI / CD を導入したことです。つまり、CI / CD 開発に関するガイダンスだけでなく、以下も開発者に提供しました。
インフラストラクチャ
スクリプト
ソース管理
自動マージツール
自動リリースツール
ソリューション
このような複雑な問題には、ただコンピューティングを投入するのではなく、ビルド時間を最適化できる、より技術的に優れた複合的なソリューションが必要でした。さらに、Windows VM は、コンテナ化しないと管理が難しくなる可能性があります。また、費用が急速に増え、投資収益率が減少する可能性もあります。当社のチームは、必要な技術的ソリューションをすべてクラウドで見つけました。
Google Cloud を使用することで、安定性、スケーラビリティ、サステナビリティがより高い開発手法を構築し、最初から Google Cloud の多数のツールやサービスを統合することができました。ジョブ リクエストが届くと、Cloud Run のスケーラーが即座に応答し、可能な限り迅速にプロセスを開始します。スケーラーには、即時の応答と高速処理のための Webhook スケーラーに加え、Webhook や外部サービスに関連する問題が発生した場合のバックアップのためのポーリング スケーラーなどがあります。また、Cloud Run を構成するスケーラーは、需要に合わせて自動的にスケーリングし、高い信頼性を備えています。
単純に VM 上で直接ビルドするのではなく、Compute Engine の Windows Server for Containers イメージを利用し、ホスト VM 上でセカンダリ Windows インスタンスをコンテナとして起動しました。こうすることで、ソースコード、アセット、ビルド出力を、ホスト VM 上で動作する仮想ハードドライブ(VHD)に分離できます。ビルド中に行われた変更とビルド出力は、キャッシュに保存するか、実行終了時にコンテナを削除し、VHD を既知の状態に戻してリセットできます。これにより、ビルドの絶対的な分離と再現性がもたらされるだけでなく、次のジョブのためにビルド エージェントを素早くプールに戻すことができます。
当社の開発プロセスでは「ゴールデン イメージ」の使用も開始しています。ゴールデン イメージとは、特定のプロジェクトで実行可能なすべてのビルドの組み合わせを実行した直後の、VM の Google Cloud イメージのことです。Unreal を使用したゲームデザインの場合、デバッグ、開発、テスト、出荷用パッケージ化の各ビルド構成で使われるすべてのプラットフォーム用のビルドがこれに含まれます。また、ソース、アセット、ビルドのすべてのデータが、イメージ上の VHD においてキャッシュに保存されます。キャッシュに保存され、ゴールデン イメージ上にあるこのデータにより、リセットする既知の状態を保持したまま、次のジョブが反復的に実行されるため、処理が大幅に高速化します。
このような技術的なツールや改善により、当社の大きな課題の多くが縮小しました。とはいえ、これらの技術的なソリューションがあっても、DevOps ファーストなエンジニアリング文化も育まなければ、Improbable のデジタル トランスフォーメーションは半分しか実現しなかったでしょう。この文化的な変革で実現した注目すべき成果をいくつかご紹介します。
できるだけ早く指標を追跡し、時間を無駄にしている主な分野を特定して修正する
信頼性の高いバックアップ システム、明確なワークフロー、個別の問題に最適な対処方法に関するガイドラインにより、よりスムーズにサービス停止を軽減する
システムの冗長性を確保したヘルスチェックで、主要なシステムが期待どおりに稼働していることを確認する
チームを公正に保ち、協力的な問題解決を促進するために、ビルド時間、信頼性、費用に関する指標についてチーム間でデータを共有する
受け身の姿勢で問題が起きてから対応するのではなく、問題の発見、報告、対処に積極的に取り組む
開発者がベストを尽くせるよう、当社の組織はインフラストラクチャ費用よりも開発者の時間を優先するようになりました。リードタイムのばらつきを抑えることで、開発者のフラストレーションを軽減し、開発者が信頼性の高い平均納期に基づいて作業時間を計画できるようにしました。また、迅速な状況報告や、共有システムとコードベースの複雑さの軽減など、サービス停止を減らす手法も取り入れました。
クラウドの力
クラウドの力と集中的な DevOps の実践により、当社の組織では、費用削減と開発効率の両方において顕著な改善が見られました。毎日実行されるビルドジョブの件数は 500 件から 3,000 件以上に増え、以前は 2 回だけだったソース変更のプリフライト検証は現在 8 回になっています。費用は 1 ジョブあたり 1.7 ドルから 0.5 ドルに著しく減少しました。以前のシステムでは年間 90 万ドルかかっていたプロジェクトが、12 万ドルで同じビルド出力を実現できるようになりました。
クラウド コンピューティングの 5 つの機能すべてを導入したことで、ソフトウェア デリバリーと組織のパフォーマンスが向上しました。この 5 つの機能には次のものが含まれます。
リソースプール: 最大容量で動作する数千個の vCPU を含む何百もの VM 上でビルド リクエストを並行して実行することにより、リソースのワークロードを分散させ、処理能力を最適化します。つまり、プロジェクトやお客様が増えれば増えるほど、ビルドジョブあたりの料金は低くなります。
迅速な弾力性: VM プールを常に最適な容量に保つダブル スケーラー技術スタックにより、ビルド リクエストは 10~160 秒以内に処理されます。VM プールは、必要に応じて VM を追加したり、アイドル状態の VM を停止したりするなど、需要に合わせて動的にサイズ変更されます。
メジャード サービス: 当社は、Cloud Run で作られた bot を使用してパフォーマンスを追跡することで、SLO と機能予算の支出が予定どおりかどうかを可視化しています。この bot は、わかりやすいレポートと最新情報を投稿します。また、DataDog トレースと指標スタックを使用して、ビルド時間から成功 / 失敗率まですべてを追跡します。
オンデマンド セルフサービス: 開発者は本番環境から完全に隔離された環境で、特定のビルド リクエスト用の VM を自動的にスピンアップできるツールを使用して、阻害要因や官僚的な手続きなしに試験運用版を実行し、テストデータを収集できます。
広範なネットワーク アクセス: ゼロトラスト セキュリティ モデルによるアクセス制御とリソース管理に Cloud Identity-Aware Proxy(IAP)を使用することで、開発者はオフィスの IP や広範なキャッチオール ファイアウォールの制限を受けることなく、クラウド リソースをリモートで自由に使用できます。
このようにクラウドの力をフル活用することで、開発プロセスにおいて以下のような測定可能な改善が見られました。
デプロイの頻度: ビルドシステムのロールアウトが週に 1 回から各マージ後の実行に変わり、プロジェクト、プロダクト、そしてお客様は 1 日に何百回もメタバースをデプロイできるようになりました。
変更にかかるリードタイム: 特殊なクラウド スタックを使用することで、リードタイムは少なくとも 300% 短縮されました。プライマリ CI ビルドの平均時間は 60 分から 15 分に短縮され、メタバース デプロイのビルドは 90 分から 25 分に短縮されました。その結果、Improbable はより迅速に新機能を反復処理し、テストできるようになりました。
成功率の変化: サービス ビルド ジョブの全体的な成功率は 96% から 99.99% に、マスター ビルド ジョブの成功率は 80% から 99% になり、費用と時間の節約、特にサポートコールの減少につながりました。
サービス復旧時間: デュアル スケーラー システム、コンテナのセットアップ、その他のクラウドベースのソリューションの間で、技術的な問題のために VM のプールを完全にワイプしてスケーラーを再起動しなければならなかったことは 3 回しかありません。また、これらのサービス停止では、わずか 10 分ですべてのビルドがオンラインに復帰し、サービス提供が再開されました。
DevOps Awards 受賞者を紹介するシリーズの今後のブログ投稿にも引き続きご注目ください。DORA リサーチについて詳しくは、2022 年の State of DevOps Report をお読みください。