Serverless Operations, inc

>_cd /blog/id_0_2ejz9_p8

title

「Momento」はスパイクにも耐えるキャッシュを中心としたユニークなサーバーレスサービス群

summary

現在のウェブサイトやウェブサービスで優れたUXの実現にキャッシュは欠かすことができません。一方で、キャッシュの適切な設定やインフラの管理・運用はエンジニアにとって頭の痛い課題です。こうした悩みからエンジニアを解放し、超人気映像コンテンツの新作配信の大規模アクセスもサーバーダウンなしで乗り切ることができたのが、Momentoのサーバーレスキャッシュ技術。今回は、キャッシュだけではないMomentoのサーバーレスサービス群をご紹介します。

サーバーレスとリソース管理の自動化で開発者を楽に

Momentoは2021年に創業したアメリカのスタートアップ企業です。「We make infrastructure easy at enterprise scale.」というキャッチフレーズを掲げ、サーバーレスアーキテクチャとリソース管理の自動化で、開発者がゼロからグローバルスケールまでインフラを簡単に構築できるサポートをしています。

現在Momentoは主に以下の3つのサービスを展開しています。

  1. Cache:高速なアクセスデータを実現するキャッシュサービス
  2. Storage: Cacheをベースにした永続的なデータストア
  3. Topics:双方向通信のためのPub/Subサービス

それぞれのサービスについて簡単に説明していきましょう。

「Cache」――Momentoの主力製品

Momentoの主力サービスは「Cache」です。 名前の通りキャッシュを提供するサービスで、ユーザーのアプリケーションの応答と動作速度を向上させ、エンドユーザーのUX向上を目的としています。特にゲームやストリーミングサービスなどでは、新規コンテンツの配信直後などにアクセス数が集中する「スパイク」が発生します。データベースの前にキャッシュを配置してアクセスを受けることで、アクセスをデータベースへの負荷が分散され、安定的なサービスの提供が可能になります。

しかし、キャッシュの構築と運用は簡単ではありません。インスタンス数やシャード、レプリケーションなどの設定や、ホットキー対応、スパイク時の即時スケールアウトなどの運用などにはノウハウが必要です。Netflixなどの大企業では自社でキャッシュチームを作るほど複雑な技術です。MomentoのCasheはキャッシュの複雑な設定や運用を全てMomentoが行います。サーバーレスアーキテクチャなのでインスタンスのプロビジョニングが不要であり、SDKも用意されているので、ユーザーはわずか数行のコードを書くだけで利用を開始できます。セキュリティ面でもデータや認証は全てエンドツーエンドで暗号化されています。計画的なダウンタイムもなく、秒間アクセスが数百万件のオーダーでも安定したサービスを提供しています。

「水曜どうでしょう」新作配信をサーバーダウンなしで乗り切った

北海道テレビ放送(HTB)では、オンデマンドTVサービス「hod」にMomentoを導入しました。導入のきっかけは、人気番組「水曜どうでしょう」の新作エピソード配信です。hodではこれまでもキャッシュサービスを利用していましたが、「どうでしょう」新作配信時のアクセスは文字通り桁違いで、従来のサービスでは受け切れないことがわかっていました。Momentoの導入を決めたのは配信の3週間前。早速設計、実装、負荷試験を完了し、本番環境への実装を実現しました。導入後はレイテンシーが4分の1に改善し、コストも削減できました。担当者の三浦さんによれば、「どうでしょう」新作配信時にサーバーダウンが発生しなかったのはhod開設以来初めてだったそうです。HTBのMomento導入にあたっては、私どもServerless Operationsがご支援させていただきました。本番まで2ヶ月を切ったタイミングでのご相談でしたが、完全サーバーレスのMomentoを採用したことで約2週間の作業期間で実現することができました。

完全自動のスケーリングで管理とコストの問題を解消

Momentoの導入は簡単です。新規のプロダクトであればSDKを導入すれば良いし、Redisなどのキャッシュをすでに導入しているプロダクトであれば参照先のURLを変更するだけです。毎秒500万件のアクセスに対応しており、ピーク時のスロットリング対応などもSDK内で対応しています。

RedisからCasheに乗り換えるメリットは管理が容易になることです。まず、サーバーレスアーキテクチャなので、インスタンスの管理が完全に不要になります。スケールアウト時も、Redisではアクセス数の急増に対応するためには、難しくエラー発生の可能性があるクラスターサイズ変更を避けるために、コストを支払いオーバープロビジョニングによって対応するのが定番です。しかし一旦増やしてしまうと今度は減らすためのマイグレーションをいつ、どうやるのかの判断が難しくなります。Momentoは完全に自動でスケーリングを行えるのでそもそもこうした問題が発生しません。

「Storage」――キャッシュをベースにした永続的なデータストア

「Storage」は一言で言うと「寿命の長いCashe」です。Casheは「短時間に集中するアクセスに対して応答を返す」ためのサービスなので、数分から1時間程度のTTL(データ生存期間)を設けてデータを入れ替える前提となっています。対して、StorageにはTTLを設定しておらず、永続的なデータストアとして使用できます。

アーキテクチャはキャッシュなので、キーに対してマッチしたデータを高速に返せますが、データベースのような複雑なクエリーはできません。逆にいえば、シンプルなマッチングで良いようなアプリケーションであれば、データベースの代わりにStorageを利用することで高速な応答とスケーラビリティを実現できます。

「Topics」――少し異質なインスタントメッセージングサービス

最後に紹介する「Topics」は、低遅延のPub/Subサービス(非同期のメッセージングサービス)。CasheやStorageとはちょっと違う方向性のサービスですが、元々はCasheに興味を持ったユーザーのつぶやきがきっかけでカスタム機能として開発がスタートしました。作ってみたら他社でもニーズがあったので製品化したという経緯があります。

サービス間の通信、ブラウザ間の通信、サービスとブラウザの通信など、さまざまな利用形態に対応できます。ユースケースとして最も多いのはゲームのチャット機能ですが、他にもフィーチャーフラグの管理(アプリケーションの機能オン/オフ管理)、バックグラウンド処理の起動、ユーザーへのリアルタム通知機能などに利用できます。こうした機能をWebSocketで実装するのに比べて、Topicsは導入が簡単です。例えばWebサイトにチャット機能をつける場合も、JavaScriptでMomentoを呼び出すだけで実装できます。管理も不要で、コネクション管理やセキュリティ管理もMomentoのSDKにお任せでよくなります。

サイバーエージェントでは、オンラインカンファレンスの際に、視聴者がリアルタイムにコメントを入力できる機能を実装したいと言う要望にTopicsを採用しました。Reactでウェブサイトを構築し、JavaScriptのMomento SDKを実装することで、YouTubeライブのようなインターフェイスでリアルタイムにコメントが流れるシステムを短期間で実装しています。TopicsはシンプルなSub/Pubサービスなので、メッセージの送受信に特化しており、履歴を記録する機能はありません。例えばユーザーサポートのような、チャットサービスで会話履歴が必要になるようなケースでは、CasheやStorageと組み合わせることで実装できます。

クラウドネイティブな開発を進める多くの日本企業で採用

Momentoの創業者兼CEOのKhawaja Shams氏は、AWSのDynamo DBの開発に携わったエンジニアです。当時から日本のユーザーの品質への要求や製品に対する情熱に感銘を受け、Momentoは創業当初から全てのサービスを日米同時ローンチするなど、日本市場に対して注力しています。

Momentoのキャッシュやメッセージングサービスのような複雑な設定やスケーリングを必要とするインフラ要素を簡単に導入・運用できるサービスを組み込むことで、ユーザーは自社のプロダクトやサービスの安定性向上とコスト削減を同時に実現できます。現在は、北海道放送をはじめ、サイバーエージェント、NTTドコモなど、クラウドネイティブなサービスを構築・運用する多くの日本企業がMomentoのサービスを利用しています。

Written by
編集部

Serverless Operations編集部

Editing Department

Share

Facebook->X->
Back
to list
<-