全国民へのワクチン接種: Cloud Spanner の活用によりワクチン接種予約アプリをわずか 30 日で納品
Google Cloud Japan Team
※この投稿は米国時間 2022 年 4 月 22 日に、Google Cloud blog に投稿されたものの抄訳です。
クラウド コンピューティング ソリューションのプロバイダとしてポーランドで最も高い専門性を誇る Chmura Krajowa(OChK)は、ポーランドのビジネスや公共機関のデジタル トランスフォーメーションを促進する取り組みを行っています。2020 年 11 月、ポーランド政府は、ある手ごわい課題を OChK に依頼しました。ポーランドの全国民に対する COVID-19(新型コロナウイルス感染症)のワクチン提供をサポートするためのアプリケーションを、30 日以内に一から設計しデプロイするというものです。Cloud Spanner のような Google Cloud のプロダクトを使用してアプリケーションを構築し、目標を達成したことで、新型コロナウイルスのパンデミックに対するポーランド国民の防御がより堅固なものになりました。
課題の定義
OChK は、国民、政府、メディアなどが注目する中、期待通りに動き、エラーやダウンタイムなしで稼働するアプリケーションを提供するという、かなり大きな重圧にさらされていました。
ワクチン接種プログラムのビジネス要件は、絶えず変化する状況に応じて進化を続けていたため、きわめて迅速にシステムを修正する必要がありました。時間面でのプレッシャーは非常に大きく、変更や新しい機能の導入は数時間ほどで行っていました。
このソリューションでは、3 つのシステムを 1 つのプラットフォームにまとめることが求められました。
1 つは、9,000 のワクチン接種会場で働く 10 万人の医療従事者向けのシステムで、各会場独自のカレンダーを運用し、ワクチン接種スケジュールを管理します。このシステムは複雑でした。ワクチンは複数回接種しなければならないことが多いうえ、年齢やその時々の実際の法制度に応じて接種希望者が異なるワクチンを選択できるからです。
もう 1 つは、コールセンター向けのシステムです。ここでは、電話をかけてきた人のためにオペレーターが接種の予約を行います。ピーク時は、約 2,000 人のオペレーターが 24 時間体制でシフト勤務し、ポーランド全土からの電話に対応していました。
最後の 1 つは、3,600 万人の要件を満たすユーザーがウェブ、モバイル デバイス、SMS のゲートウェイ、インタラクティブ音声レスポンス(IVR)からオンライン接続し、全国規模の認証スキームを使用して予約を取るためのシステムで、フォローアップの治療やリソースへのアクセスもここから行います。
3,600 万人の接種要件を満たすユーザー向けの 3 つ目のシステムは、スケーラビリティの要件の予測が困難でした。政府は、専門の医療従事者およびコールセンターのオペレーターの人数や行動については計画を立てることができましたが、世界規模でのパンデミックがピークに達する中で、予約を試みる国民の人数や行動は計画できませんでした。この取り組みは、ワクチンの提供が進み接種要件を満たす人の数が増え、インターネットやテクノロジーに精通した接種対象者も増えるにつれ、難易度が増していきました。接種対象が拡大された日には、限られた予約枠を確保していち早くワクチン接種を受けようと、大勢の国民が殺到しました。
Google Cloud との連携
これほどまでに短い期間でプロジェクトを成功させるためには、経験を積んだ有能なクラウド プロバイダと協力する必要がありました。OChK ではこれまでに保健省のプロジェクトで Google と連携した経験があったため、Google Cloud との連携は一番確実で、無理のない選択肢でした。インフラストラクチャやスケーラビリティに関する要件を Google に実質的にすべて任せることができ、その間に OChK ではプロジェクトの詳細に集中することができました。
Google ネイティブの Go プログラミング言語を使用して、Google Cloud ソリューションを幅広く導入し、アプリケーションを構築しました。たとえば、ワクチン接種会場スタッフのスケジュール設定や、外部サービスおよびウェブからのリクエストといったバックエンド サービスには、Google Kubernetes Engine(GKE)を活用しました。
Spanner はアプリケーションのアーキテクチャで主要な役割を担い、以下のようなプロジェクトの特に重要なニーズを満たしました。
メンテナンスによるダウンタイムを避けられる高可用性。
トランザクションが多い予約システムの性質に対応した、いつでもユーザー全員に同じデータが表示される強整合性。
何百万もの国民が使用できるように設計されたプログラムの需要を満たす、水平方向のスケーラビリティ。
この 3 つのニーズの中で最も重要なのは、スケーラビリティでした。トラフィックのピーク時でも、データベースのスケーラビリティを心配する必要がないとわかっていたので、安心できました。
ソリューションの構築
Spanner のデータベース スキーマは、30 のテーブルで構成されています。各接種会場のカレンダーの定義や予約枠の指定に使用されているテーブルなど、一部のテーブルは特に重要です。接種会場にいる保健省の職員が、OChK が提供したバックオフィス向けのシステムを使用して、指定期間内の予約枠を作成する業務を行っています。このテーブルのデータの量は、毎秒数千行の速さで増えていき、すぐに数億行にまで膨れ上がりました。
一連の Google Cloud データ ソリューションのインテグレーション
アプリケーション スタック内のその他の Google プロダクトには、キャッシュ保存、ユーザー セッションの保存、レート制限のための、Memorystore for Redis が含まれています。素早く変化してしまう利用可能な枠のキャッシュ保存は実行不可能でしたが、与えられた基準に対して該当がない場合の検索結果をキャッシュすることは簡単で、ユーザーが検索した会場にその時点で空きがなかった場合、一時的にその情報をキャッシュすることでレスポンスを早めることができます。
またスタックでは、非同期メッセージングのために Pub/Sub を、アプリケーションの構成維持のために Firestore を使用しています。レポート作成には、Spanner のデータベースを BigQuery にミラーリングするために Dataflow ジョブを実行しており、そこから保健省内部のデータ ウェアハウスにデータをミラーリングするために別のジョブも実行しています。
日常的な内部でのレポートには、直接 BigQuery に接続されたデータポータルを使用しています。また、ワクチンの供給の管理やリソースの割り当てを支援するためのワクチン戦略を立案する外部のグループも、データポータルのレポートを使用しています。
課題への対応
このプロジェクトは成功だったと当社は確信しています。大きなエラーやサービスの停止もなく、記録的な速さでシステムをデプロイし管理できました。クライアントにも満足していただくことができ、今では大多数のポーランド国民が、直接的もしくは間接的に当社のシステムを利用してワクチン接種を済ませています。このプロジェクトは、これ以上ないくらい刺激的で挑戦に満ちていました。また、全国民の健康を守るのに直接貢献できるということも、当社にとってきわめて重要でした。Spanner、GKE、Pub/Sub、Dataflow、BigQuery といった、この重要なアプリケーションを支える Google Cloud プロダクトのおかげで、責任を全うすることができました。
Chmura Krajowa(OChK)と Cloud Spanner の詳細をご覧ください。
- OchK ソフトウェア エンジニア Zbigniew Cyktor- OchK ソフトウェア エンジニア Łukasz Sierant