The Home Depot が 2,200 店舗の指標を一括表示できるようになるまで
Google Cloud Japan Team
※この投稿は米国時間 2023 年 1 月 27 日に、Google Cloud blog に投稿されたものの抄訳です。
「私たちはハンマーを購入しやすくしているのか、ただ苦労しているだけなのか?」The Home Depot では、DIY 商品やサービスを簡単に購入できる技術をデベロッパーが集中して構築できるようにすることが SRE の責任の一部となっています。そこで、あるプロセスや技術を自動化 / アウトソーシングすべきか、エンジニアが注目する必要があるかを判断するバロメーターとして、このハンマーに関する質問を使っています。
The Home Depot では、店舗、クラウド、データセンターをつなぐ、高度に分散したハイブリッドおよびマルチクラウドの IT 環境を運用しています。BigQuery に切り替えたことにより、売り上げ予測、在庫管理、パフォーマンス スコアカードの効果が向上した結果生じた変革については、こちらでご確認いただけます。ただし、高度な分析に必要なデータを収集するには、当社のシステムが稼働している必要があります。かつては、当社のすべての環境で稼働しているインフラストラクチャとアプリケーションをモニタリングすることは複雑なプロセスでした。Google Cloud Managed Service for Prometheus は、オブザーバビリティ スタックの主要コンポーネントである指標の統合に役立ちました。現在では、開発者、オペレーター、SRE、セキュリティ チームが指標を一括表示できるようになっています。
ベアメタル版 Kubernetes が稼働する 2,200 以上の店舗をモニタリング
当社は、オンプレミスのデータセンター、クラウド、そして店舗の片隅で、マネージドおよびセルフマネージドの Kubernetes を組み合わせてアプリケーションを稼働させています。実際に 2,200 以上の各店舗で、ベアメタル版 Kubernetes を動かしています。当社が扱っている膨大な数の指標を想像してみてください。たとえば、データを圧縮しなければ、各店舗からの外向きトラフィックは 20~30 Mbps になります。これらの指標を管理することは、すぐに運用上の大きな負担となりました。特に以下の点で苦労しました。
ストレージの連携: オープンソースの Prometheus は、スケーリングを考慮して設計されていません。デフォルトでは、1 台のマシン上で稼働し、そのマシン上でローカルに指標を保存します。アプリケーションが拡大していくと、1 台のマシンでは指標をスクレイピングして保存することがすぐにできなくなります。この問題に対処するには、Prometheus の指標を連携させる、つまり複数のマシンから集約して保存します。私たちは当初、オープンソース ソリューションの Thanos を使って指標を集約、保存しようとしましたが、維持するために多くのエンジニアリング リソースが必要となりました。
稼働時間: 連携が複雑になるにつれ、増大し続けるインフラストラクチャのフットプリントを維持し、連携構造が崩れるような指標の変更に対処する必要が出てきます。最終的には、指標のスクレイピング、ストレージ、クエリ サービスの稼働に特化したチームを持つことになります。そこで先ほどの質問に戻ります。SRE マネージャーとして、この指標運用は、ハンマーを購入しやすくするものなのか、アウトソーシングを検討すべき運用上の重荷なのか?
当社にとっての正解は、これらすべてにひとつのサービスを利用することでした。そして、Google Cloud Managed Service for Prometheus を選択しました。この選択により、エコシステムや柔軟性など、高く評価している Prometheus の特長(Prometheus 形式の指標を出力するアプリケーションやインフラストラクチャ、その他文字どおりあらゆるものをモニタリング可能)をすべて保持しながら、スケーリングに伴う運用上の大きな負荷を軽減することができました。
The Home Depot のオブザーバビリティを高める一括表示の作成
SRE ディレクターである私の業務のひとつに、優れたアプリケーションの作成に利用できるプロセスやツールを提供し、チームの開発者やオペレーターがより効率的に作業できるようにすることがあります。当社のオブザーバビリティ スタックは、ログ、指標、トレースを結合させて包括的に表示し、IT フットプリント全体を可視化して、根本原因の分析に必要なデータを提供します。
ログ: アプリケーションとインフラストラクチャ全体にわたって膨大な量のログを生成し、BigQuery を使用してログの保存とクエリを行っています。BigQuery の高度な検索機能により、コード ワークフローで例外が発生しても、スタック トレースを簡単に取得できます。
指標: アプリケーションとインフラストラクチャ全体の状態を常にリアルタイムでモニタリングできます。使い慣れた指標に加え、オブザーバビリティ戦略で特に有用な要素としてはエグザンプラが挙げられます。エグザンプラは、アプリケーションが生成する指標にトレース ID などのデータを追加します。エグザンプラがなければ、異なる UI 間で憶測に頼ってレイテンシなどの問題を調査しなければなりません。特定の期間の指標を確認した後、同じ期間のトレースを確認して、なんらかのイベントが発生したという結論を出すのは、非効率的で正確さに欠けます。
トレース: OpenTelemetry と OpenTracing を使用してトレースとスパンを可視化し、サービスとアプリケーションの依存関係グラフを作成しています。
The Home Depot の次の展開
当社は Google Cloud チームと密接に連携して、Managed Service for Prometheus にさらに多くの機能を組み込み、一括表示の目標を達成できるよう取り組んでいます。もうじき Google Cloud にマネージド コレクタのエグザンプラ サポートが追加されるとのことですので、当社も準備が整い次第、取り入れる予定です。また、Google Cloud は組み込みのアラートで PromQL を使用できるよう、Cloud オペレーション スイート全体での PromQL サポートの拡大にも取り組んでいます。
私は、サイト信頼性エンジニアリングと DevOps に情熱を持っている人を常に探しています。The Home Depot の求人掲示板をぜひご覧ください。また、このトピックについてさらに詳しく知りたい方は、Google Cloud チームと行ったポッドキャストをお聞きください。
- The Home Depot、サイト信頼性およびプロダクション エンジニアリング担当ディレクター Ashish Kumar 氏