フルフルkintoneの構成について
石際です。こんにちは。読んでいただいてありがとうございます。
Team.KFC Season2ではリアルタイムでのデータの変更の伝搬と、その機能を利用したライブサイリウム、そしてそのための負荷分散がポイントでした。
ここでは、大きくどのような技術で成り立っているかを説明します。
リアルタイムデータ連携の仕組み
websocketのような仕組みを利用することで、リアルタイムでデータ連携をすることができます。ただ、websocketでは送達可否確認や再送などの信頼性に劣りますので、あまりそのまま扱いたくはありません。
また、複数のユーザーが同時に接続した際に負荷分散したり、負荷状況をモニタリングしたりといったサーバー管理を行いたくありません。
今回はAWSのAppSyncというサービスを利用することで、サーバーレスなリアルタイム通信を実現できました。
AppSyncと言いますとGraphQLの技術のイメージが強いですが、後ろにデータベースを構えない今回のような利用方法が可能です。
構成
上記が今回の構成になります。
- Github
- ソースコードを管理して、AWS-AmplifyとCI(ソースをコミットしたら、クラウド上で自動ビルドする仕組み)を利用します。
- Amplify
- S3, AppSyncといったサービスを統合管理して、Githubとも連携します。
- S3
- (厳密に言うとS3だけではありませんが...)AWS上に「フルフルライブサイリウム」アプリを置いているサービスです。
- AppSync
- 今回のコアの技術で、リアルタイム連携を行っています。
- kintone
- みんなが大好きなクラウドサービスです。
フルフル承認機能
kintone上でのデータ変更を、AppSyncを通じてリアルタイムに、kintoneを扱っているユーザーに伝達します。また、どのような変更がおこなわれたかによって、動作を変えています。
例えば森田部長が申請を承認したら、石際さんにメッセージが表示されます。
オーディエンス機能
kintoneの外側にあるAWS上のフルフルライブサイリウムで、ユーザーがどのくらい振って応援してくれたか。それがデータになってリアルタイム連携路の中を流れています。
今回はサーバーを置かないので、石際さんのブラウザが、直接、ライブ接続者のフルフルデータを受信し、また申請の内容や同期した背景色を配信します。
ここにブラウザでの負荷分散が必要なのですが・・・めんどくさいので今回はここまで。
まとめ
- リアルタイム連携にはAWS-AppSyncを利用している
- AWS-AppSyncはサーバーレス構成で提供される
- GithubとAmplifyの連携で開発を統合している
以上が構成内容です。