コンテンツに移動
Anthos

Redbox が GKE と Anthos のマルチクラスタ Ingress でクラスタ間のサービスの復元力と可用性を向上させた方法

2022年6月22日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 6 月 11 日に、Google Cloud blog に投稿されたものの抄訳です。

米国では、国中のさまざまな店舗で赤色の映画レンタル ボックスを頻繁に目にします。この映画レンタル ボックスやオンデマンド エンターテイメントを提供している企業が Redbox です。

Redbox のクラウドネイティブへの取り組みは、マイクロサービスを他社のクラウド プロバイダで 1 つのリージョンにデプロイするところから始まりました。このデプロイは、主にそのリージョン内の 1 つのコンピューティング クラスタ上で実施されました。ビジネスの需要に伴い、Redbox はマルチリージョンへのデプロイ(東部および西部)が必要であるという結論に至りました。マイクロサービスに同じアプリケーション アーキテクチャを活用しつつ、東部および西部 2 つのリージョンにそのアプリケーションをデプロイするというものです。トラフィックのほとんどは東部から送信されていましたが、西部からの送信量も増加しており、マルチリージョン ソリューションを確立してお客様のトラフィックを効果的に処理することが同社にとってますます重要になっていました。この問題をどのように解決したのか、Redbox の Lin Meyer 氏にお話を伺いました。

従来のマルチクラスタ ソリューションで解決できなかった課題とは?

Redbox は通常、シングル リージョン アーキテクチャを使用してアプリケーション稼働率 99% を実現していましたが、マルチリージョン アプローチを採用することでこの稼働率を 99.9% に引き上げたいと考えていました。主に夜の時間帯と週末にストリーミング サービスへの需要が高まることが原因で、可用性に問題が発生していたためです。マルチリージョンやマルチクラスタのソリューションについて調査し始めたものの、すぐに既存のツールセットには重要な課題が複数存在することに気がつきました。

  1. トラフィック管理の問題。トラフィックをクラスタ間で移行するというアプローチもありましたが、それを実行する権限の多くはオペレーター個人に委ねられていました。アプリケーションやインフラストラクチャによる利用可能なクラスタへのルーティングが失敗した場合、その環境のオペレーターがテレメトリーを使用してトラフィック管理ルールを構成することになっていました。

  2. 複雑さ。このクラウド プロバイダで当時利用できたオプションは、Redbox が求めていたマルチクラスタ トポロジを実現するため、さまざまなクラウド サブシステム間(ネットワーキング、セキュリティ、コンピューティングなど)の数多くのカスタム スクリプト、エンジニアリング、構成に依存していました。

GKE、Anthos、マルチクラスタ Ingress を選んだ理由は?

特にこの可用性の問題に対処するため、Redbox は 2019 年後半からマネージド Kubernetes サービスの調査を開始しました。Kubernetes を調査して、このマルチリージョンのニーズに対応するソリューションが組み込まれているか確認しました。まず、マルチクラスタの要件を達成するより洗練された方法があるかどうかを確認するために、他のクラウド マネージド サービスを調べることから着手しました。この調査の評価に基づいて、次の 2 つの理由から現行のソリューションでは機能しないと結論付けました。

  1. プラットフォームの構築に他のプラットフォームが必要。調査の結果、他のマネージド Kubernetes サービスでは、プラットフォームで他の機能を構築する必要があることが判明しました。たとえば、ノード自動スケーリング機能などです。対処する方法はありましたが、クラスタ オペレーターによってこれらのサービスを使用してベースクラスタを構成することが想定されていました。Redbox が求めていたのは、こうしたインフラストラクチャ レベルのアドオンを利用できる、もしくは簡単に有効化できるマネージド サービスだったのです。

  2. 専用マルチクラスタ / リージョン ソリューションの欠如。DNS サービスを使用してこの機能を導入することも考えられましたが、DIY 要素が強く、専用のマルチクラスタ ソリューションでもないため、多くのエンジニアリング作業を要し、ソリューション自体も不安定なものになる可能性がありました。理想的には、より洗練された高度なマルチクラスタ ソリューションを求めていました。

GKE を検討し始めてすぐに、マルチクラスタ Service(MCS)とマルチクラスタ Ingress(MCI)サービスについて知り、これこそが Redbox のマルチリージョン要件を真に満たし得るものだと考えました。GKE 自体に感銘を受けたのはもちろんですが、Redbox が GKE を検討するきっかけを作った主な要因は MCI と MCS にありました。

マルチクラスタ Ingress とマルチクラスタ Service の恩恵とは?

Redbox が MCS を選択した理由はいくつかあります。

  1. 専用サービス。多くのエンジニアリング作業を必要とする他のアプローチとは異なり、このサービスはフルマネージドされたものであるため、オペレーターは業務の複雑さやエンジニアリングの労力から開放されました。DevOps チームはこの機能を有効にするために必要なサービスに集中でき、MCS および MCI の管理者はネットワーキングとロード バランシングの基盤となる部分について細かい点を担当できました。この抽象化レベルこそ、Redbox チームが探し求めていたものでした。

  2. 宣言型の構成。MCS サービスは YAML の使用をサポートしているため、Kubernetes ベースの他のアーティファクトとの連携が非常に円滑になりました。コンソール上で多くの項目を操作して更新するという作業が不要になることから、Redbox にとって望ましいアプローチでした。また、CI / CD ツールチェーンとも非常に相性が良く、構成のバージョン管理もかなり簡単なものになりました。

Redbox チームは、いくつかの API をプロジェクト レベルで有効にすることでサービスの開発を非常に迅速に進めることができ、MCS サービスを立ち上げて数日のうちにトラフィックを受け入れることができました。その翌週中にはすべてのフェイルオーバー負荷テストを完了し、2 週間ですべてを立ち上げて本番環境にデプロイできました。


https://storage.googleapis.com/gweb-cloudblog-publish/images/redbox.max-900x900.jpg

図 1: Redbox のアーキテクチャの概要。NGINX バックエンドで圧縮された外部のマルチクラスタ Ingress とマルチクラスタ Service 経由で制御される上り(内向き)のマルチリージョン / マルチクラスタ トポロジが示されている


このデプロイにより得られたメリットとは?

Redbox チームは本番環境でこのサービスを約 2 年間使用し続けています。これまでに実感している主なメリットは次のとおりです。

  1. 可用性。このサービスにより、アプリケーションの可用性と稼働時間が大幅に向上しました。MCS サービスを活用するだけで、Redbox サービスに対し 99.99% の可用性を実現しています。MCI サービスにより、問題発生時のクラスタ間でのフェイルオーバーがシームレスに実行されるため、エンドユーザーのアプリケーションが停止することはほぼありません。

  2. シンプルなデプロイ。MCS サービスをネイティブの Kubernetes オブジェクトとしてサポートすることで、DevOps チームは構成デプロイの標準的なプロセスとして、マルチリージョン デプロイ用のサービスの宣言型の構成を含めることができます。  

  3. 定期メンテナンス。MCS サービスを導入したことで、DevOps チームがダウンタイムなしでリージョン クラスタ上での定期メンテナンスを実行できるというメリットも得られました。たとえば、現在チームは各クラスタで Istio を実行しており、Istio をアップグレードするには基本的にクラスタのアップグレードとアプリケーションの再起動が必要です。MCS によりアプリケーションの可用性が保証され続けるため、ダウンタイムなしでメンテンス作業を実行することができます。これにより、稼働時間が大幅に増加しました。

  4. サービス間通信。MCS により、サービス間通信用のデータパスも大幅に改善されています。現在 Redbox は、データのカテゴリ(PCI と非 PCI)ごとに分割された複数の環境を実行しています。PCI および非 PCI クラスタ用に 1 つの GKE フリートをデプロイしてから、MCS を使用してマルチリージョン方式でサービスを公開することで、MCS エンドポイントを介した PCI サービスと非 PCI サービスの通信が可能になりました。これにより、MCS がマルチクラスタ Service 用のサービス レジストリとして機能し、サービス エンドポイントの検出と呼び出しがシームレスに処理されます。また、内部または外部ロードバランサを経由することなくサービス同士が接続されることにより、さらに効率的なデータパスが提供されます。

まとめ

Redbox は、DVD の自動レンタルボックス ビジネスと急速に拡大しているデジタル ストリーミング サービスのニーズを満たすために、インフラストラクチャとデプロイ プラットフォームのモダナイズが必要であることを認識していました。迅速かつ安全にデプロイする方法を模索するなかで、Google Kubernetes Engine に出会い、マルチクラスタ Ingress とマルチクラスタ Service の使用を選択し、複数の GCP リージョンでお客様向けアプリケーションをホストしました。GKE や MCI を活用することで、Redbox は新しい機能や製品をこれまで以上に迅速にお客様に提供しながら、クラウドへのデジタル トランスフォーメーションを継続することができています。MCI によりトラフィックは使用可能な最も近いクラスタに直ちにルーティングされるため、信頼性の向上と応答時間の短縮も実現しています。

Anthos や MCI の詳細については、https://cloud.google.com/anthos をご覧ください。

- Google Cloud カスタマー エンジニア Guna Vijayaratnam
- Redbox クラウド DevOps 担当マネージャー Lin Meyer 氏

投稿先