Azure #CosmosDB @ Build 2018: 次世代アプリの推進基盤
執筆者: Rimma Nehme (GPM, Azure Cosmos DB)
このポストは、2018 年 5 月 7 日に投稿された Azure #CosmosDB @ Build 2018: The catalyst for next generation apps の翻訳です。
Azure Cosmos DB 1 周年
このたび、マイクロソフトのグローバル分散型マルチモデル データベース サービス Azure Cosmos DB がリリース 1 周年を迎えました。多くの方がご存知のとおり、Azure Cosmos DB は、2010 年にマイクロソフト社内のグローバル分散アプリのニーズに応えるためのプロジェクト Project Florence としてスタートしました。それまでのデータベースの性能では、世界規模の可用性、スケーラビリティ、パフォーマンスを必要とするアプリに対応できなかったため、クラウド向けのデータベースをゼロから構築し、グローバル分散アプリを実現するというミッションが確立されました。
この 1 年間でサービスは目覚ましい成長を遂げてきました。Azure Cosmos DB を基盤にミッション クリティカルなアプリを構築し、サービスの可能性を広げ、品質の向上にご協力いただいたお客様に心から感謝しています。マイクロソフトを信頼してデータを預けていただいた皆様に、この場をお借りして御礼申し上げます。マイクロソフトは今後も、Azure Cosmos DB が常にお客様のビジネスに最適なデータベースとなるように取り組んでまいります。
クラウド ネイティブなデータベースである Azure Cosmos DB は、マルチテナントとグローバル分散を前提としてゼロから入念に設計されており、ターンキー方式のグローバル分散、世界規模のスループットとストレージの弾力的なスケーリング、99 パーセンタイルでの 10 ミリ秒未満のレイテンシ、明確に定義された 5 種類の整合性モデル、高可用性などを、すべて業界最高レベルの包括的な SLA で保証しています。また、スキーマに依存することなくすべてのデータのインデックスを自動作成 (英語) するため、面倒なスキーマ変更、バージョン管理、複数のリージョンにおけるインデックス管理の必要がありません。さらに、書き込みに最適化されたマルチモデル データベース エンジンで MongoDB、Apache Cassandra、Apache Gremlin 用の接続互換 API を使用することで、オンプレミスまたは IaaS でホストされた NoSQL データベースからスムーズに Azure Cosmos DB へとデータ移行することができます。
この 1 年間、マイクロソフトは新しい整合性モデル、サーバーレス アーキテクチャ (英語)、業界最高の包括的な SLA、世界規模の運用分析が可能な Spark のネイティブ統合など、革新的な新機能を毎週のように提供してきました。//Build 2018 で発表した Cosmos DB の新機能は、 インテリジェントクラウドとインテリジェントエッジ の時代にグローバル分散アプリの構築をさらに促進するための大きなステップとなります。
//Build 2018 での Azure Cosmos DB の発表
シアトルで開催された Microsoft Build Conference 2018 (英語) にて、マイクロソフトは、ミッションクリティカルなグローバル分散アプリを簡単に構築するための新機能を発表しました。主な内容は以下のとおりです。
マルチマスター レプリケーション (プレビュー) による画期的な書き込みスケーラビリティと可用性: Azure Cosmos DB は、数十年にわたる分散システムの研究成果を集約し、厳格なエンジニアリング作業と組み合わせて、大規模に運用できるようになっています。今回、整合性モデルと業界最高の SLA を維持していくために、Cosmos DB のマルチマスター レプリケーション プロトコルに対して (a) Bayou の研究から得た主要なアイデアの反映、(b) Cosmos DB のデータベース エンジンの基本型システムへの CRDT (Conflict-free Replicated Data Type) のネイティブ統合、(c) TLA+ のプロトコル正当性プロパティの認証を実施しました。これにより、以下の機能が実現しました。
· 全世界対応の無制限の弾力的な書き込みスケーラビリティ: 世界中のあらゆる Azure リージョンに、(読み取りに加えて) 書き込みをいつでも弾力的にスケーリングすることができます。
· 全世界対応の 99.999% の書き込み可用性: 世界中で (99.999% の読み取り可用性に加えて) 99.999% の書き込み可用性を業界最高の SLA によって保証します。
· 全世界対応の 99 パーセンタイルでの書き込みの低レイテンシ: 10 ミリ秒未満の読み取りレイテンシに加えて、世界中で 99 パーセンタイルでの 10 ミリ秒未満の書き込みレイテンシを返金制度付きの SLA によって保証します。
· 全世界対応の無制限のエンドポイント スケーラビリティ: Azure Cosmos DB のレプリケーション プロトコルは、数百のクラウド リージョンから数十億のエッジ デバイスまで、無制限のエンドポイントをサポートします。マスターレスなこのプロトコルは、クラウド リージョンとエッジ エンドポイントを真のピアとして同等に扱うように設計されています。Azure Cosmos DB の構造上、ISV や開発者が一時的に接続するエッジ アプリを作成し、オンプレミスや他のクラウドで実行しているデータベースを Cosmos DB にシームレスにアクティブ/アクティブ接続できるようになっています。
· 明確に定義された整合性モデル: Azure Cosmos DB のマルチマスター レプリケーション プロトコルは、既存の整合性モデルとスムーズに連携するため、データの整合性を維持する直観的なプログラミング モデルを使用して、特定の整合性モデルの可用性、レイテンシ、スループットのバランスを調整することができます。
· 直観的かつ柔軟なプログラミング モデルによる競合管理: マスターレスなデータベース アーキテクチャでは、書き込みの競合が発生することがあります。一般的なマスターレス システムでは、通常アプリケーション開発者が競合の検出と解決を行う必要がありますが、Azure Cosmos DB のレプリケーション プロトコルでは、システムが自動的に競合を検出します。また、明確に定義された複数の競合解決モードにより、強力な収束が保証されています。
Azure Cosmos DB の新しいマルチマスター レプリケーション機能を知っていただくために、PxDraw (https://pxdraw.azure.com (英語)) という大規模スケーリングが可能なマルチユーザー対応のリアルタイム描画キャンバスを開発しました。世界中の 22 のリージョンに分散されており、書き込みの低レイテンシを保証するマルチマスター機能を活用しています。これは、世界中の何千人ものユーザーが参加して、1 ピクセルずつキャンバスに描画するというデモンストレーションです。 この描画セッションは、5 月 9 日 (水) のカンファレンスの閉会後に終了しました。詳しくはこちらのブログ記事 (英語) をご覧ください。
VNET サービス エンドポイントの一般提供: VNET サービス エンドポイントの一般提供を開始しました。これを利用すると、お客様が所有する VNET のみにデータベース アクセスが制限されるため、セキュリティを維持しながら VNET と Azure Cosmos DB 間で直接通信することができます。今回、特定の VNET とサブネットからのトラフィックのみを許可するネットワーク ルールを作成できるようになりました。この機能は現在、Azure パブリック クラウドのすべてのリージョンでご利用いただけます。これにより、ファイアウォールのアクセス制御リスト (ACL) などの既存の承認メカニズムと新しいネットワーク境界を組み合わせ、データのセキュリティを強化することができます。Azure Cosmos DB は、リージョン間のアクセス制御をサポートする初のサービスであり、複数のリージョンのサブネットから Azure Cosmos DB のグローバル分散アカウントへのアクセスを制限することができます。詳しくはこちらのブログ記事 (英語) をご覧ください。
Cosmos DB データベースのスループットのプロビジョニング (プレビュー): これまでは、Cosmos DB コンテナー (コレクション、テーブル、グラフのいずれかで、データ モデルと API によって異なる) のスループットのみをプログラムまたは Azure ポータルからプロビジョニングすることができました。このたび、Cosmos DB データベースのスループットも構成できるようになりました。スループットをプロビジョニングすることで、データベースに属するすべてのコンテナー間でスループットを共有して、Cosmos DB データベース内のコンテナー間でプールすることができます。さらに、特定の Cosmos DB データベース内では、複数の種類のコンテナーを組み合わせ、コンテナー間で専用スループットを共有することもできます。さまざまなレベル (コンテナーやデータベースなど) でスループットをプロビジョニングすることで、ワークロードの性質に応じてコストを最適化することができます。
コンテナーや Cosmos DB データベースを複数リージョンに分散している場合、すべてのリージョンで構成したスループットの使用が保証されます。詳しくはこちらのブログ記事 (英語) をご覧ください。
Cosmos 開発者向けの新しいツール
· Azure Cosmos DB 用 BulkExecutor ライブラリの一般提供: Azure Cosmos DB BulkExecutor ライブラリの一般提供を開始します。BulkExecutor ライブラリは、Cosmos DB の基本 SDK の拡張機能として設計されており、設定不要で Cosmos DB の一括操作機能を実行することができます。これを使用すると、書き込みスループットが平均 10 倍に向上します。また、帯域制限、タイムアウト、一時的な例外処理も設定不要で効率的に実行することができます。個々の VM に BulkExecutor クライアント インスタンスを追加することで、簡単にスケールアウトして、さらに書き込みスケーラビリティを向上することができます。BulkExecutor ライブラリの .NET バージョンは NuGet から、Java バージョンは Maven (英語) からダウンロードできます。利用開始前に、.NET の場合はこちら (英語)、Java の場合はこちら (英語) から API のドキュメント、パフォーマンスのヒント、サンプル アプリをご確認ください。詳しくはこちらのブログ記事 (英語) をご覧ください。
· Azure Cosmos DB 用 Async Java SDK: 新しい Cosmos DB の SQL API 用 Async Java SDK (英語) の一般提供を開始します。利用者の多い RxJava (英語) ライブラリを活用するため、非同期 API のアクセス可能な領域を新たに追加して、監視可能なシーケンスでイベントベースのプログラムを作成することができます。ユーザー エクスペリエンスを改善できるだけでなく、クライアント側のパフォーマンスも 2 倍に向上します。
お客様の活用事例
現在、Rolls-Royce、Jet.com (英語)、Dominos、ASOS をはじめとする世界最大手企業のお客様の多くが、Cosmos DB でミッションクリティカルなワークロードを実行しています。Jet.com (英語) では、注文処理、在庫管理、価格設定など、さまざまな小売シナリオに Azure Cosmos DB を使用しています。また、マイクロサービスを活用して、関連イベントを保存し、イベントソース アーキテクチャを使用して処理しています。Jet.com (英語) は Change Feed API を使用して、コミット順にイベントを処理し、グローバルに分散された複数のサービス間で通信することで、幅広い保有データとレイテンシのニーズに対応しています。Dominos (英語) では、ショッピング カートの内容表示、注文の配送促進、世界中のフランチャイズ間でのさまざまなインサイト共有などに Azure Cosmos DB を使用しています。特に、信頼性の高いグローバル分散機能、低レイテンシ、強力なエンタープライズ レベルの SLA が大いに評価されています。マイクロソフトの社内でも、Cosmos DB の用途は多岐にわたっています。LinkedIn、Skype、Xbox、Active Directory、Azure ポータル、Office 365、Bing、ユニバーサル ストアをはじめ、マイクロソフトの多くのミッションクリティカルなアプリケーションやサービス (英語) で世界規模のデータを管理しています。
お客様の事例は、企業のビジネス変革において Azure Cosmos DB が重要な役割を担っていることを証明しています。お客様からお寄せいただいた感想をご紹介します。
「ASOS のサイトでは、200 か国以上から毎日 100 万人以上のお客様がアクセスし、10 万点以上の製品を購入しており、高い処理能力が求められています。世界中のお客様にサービスを提供するために、シームレスかつ弾力的にスケーリングできる分散型データベースが必要でした。お客様の要求を処理しながら大規模なデータセットを自動で管理するために、複雑なオンライン データの移行なしに、ピーク時にコンピューティング能力を追加できるようにしなければなりません。また、エンジニアリング チームがビジネス機能に集中できるようにし、ビジネス チームと運用チームの調整を減らし、計画的ダウンタイムなしでシームレスにスケーリングできるようにする必要がありました。Azure Cosmos DB は、すべてにおいて期待を上回っていました。アプリケーションの成長に合わせてコレクションをシームレスに拡張できるだけなく、99.999% の可用性が SLA で保証されています」
- ASOS、リード データ エンジニア、Gary Strange 氏
「 Jet.com (英語)と Walmart Labs で扱うデータの量は膨大です。E コマース市場は、今後 5 ~ 10 年で 1 兆ドル規模になると見込まれており、Azure Cosmos DB は当社のビジョン実現に不可欠なサービスです。私たちは、ビジネスの成長に合わせて弾力的にスケーリングできるデータベースが必要なのです。さらに、慎重なコスト管理のために、真の弾力性やオンデマンドでスケールアップ/スケールダウンできる機能が必須です。繁忙期には処理がピークに達し、イベント発生率が他の時期の 10 ~ 20 倍に増加します。
たとえば、ブラック フライデーやサイバー マンデーには、スムーズに処理を行うために、24 時間で 1 兆もの要求ユニットに対応する十分なスループットをプロビジョニングする必要がありました。これを解決するために、地理レプリケーションで 1 秒間に 1,000 万件の要求ユニットを処理することができる Cosmos DB コレクションをデプロイしました。
パフォーマンスも非常に重要です。当社では、応答性の高いカスタマー エクスペリエンスを維持するために厳格なレイテンシ目標を設定しています。読み取り/書き込みレイテンシが 10 ミリ秒未満である Cosmos DB の予測可能なレイテンシ特性には、たいへん満足しています。
弾力的なスケーリング、自動インデックス作成、変更フィードのサポートを備えた Cosmos DB は、イベント ソーシングに最適なイベント ストアと言えます。種類の異なるイベントに対して自動インデックス作成したクエリを実行できるほか、変更フィードに表示されるイベント ログを使用して過去の状態を再構成することができます。書き込みに最適化されたデータベースと組み合わせると、イベント ソーシングによる追加限定の書き込みにより、書き込み負荷の高いシステムを高速かつスケーラブルに実行することができます。当社のマイクロサービスの多くが、ミッション クリティカルです。単一リージョンのデプロイで 99.99%、グローバル分散による複数リージョンのデプロイで 99.999% の可用性が保証されている Cosmos DB なら、安心して利用することができます」
- Jet.com (英語) および Walmart Labs、エンジニアリング ディレクター、Scott Havens 氏
「当社の DigitalVault クラウド ベース プラットフォーム用のデータ ストレージ ソリューションとして、Azure Cosmos DB を採用しました。Johnson Controls は 7 大陸すべてに拠点を持つグローバル企業です。Azure Cosmos DB のようなグローバル データベースを利用することで、各地のお客様や施設をサポートするためのアプリケーションを驚くほど簡単に構築することができます。当社が求める低レイテンシと堅牢な SLA が保証されており、整合性も細かく制御できるため、アプリケーションに最適なパフォーマンスを選択することができました。
当社では、Azure Cosmos DB のインデックス作成機能、各種 API、データ モデルを活用しています。データと Azure Cosmos DB を組み合わせることで、フロアや部屋などの物理構造をデジタル化し、建物の資産関係を簡単に概念化することができます。開発と統合のプロセスを大幅に短縮する Azure Cosmos Gremlin の API とインターフェイスにより、開発能力を最大限に向上させ、統合時間を最小限に抑えることができました」
- Johnson Controls、プラットフォーム & パートナーシップ責任者、Ada Ma 氏
「Azure Cosmos DB を採用したことで、当社の開発者は MyQ ユーザーへの価値提供に注力し、完全なマネージド サービスで無制限のスケーリングとグローバル分散を提供できるようになりました」
- Chamberlain Group、MyQ ミドルウェア マネージャー、Jeff Paine 氏
「Azure Cosmos DB は、当社にとって大きなメリットとなるでしょう。柔軟でスケーラブルなデータ層を構築することで、ユーザーに実用的なインサイトを提供することができます」
- Bentley Systems、Analytical Insights および Design Insights 担当シニア プロダクト マネージャー、Kaustubh Page 氏
「Azure Cosmos DB のおかげで、全世界のお客様の所在地の近くにグラフ データを柔軟に保存できるようになりました。さらに、ドキュメント、グラフ オブジェクト、表形式データを同じ場所に保存できるため、アプリケーションの開発時間を大幅に削減することができました」
- JATO Dynamics、チーフ テクノロジ & データ アーキテクト、Dave McHugh 氏
「Archive2Azure の Azure Cosmos DB Gremlin API および Azure Blob Storage との緊密な統合は、何種類ものファイルを扱う大規模なインテリジェント情報管理プラットフォームをサポートする重要な柱となります」
- Archive360、CTO、Tibi Popp 氏
「クラウド サービスをわずか数時間で設定できるなんて、開発者にとって夢のようなことです。さまざまな機能を設定不要で利用することができる Azure Cosmos DB は、構成可能な TTL、暗号化、RESTful API、スピードなど、当社のあらゆるニーズに応えてくれます。実装の手間がなくなることで、開発者はアプリケーションのビジネス レイヤーの構築に注力することができます。当社では、Azure Cosmos DB と Azure PaaS サービスの相乗効果で、開発サイクルを強化することができました。最大のメリットは、Azure Cosmos DB が進化していることです。今後どのような新機能が登場するのか楽しみです」
- Allscripts、ソフトウェア エンジニア、Jose Molina-Melendez 氏
Azure Cosmos DB をさらにご活用ください
Cosmos DB は、リリース以来驚くべき成長を遂げています。ご協力いただいたお客様に感謝すると共に、今後も最高のグローバル分散型データベースを提供すべく取り組んでまいります。今回ご紹介した新機能を活用することで、さらに強力なグローバル分散アプリを開発できるようになると確信しています。ぜひ、Azure Cosmos DB で世界を変えるアプリを開発してください。
Azure Cosmos DB に関するご質問がありましたら、いつでも AskCosmosDB@microsoft.com までお気軽にお問合せください。Azure Cosmos DB をまだご利用でないお客様は、Azure Cosmos DB を今すぐ無料でお試しいただけます。サインアップやクレジット カードは必要ありません。サポートが必要な場合、ご質問やご意見がある場合はいつでもご連絡ください。Azure Cosmos DB のニュースや新機能については、Twitter のハッシュ タグ #CosmosDB、@AzureCosmosDB アカウントをフォローして最新情報をご確認ください。Azure Cosmos DB をさらにご活用いただければ幸いです。
- Azure Cosmos DB チーム