フルフル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の連携で開発を統合している

以上が構成内容です。