はじめに
2023年5月に Momentoから、web SDK が提供され始めました。
Momento とは
がちのサーバレスキャッシュサービスが Momento です。
実際に使ってみても分かるように、キャッシュの実装がとても簡単にでき、かつ、プロビジョンやスケーリング等の管理は不要で、サクッとキャッシュできる機能を持っております。これ本当にすごい。。
Momento Web SDK
- 今回公開された Momento web SDK は web ブラウザ上で実行され momentoの裏側と直接通信するjavaScript コードを記述することが可能になるというものです。
- なので、Momento と web ブラウザ間でキャッシュやpub/subの呼び出しを仲介するWebサービスを自分で構築したり、運用するデメリットを回避することができます。
- あとは単純に、自作したwebサーバーを経由してMomento側とやりとりする必要が今まではありましたが、直接通信することができるようになることで、ネットワーク経路を1ホップ減らすことができるというのも良い点です。
SDK で公開された新機能
- チャネルベースのWebSockets
- クライアントとサーバー間の共有キャッシュ
- ブラウザ間通信
- APIトークンのプログラマティックな生成
APIトークンのプログラマティックな生成 とは??
- 今までは、ユーザーは Momento Console にログインし、GUI から有効期限付きの API トークンを生成することができました。設定可能な時間でたとえば1時間が経過すると、API トークンは無効化され、使用できなくなります。
- ただ、コンソールから手動でこれらのトークンを取得するのは大変ですよね?
- そこで、ブラウザで安全なトークンの使用をサポートするため、Node.js SDKを改修し、期限切れトークンをプログラムからリフレッシュすることを可能にしました。
- プログラム的に生成されたトークンは、キャッシュの作成、キャッシュの削除、他のAPIトークンの作成などのコントロールプレーン操作にアクセスすることができません。
公式ドキュメントで提供されているサンプルアプリ
サンプルコードの確認
- どうやら、Next.js と Momento SDK で作成されたリアルタイムチャットアプリケーションのようです。
- ユーザが Websocketとして、Momento Topics を使用し、一時データストアとして Momento Chache を使用するような作りだそうです。
(引用元: https://github.com/momentohq/example-chat-app)
サンプルアプリの動き
- ユーザーがアプリケーションにログインすると、認証エンドポイントから一時的な認証トークンを受け取ります。
- 認証トークンを受け取ると、アプリケーションは Momento Web SDK を初期化し、チャットルーム作成用のトピックをサブスクライブします。
- ユーザーが新しいチャットルームを作成すると、メッセージがトピックに公開され、チャットルームリストを開いて更新するよう他のすべてのブラウザに通知されます。
- ブラウザは、利用可能なチャットルームのリストを含むキャッシュアイテムを Momento から取得します。
注意事項
-
サンプルアプリ内に.envファイルを作成し、環境変数 NEXT_PUBLIC_AUTH_BASE_URL を追加する必要がある。
-
ここで NEXT_PUBLIC_AUTH_BASE_URL に記載するURLは、nodeなどで作成した generateAuthToken を返すことができるバックエンドAPIを自作し書く形となります。
-
なお、現時点(2023年6月15日時点)では、generateAuthToken を利用できる言語に限りがあるので、注意が必要です。
参考資料