Azure Cosmos DBとSpika for Businessの連携

はじめに

こんにちは。入社1年目エンジニアのkazmawです。
今回は,Azure Cosmos DBと弊社が提供するチャットプラットフォーム Spika for Businessを連携しましたのでご紹介します。

とは言うものの,
Azure Cosmos DBって何?
Spika for Businessって何?
という方も多いと思いますので,まずはそこから説明させて頂きます。
その後,Azure Cosmos DBのデプロイから接続までの方法を説明します。

本記事で,Azure Cosmos DB,Spika for Businessについて知ってもらい,両者の可能性を感じ取ってもらえたら幸いです。

 

Azure Cosmos DBとは

Azure Cosmos DB(以下,Cosmos DB)とは,Microsoft Azureで提供されるNoSQLのデータベースサービスです。

Cosmos DBには,ざっくりと以下の4つの特徴があります[1]

  1. “惑星規模”の拡張性
  2. 安心して使えるSLA
  3. リーズナブルな課金モデル
  4. マルチモデルAPI

 

まず,一番最初に言及される特徴として“惑星規模”の拡張性があります。
これはどういうことかと言うと,Cosmos DBは,使い始めてすぐに世界中の任意のリージョンへ任意の数だけ分散配置可能であるということです。実際,Azureのポータルでボタンをクリックするだけで数分で任意のリージョンにレプリケーションができてしまいます。
データベースを簡単に世界中に分散できるというのは,非常にスケールの大きな話ですね。Cosmosという名前だけあります。

また,あまり表に出ていないですが,私がCosmos DBの最大の特徴だと思っているのが,非常に高いレベルで包括的なSLAが用意されていることです。可用性,要求されたスループット達成率,設定した整合性の達成率,レイテンシ達成率の全てにおいて,月間SLA 99.99%となっています[2]。サービスのボトルネックになりやすい応答性能が保証されているというのは非常にありがたいですね。

さらに,必要な処理性能を事前に予約して購入する課金モデルを採用[3]していて,設定したストレージと予約済RUに対して課金されます。(※詳しくは[4]
要するに,必要なスループットを事前に予約し,その分だけ課金されるモデルとなっています。

そして,マルチモデルAPIが用意されています[5]
したがって,既存のサービスの移行も簡単に可能ですし,業務に適した方式での構築を検討しやすいこともCosmos DBの強みと言えると思います。

【参考文献:Azure Cosmos DBの関連情報】

[1] Azure Cosmos DB公式サイト
[2] Azure Cosmos DBのSLAについて
[3] 価格 – Azure Cosmos DB | Microsoft Azure
[4] 要求ユニットとスループットの推定
[5] 公式ドキュメント

 

Spika for Businessとは

2017-08-15 14.23.56

Spika for Business[1](以下,Spika)とは,弊社が提供するチャットソリューションです。Spikaは,

  • ソースコード提供
  • オンプレでもクラウドでも動かせる
  • Web,Android,iOSのマルチプラットフォームで使用可能

という特徴があります。
特に,ソースコードで提供しているので,自由にカスタマイズが可能であるところが最大の特徴です。もちろん,サーバ構成もお客様のご都合に合わせて自由にカスタマイズしていただけます!

そのため,Cosmos DBと合わせて使うことで,あるサービスをスモールスタートして徐々にスケールアウトしていく使い方や,冗長化やパフォーマンスの対応が可能になると考えています。特にチャットはリアルタイム性が求められ,かつデータベースへの負荷予測が難しいので,Cosmos DBの応答性能SLAやグローバルにスケールアウトしやすい点は,非常に相性が良いと考えています。

【Spikaの詳しい情報】
[1] 弊社Webサイト

 

Cosmos DBとSpikaの連携

今回,SpikaをCosmos DBで動かしてみた経緯としては,Spikaは利用者数で課金されないため大規模化しやすいので,スケーリングに強みをもつCosmos DBと相性が良いはずだ!試してみよう!ということから始まっています。

結果として,Spikaの標準データベースがMongoDBだったこともあり,MongoDB APIを使用することで簡単にCosmos DBと連携させることができました

さて,それではSpikaとCosmos DBを繋げるまでの手順をご紹介します。
※ Azureポータルにサインインした状態からの手順になります。

 

Cosmos DBのデプロイ

まず,Azureのポータル画面でCosmos DBをデプロイします。Azureのポータル画面を開くと,左側にメニューが表示されると思いますので,リストの一番上の新規をクリックして,Azure Cosmos DBを選択してください。

すると,以下の図のように,ID,API,サブスクリプション,リソースグループ,場所を入力する画面が現れますので,こちらにそれぞれ情報を入力し,作成をクリックします。

2017-08-14 17.22.59

これで,Cosmos DBがデプロイされます。

 

Cosmos DBの情報を取得する

デプロイしたCosmos DBのリソースを選択すると,下の図のような画面が表示されます。

2017-08-14 17.41.14

 

アプリ側で設定する必要のある情報は,画面左の「接続文字列」を選択することで参照することができます。
2017-08-14 17.49.05
アプリケーション側で,mongoDBの接続先を,この画面から取得できる接続文字列に置き換えてあげるだけで,Cosmos DBに接続することができます。
なお,接続文字列は以下のような文字列になっていますので,[database]部分にデータベース名指定することができます。

mongodb://username:password@host:port/[database]?ssl=true

【参考文献】
Azure Cosmos DBへのMongoDBアプリケーションの接続

 

Cosmos DBと既存アプリケーション連携時の注意点

上述したように,基本的にはデータベースのURLを接続文字列に置き換えるだけでCosmos DBへの接続は可能でしたが,アプリ側でも少し変更が必要でしたので注意点としてご紹介します。

Cosmos DBでは集計関数におけるGroup By句がサポートされていません。
幸いSpikaでは影響範囲が少なかったのでよかったのですが,適用するアプリによっては集計関数のGroup By句を使用していることもあると思いますので,この点は注意が必要です。

 

おわりに

今回は,Cosmos DBとSpikaについて,そして両者を接続する方法を紹介しました。
Cosmos DBは,”惑星規模の拡張性”,安心して使えるSLA,リーズナブルな課金モデル,マルチモデルAPIという特徴を持ったサービスです。

サーバ構成も自由にカスタマイズできるチャットプラットフォーム Spikaと組み合わせることで,小規模から大規模なものまで,応答性能を保証しながらアプリを提供できることがわかりました。特にチャットはリアルタイム性が求められ,負荷の予測が難しいので,Cosmos DBの応答性能SLAや裏側を意識せずにスケールアウトできる点は,非常に相性が良さそうです。

 


「Spika for Business」を使用してみませんか?
ご興味持った方はisana.netまでお問い合わせ下さい。

詳細・お問い合せはこちら「Spika for Business


%d人のブロガーが「いいね」をつけました。