Azure Cosmos DB サーバレス (preview) 情報まとめ

# はじめに

2020/08/19 (米国時間)にて、Azure Cosmos DB チームより **Azure Cosmos DB サーバレス** が`パプリックプレビュー`に入ったとの発表がありました。今回はその内容を確認していきます。

- [Azure Cosmos DB serverless now in preview][cosmos-blog]

# ブログ情報

## 概説

今回のサーバレスは、**MongoDB、Gremlin (グラフ)、(Azure) テーブル、および Cassandra API をサポートするCore (SQL) API** がプレビューで使えるようになったよ、というものです。サーバレスについては、今年の5月に開催された MS Build 2020 で発表があったものです。詳細はこちらをみてください。

- [2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link][myslideshare-01]
- [2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap][myslideshare-02]

Azure ポータルから Azure Cosmos DB アカウント (SQL API) を作成する際に、`Capacity mode`(キャパシティ モード)を選択できるようになりました。こちらで **Serverless (preview)** を選択すると、サーバレスモードの Azure Cosmos DB コンテナーを作成できるようになります。
_すでにプロビジョニングされたスループットで (400 RU/s、5 GB まで無料になる) Free Tier が利用できている状況なので、こちらとの比較は必要になりますね。_

## [プロビジョニングスループットとサーバレスの違い](https://devblogs.microsoft.com/cosmosdb/serverless-preview/#differences-with-provisioned-throughput)

サーバーレスモードで作成したコンテナーは、プロビジョニングスループット モードで作成されたコンテナーと同じ機能を有しているということです。

|  | プロビジョニングされたスループット | サーバレス |
| :-- | :-- | :-- |
| アカウントあたりの Azure リージョンの最大数 | 無制限 | 1つのみ |
| コンテナーあたりの最大スループットのバースト性 | 無制限 | 5,000 RU/s |
| コンテナーあたりの最大ストレージ | 無制限 | 50 GB |

つまり、Azure Cosmos DB サーバレスは、

- Free Tier のような`1サブスクリプション1アカウント`のような**制限はなく**、Azure Cosmos DB アカウント単位で作成可能
- 1コンテナーあたりで設定できるスループット(RU/s)は **5000 RU/s** でそれ以降は Http 429 が発生する
- 1コンテナーあたりで使用できるデータの(ストレージ)容量は、**50 GB** まで

といった感じのようです。なお、この内容はプレビューのため、変わる可能性があるとのこと。変わるためには、Azure Cosmos DB チームへの[フィードバック](mailto:azurecosmosdbserverless@service.microsoft.com)をお願い、とのことです。_(メール泣)_

## [ユースケース](https://devblogs.microsoft.com/cosmosdb/serverless-preview/#use-cases)

以下のユースケースにおいて Azure Cosmos DB サーバレスを使用してほしいとのこと。

- 開発
- テスト
- プロトタイピング
- 概念実証
- トラフィックがまばらな非クリティカルなアプリケーション

ブログでは、500 RU/s、月間計算だと 20,000,000 RU/month のコンテナーの例が挙げられています。まあ、一定以上使えばプロビジョニングされたスループットの方が安上がりになるので、この計算が重要になってきそうです。
なお、ブログでの計算はあくまで RU に関する話のみであり、ストレージの課金については触れられていない点、注意です。(プロビジョニングされたスループットで作成してもこの話は同じなのですが)

> (not accounting for the storage cost, which is the same between the 2 modes)

## [環境作成方法](https://devblogs.microsoft.com/cosmosdb/serverless-preview/#getting-started)

ここはブログをみてあげてください。まあ、ざっくり言うと環境作成時の設定項目がシンプルになったよ、ということです。

![svl-blog-create-account.png](https://devblogs.microsoft.com/cosmosdb/wp-content/uploads/sites/52/2020/08/svl-blog-create-account.png)

![svl-blog-create-container.png](https://devblogs.microsoft.com/cosmosdb/wp-content/uploads/sites/52/2020/08/svl-blog-create-container.png)

ここで注意したい点は、**RU/s の設定項目がなくなった** という点です。つまり、5000 RU/s まで自動的にスケーリングされるので、`プロビジョニングされたスループットの時みたいに、400 RU/s 以上の管理ができなくなるため、課金調整が難しくなっている`ということです。調子に乗ってガンガン大量処理を投げれば、あっという間に 5000 RU/s に到達して課金がすごいことになるため、Azure Cosmos DB 初心者には向いていない気もしています。

# 公式ドキュメント情報

公式 Microsoft Docs では英語版の資料は出ているが、日本語版はまだ登場していないようだったので、自分で翻訳して作ってみました。_非公式なので参考まで (2020/08/20 7:20 時点)_

- [Azure Cosmos DB サーバレス (プレビュー)](https://github.com/ymasaoka/azure-docs.ja-jp/blob/master/articles/cosmos-db/serverless.md) _※非公式_
    - [Azure Cosmos DB serverless (Preview)](https://docs.microsoft.com/en-us/azure/cosmos-db/serverless) _※公式 (English)_
- [プロビジョニングされたスループットとサーバーレスの選択方法](https://github.com/ymasaoka/azure-docs.ja-jp/blob/master/articles/cosmos-db/throughput-serverless.md) _※非公式_
    - [How to choose between provisioned throughput and serverless](https://docs.microsoft.com/en-us/azure/cosmos-db/throughput-serverless) _※公式 (English)_

~~そのうち他の Docs も翻訳します。もし大丈夫なら GitHub で日本語のリポジトリに PR しておきます。~~
（2020/08/20 追記）
一応、日本語版のリポジトリに PR を送ってみました。※承認されるかどうかはわかりません

- [MicrosoftDocs/azure-docsに追加されたAzure Cosmos DB Serverlessの記事を追加 #5214](https://github.com/MicrosoftDocs/azure-docs.ja-jp/pull/5214)

# 参考資料

- [サーバーレスドキュメント](https://aka.ms/cosmos-serverless)
- [Azure Cosmos DB の料金ページ](https://azure.microsoft.com/pricing/details/cosmos-db/)
- [プロビジョニングされたスループットとサーバーレスの選択方法](https://docs.microsoft.com/en-us/azure/cosmos-db/throughput-serverless)

--- 

[cosmos-blog]:https://devblogs.microsoft.com/cosmosdb/serverless-preview/

[myslideshare-01]:https://www.slideshare.net/Oshitari_kochi/start-learning-azure-cosmos-db-with-azure-synapse-link-237538198
[myslideshare-02]:https://www.slideshare.net/Oshitari_kochi/202008092020-azure-cosmos-db