こんにちは!
ユーザーとのよりインタラクティブな表現が求められる近年のウェブアプリケーションでは、リアルタイムのチャット要件がしばしば登場します。
ただこれが実装しようとすると中々の曲者で、ウェブソケットの対応するサーバーの準備やチャット上でストリームイベントなどが発生するとインフラが複雑化してきますね…。
今回は、最短でチャット機能実現をご紹介します。
わたしたちは、チャット実装の際に下記の思考フローを考えるようにしています。
自前構築するのは開発コストが非常に高いので、やはりサードパーティーの SaaS 等のチャット系サービスを導入検討してみるのは1つの手だろうと思います。
わたしたちは、サードパーティーを用いて構築を行う場合、Amazon Event Bridge を用いて下記のような構成をとるケースがあります。
SaaS 系のサービスの API リクエストを受け付け、その内容を AWS リソースへ伝達します。伝達先の AWS リソースのサブスクライバーに、例えば SQS などを用意すれば、SaaS 系のサービスと組み合わせたリアルタイムな通信を実現可能です。
リアルタイム処理はもちろんのこと、オフライン時の自動的なデータ接続の再開などの、サードパーティーで痒くて届かなかったことを容易く実現させてくれるのが AppSync です。( 個人的見解が含まれます )
APIGateway のソケットIOを使用しても実現可能ですが、やはり AppSync による GraphQL +オンライン復帰時のデータ同期+エレガントな SDK 提供は魅力的だと感じます。
私たちが思う、AppSync のリアルタイム処理のアドバンテージは下記ではないでしょうか。
AppSync は、サブスクリプションと呼ばれるリアルタイム処理の便利機能を提供しており、インフラの細かな設定抜きで簡単に自動的な同期処理を実現してくれます。( チャットでいうところのメッセージを画面ロード無しに読み込める的な機能を容易に実現可能 )
AppSync の採用事例はとても多く、特に GraphQL によるデータアクセス志向な API設計を行えるのは魅力的です。
AppSync、Amplify の開発はお気軽にご相談ください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎