Office ライセンス サービスと Azure Cosmos DB パート 1: 運用ワークロードを移行する

2020年5月11日 に投稿済み

Azure Cosmos DB

この記事は、2 つのパートから成るシリーズのパート 1 で、組織が Azure Cosmos DB を使用して実世界のニーズを満たす方法と、それが生み出す違いについて説明します。パート 1 では、Microsoft Office ライセンス サービス チームが、Azure Table Storage から Azure Cosmos DB に移行する原因となった課題と、チームが新しいサービスに運用ワークロードを移行した方法について説明します。パート 2 では、チームの取り組みの成果について考察します。

課題: スループットやその他の機能が限られている

マイクロソフトでは、Office ライセンス サービス (OLS) を使用して Windows、Mac、タブレット、およびモバイルを含む世界中の何百万ものデバイス上の Microsoft Office クライアントのアクティベーションをサポートしています。マシン ID、製品 ID、アクティベーション数、有効期限といった情報を格納します。OLS は、ライセンス認証時のクライアントからの最初の呼び出しから、その後 2 ~ 3 日置きに行われるライセンスがまだ有効であるかを確認するためのクライアント チェックを含め、世界中のユーザーの Office クライアントから 1 日に 2 億 4,000 万回以上ものアクセスを受けます。

最近まで、OLS はバックエンド データ ストアとして Azure Table Storage に依存していました。そこでは、18 のテーブルにまたがって 5TB のデータが保存されており、コンシューマー、エンタープライズ、および OEM プレインストールなど、異なるライセンス カテゴリに対して異なるテーブルが使用されていました。

何年にもわたってワークロードが継続的に増加した結果、2018 年の前半には、OLS サービスは Table Storage が提供できるより多くのスループットを必要とする状態になりつつありました。この問題が対処されなければ、Table Storage 固有のスループット制限が、全体的なサービス品質を脅かし、世界中の何百万人ものユーザーに損失が及ぶことになります。

OLS 開発チームをリードする、マイクロソフトのソフトウェア エンジニアの Danny Cheng 氏は、次のように説明しています。

「各 Table Storage のアカウントには、固定の最大スループットがあり、それを超えて拡張することはできません。2018 年までに、OLS で利用可能なストレージ スループットが不足し始めており、さらにその時既に各テーブルを固有の Table Storage アカウントで維持していたので、お客様からのより多くの要求に対応するためにスループットを増やす方法がありませんでした。OLS のピーク使用時には、かなり抑制されている状態であったため、よりスケーラブルなストレージ バックエンドを早急に見つける必要がありました。

ストレージ ニーズに対する長期的なソリューションを得るため、OLS チームは単なる追加のスループット以上のものを望んでいました。サービスのコピーをユーザーにより近い場所に配置することで待機時間を最小限に抑える手段として、世界中の異なるリージョンで OLS をデプロイする能力が必要でした。しかし Table Storage では、geo レプリケーション機能がかなり制限されます」

OLS チームは、より優れた障害復旧も必要としていました。Table Storage では、米国内の複数のリージョンにすべてのデータを保存していました。すべての読み取りおよび書き込みはプライマリ リージョンに送られ、そこでは 2 つのバックアップ リージョンへのレプリケーションに SLA が導入されておらず、最大 60 分かかる場合がありました。プライマリ リージョンが利用できなくなった場合、人間の介入が必要となり、データの損失が生じる可能性もありました。

「1 つのリージョンがダウンした場合、本当のパニック状態となるでしょう。30 ~ 60 分のダウンタイムと同様の時間のデータ損失が発生します」と Cheng 氏は語ります。

ソリューション: Azure Cosmos DB へのリフト アンド シフト移行

OLS チームは、Azure Cosmos DB への移行を選択しました。この選択では、Table Storage からのリフト アンド シフト移行パスが提供されるため、ターンキー型のグローバル分散、低待機時間、ほぼ無制限のスケーラビリティ、保証された高可用性などを備えたプレミアム バックエンド サービスに容易に置き換えることが可能になります。

「最初は、新しいストレージ バックエンドが必要であることを認識した時に、新しいコードがどれだけ必要になるかがわからないことに不安を感じていました」と Cheng 氏は言います。「Azure 上のいくつかのストレージ オプションを検討しましたが、私たちのニーズすべてを満たすのは Azure Cosmos DB だけでした。また、その Table API のおかげで、新しいコードをたくさん作成する必要もなくなりました。多くの点で、それは理想的なリフト アンド シフトでした。最小限の労力で、私たちが必要としていたスケーラビリティやその他多くの利点を提供してくれました」

設計の意思決定

Azure Cosmos DB のデプロイの準備をする上で、OLS チームは基本的な設計上の意思決定をいくつか行う必要がありました。

整合性レベル。これは、読み取りの整合性と、待機時間、可用性、およびスループットとの間の基本的なトレードオフに対応するためのオプションをチームに提供しました。

「私たちは強固な整合性を選びました。これは、私たちのビジネス ロジックの一部で、書き込みの直後にストレージからの読み取りを必要とするためです」と Cheng 氏は説明しています。

パーティション キー。これは、Azure Cosmos DB コンテナー内の項目がどのように論理パーティションに分割されるかを指定し、データ ストアの最終的なスケーラビリティを決定します。

「Azure Cosmos DB の Table API によって、パーティション キーは私たちが Table Storage で使用していたものに自然にマッピングされます。それで、同じパーティション キーを再利用することができました」と Cheng 氏は述べています。

移行プロセス

Azure Cosmos DB はデータ移行ツールを提供しますが、その時点でそれを使用すると OLS サービスで必然的にダウンタイムが生じることになり、選択肢とはなりませんでした。(注: 現在は、ダウンタイムなしのライブ マイグレーションを実行できます)。この問題に対処するため、OLS チームは次の 3 つのコンポーネントで構成されるデータ移行ソリューションを構築しました。

  1. 現在のデータを Table Storage から Azure Cosmos DB に移行するデータ移行ツール。
  2. Table Storage と Azure Cosmos DB の両方に新しいデータベースの変更を書き込むデュアル ライター。
  3. Table Storage と Azure Cosmos DB 間の不整合を捕捉する整合性チェッカー。

データ移行ツールコンポーネントは、Azure Cosmos DB チームによってマイクロソフトのお客様に提供されるものと同じです。

「ダウンタイムの問題に対処するため、デュアル ライターと整合性チェッカーのコンポーネントを追加しました。これらは OLS サービスそのものと同じ実稼働サーバー上で実行されます」と Cheng 氏は説明します。

OLS チームは 2019 年後半に移行プロセスを完了しました。現在、Azure Cosmos DB は同じ 3 つのリージョンに Table Storage としてデプロイされています。これは、チームが移行時に Table Storage のトポロジにできるだけ近く再現したものです。同様に、米国中北部はプライマリ (読み取り/書き込み) リージョンですが、その他の 2 つのリージョンは現在は読み取り専用です。Azure Cosmos DB 環境には 5TB のデータを含む 18 のテーブルがあり、約 100 万の要求ユニット/秒 (RU/秒) を消費します。これは、Azure Cosmos DB で保証されたデータベース スループットを予約するために使用される単位です。

移行が完了した現在、チームはマルチマスター機能を有効にすることを計画しています。そうすることで、プライマリだけでなくすべてのリージョンを書き込み対応にできます。これを試行するために、チームはバックエンド ストアを世界中の追加のリージョンにレプリケートすることで、グローバルにスケールアウトすることも計画しています。これにより、OLS データのコピーをユーザーが存在する場所により近く配置することで、Office クライアントの観点から待機時間を短縮するという目的を実現できます。

このシリーズのパート 2 では、Azure Cosmos DB に新しい Office ライセンス サービスを構築するチームの取り組みの成果について考察します。

今すぐ Azure Cosmos DB をご利用ください