Apollo24|7: 複雑なマイクロサービス アプリケーションを Google Cloud にゼロ ダウンタイムで移行
Google Cloud Japan Team
※この投稿は米国時間 2023 年 12 月 9 日に、Google Cloud blog に投稿されたものの抄訳です。
Apollo 24|7 は、インドのチェンナイに本社を置く医療法人 Apollo Hospitals のデジタル事業を展開している会社です。医療を誰にでも手ごろで利用しやすいものにすることを目標に掲げ、オンライン診察や、在宅臨床検査、オンライン薬局などの総合的なサービスを提供しており、インド国内の医療システムとしては最大規模を誇ります。
このブログ投稿では、インド国内で 24 時間 365 日利用されている重要なアプリケーションとそれに含まれる 97 種類のサービスおよび 40 超の SQL データベースを、Google Cloud にゼロ ダウンタイムで移行した方法を紹介します。
パフォーマンス、セキュリティ、信頼性を向上させて成長を後押し
パンデミックの直前に設立された Apollo 24|7 では、COVID-19(新型コロナウイルス感染症)の感染拡大によって経営陣は成長に伴う新たな課題に直面していました。高まる需要に応えるために、機能やその他もろもろの開発を猛スピードで進める必要がありました。Apollo 24|7 アプリケーションのデプロイ環境には、VM とコンテナベースが混在しています。このアプリケーションには、SQL および NoSQL の各種データベースや、Redis、VM、Kubernetes、ロードバランサ、WAF が含まれるほか、さまざまなサードパーティのパブリック エンドポイントが統合されています。
エンジニアリング部門のリーダー陣は、パンデミック後の成長にも対応するために Apollo 24|7 を見直す良い機会と捉え、特にパフォーマンス、セキュリティ、信頼性に改善の余地を見出していました。また、最新の自動化と Infrastructure as Code(IaC)を取り入れて、堅牢性とスケーラビリティを高めたいと考えました。さらに、費用効率を全体的に改善し、大衆に手ごろな価格で医療を提供する重要性も高まっていました。ただし、当社のアプリケーションは数百万のアクティブ ユーザーを抱えているため、ダウンタイムをゼロにして、ユーザー エクスペリエンスに影響が出ないようにしなければなりませんでした。
これらの要件やニーズにスムーズに応えるため、受賞歴のある Google Cloud パートナーの Searce 社と緊密に連携して一大プロジェクトに取り組みました。プロジェクト全体を通じて、Apollo 24|7、Searce、Google Cloud の各チームが相互に協力し、開発、テスト、デプロイ、モニタリングにあたったことが、移行の成功に大きく貢献しました。
Searce 社は当社の拡張チームとして、貴重な専門知識やサポートを一貫して提供してくれました。
ゼロ ダウンタイムでフルスタック移行を達成
プロジェクトの目標は、アプリケーション全体を Google Cloud にゼロ ダウンタイムで移行することでした。移行の対象には、品質保証(QA)、本番前環境、本番環境が含まれます。
プロジェクトは以下の手順で進めました。
- DORA の調査に続いて CAST の評価を実施
- 移行ウェーブと依存関係グラフを作成、脆弱なライブラリを修復
- Google Cloud 上にエンタープライズ グレードのランディング ゾーンを作成、セキュリティ体制の管理を有効化
- VM、GKE クラスタ、Cloud SQL、Redis インスタンスをデプロイ
- 全サービス用の CI / CD パイプラインを作成
- Google Cloud 上にサービスおよびその依存関係をデプロイ
- Google Cloud Marketplace を介して ISV サービスを有効化
- ソース データベース(DB)と Cloud SQL 間に変更データ キャプチャ(CDC)を設定
- Google Cloud へのトラフィックをサービス間で分割してから、Google Cloud に最終的にカットオーバー
QA 環境は、CI / CD パイプライン、Terraform スクリプト、その他さまざまな必須リソースを作成した後で、Google Cloud 上に直接デプロイしました。
次の環境に移る際には本番前環境を使用しました。これは、本番環境のレプリカで、本番環境よりもトラフィックと容量が少ない環境です。このレプリカを使って本番環境への移行シミュレーションを行うことで、アプリケーションに含まれるサービスごとに適切な標準作業手順書(SOP)を作成できます。さらに、サービスの詳細な依存関係を作成し、旧ロケーションと Google Cloud の間でトラフィックを分割して、サービスに応じて 1~10% 程度のトラフィックを Google Cloud に送信して機能のエンドツーエンド テストを実行しました。最後に、Google Cloud 上のソースとターゲットのデータベース間に CDC を設定し、全トラフィックを Google Cloud に切り替えて、移行のカットオーバーを完了しました。
本番前環境ではさまざまな学びがあり、それを活かして本番環境への移行に臨みました。しかし移行当日は、支払いなどのサードパーティ サービスと統合している少数のサービスで Identity and Access Management(IAM)関連の問題が発生しました。GKE で部分的にサービスをデプロイしている間、サービスの Pod とソース ロケーションの DB 間の通信は、インターネットや VPN トンネル経由で行いました。そのため、パケット ドロップを回避するために、帯域幅のモニタリングと NAT ゲートウェイのポート割り当てを注意深くモニタリングする必要がありました。トラフィックを分割する利点は、なんらかの問題が発生した場合、すべてのトラフィックを Google Cloud から迂回できることです。これにより、真にゼロ ダウンタイムの移行を達成することが可能となりました。


この移行プロジェクトの主な成果は以下のとおりです。
- ゲートウェイと Ingress コントローラの両方を備えた 3 つの GKE クラスタ上に、97 種類のサービスを移行
- 22 個の Redis インスタンス、Cloud Functions、Pub/Sub、Kafka をデプロイ
- 静的コンテンツを Cloud CDN に移行
- Cloud Armor を実装して WAF、DDoS、Security Command Center Premium に対応
- Aiven マネージド Kafka や MongoDB などの Marketplace サービスを選定
- 本番環境のトラフィックを旧ロケーションと Google Cloud の間で分割し、ゼロ ダウンタイムを達成
- CDC を使って、40 超のデータベース インスタンス(MySQL、PostgreSQL)を CloudSQL に移行
- 2 TB 以上のオブジェクトを Google Cloud に転送
アジリティとセキュリティを向上させながら運用費用を削減
Google Cloud へのアプリケーション移行は成功を収め、GKE や Cloud SQL へのアクセス時のパフォーマンスやレイテンシの改善など、数々のメリットがもたらされました。モノリシックなコードから脱してアーキテクチャを根本的に改善したほか、確約利用割引(CUD)料金、Google Cloud の秒単位の課金、オンデマンド リソース、カスタムサイズの VM によって、費用削減を達成しました。
Terraform を使って Infrastructure as Code(IaC)を導入することで、サービスを効率良くデプロイするとともにエラーの余地を大幅に減らし、アジリティとパフォーマンスを改善できました。さらに、このデプロイ方法では既存の IAM ポリシーの不備を特定し、セキュリティを改善できます。このプロジェクトを通じて、Google のセキュリティ原則に基づいた徹底的なクリーンアップを実施できました。
今後の展望
Apollo 24|7 は Google Cloud のコンサルティング AI チームと共同開発した臨床決断支援システム(CDSS)に続いて、AI によるソリューションでのパートナーシップをさらに拡大しています。現在、Ask Apollo およびそれに続くシステムに Med-PaLM 2 の生成 AI モデルを組み込んでいるところです。
Google と Apollo 24|7 は今後もパートナーシップを継続し、インドの医療変革を推進していく所存です。また、Apollo 24|7 のコア アプリケーションで威力を発揮してくれた Google Cloud を、マーケティング、サプライ チェーン、カスタマー サービスなどの分野にも取り入れていきたいと考えています。
-Google Cloud インド、カスタマー エンジニア Nishu Saxena
-Apollo 24|7、エンジニアリング担当アシスタント バイス プレジデント Prabhat Sharma 氏