【要約】【AWS】複数人でリアルタイム描画できるお絵描きアプリを作ってみた [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
AWSの学習では、テキストのみでは各サービスの役割や連携のイメージが掴みにくいという課題がある。筆者は、実戦的な理解のため、実際に動くアプリを構築するプロセスを提示している。また、各サービスの具体的な設定値や、エラー時の挙動についても理解を深める必要がある。
- ・サービスの具体的な用途の理解。
- ・サービス間の連携フローの把握。
- ・コンソール上での具体的な設定手順。
- ・サーバーレス構成におけるデータの流れの可視化。
- ・インフラ管理を伴わない開発体験の習得。
// Approach
筆者は、AWSのサーバーレス構成を用いて、リアルタイム通信アプリを構築する手法を採用した。各サービスを疎結合に組み合わせ、インフラ管理を最小限に抑える構成を目指している。これにより、フロントエンドからバックエンドまでの構築を網羅している。
- ・WebSocket APIを用いた双方向通信の実装。
- ・DynamoDBによる接続ID管理と描画履歴の永続化。
- ・S3とCloudFrontによる静的コンテンツのセキュアな配信。
- ・IAMによる最小権限原則に基づいた権限管理の適用。
- ・Reactを用いたフロントエンドの実装。
- ・Viteによる高速なビルド環境の利用。
// Result
筆者は、サーバーレス構成によるアプリを完成させ、AWSの各サービスの連携プロセスを習得した。これにより、理論だけでなく実践的な構築スキルを得ている。結果として、AWSのマネージドサービスを用いたモダンな開発手法を提示している。
- ・WebSocket経由での複数ブラウザ間リアルタイム同期の実現。
- ・DynamoDBを用いた描画履歴の自動復元機能の構築。
- ・CloudFrontを用いた静的ファイルの高速かつ安全な配信環境の確立。
- ・チャットAIを活用した開発プロセスの実践。
Senior Engineer Insight
> 本構成は、サーバーレスの利点を活かした迅速なプロトタイピングに適している。しかし、高頻度な描画イベントをそのままLambdaへ流すと、コストとレイテンシが課題となる。実戦では、クライアント側でのバッチ処理や、Kinesis等の導入を検討すべきである。また、接続管理の複雑性は、大規模化に伴いDynamoDBの設計に依存する。