メッセージキュー、容量を先に計算すれば障害を防げる
メッセージキューを導入する際によくある間違いは、平常時のトラフィックだけを見て容量を決めてしまうことです。実際の運用ではイベントによるトラフィック急増、コンシューマーの障害、デプロイ中の処理停止などが繰り返し発生し、そのたびにメッセージがキュー内に積み重なります。必要な保存容量は、ピーク時の秒間メッセージ数と平均メッセージサイズ、そしてどれだけメッセージを保持すべきか(retention)を掛け合わせて計算できます。保持期間が長いほど、またピーク処理量が大きいほど必要なディスク容量は急激に増加します。
コンシューマー数を決める基準も重要です。コンシューマー1台が処理できる秒間メッセージ数でピーク流入量を割ると最低限必要なコンシューマー数が求められますが、この値よりパーティション(またはシャード)数が少ないと、コンシューマーを増やしても並列処理の効果は得られません。そのためパーティション数は最低限必要なコンシューマー数より余裕を持たせ、通常20%以上大きく設計するのが安全です。
このツールはこれらの基準に基づき、必要な保存容量、最低限必要なコンシューマー数、推奨パーティション数を一度に表示します。ただし実際の設計ではメッセージの圧縮率、レプリケーション倍数、ブローカーのオーバーヘッドも合わせて考慮するとより正確な容量算定が可能です。
よくある質問
コンシューマー障害や処理遅延が起きるとメッセージがキューに積み重なるため、ピークトラフィックと障害時を考慮して余裕を確保する必要があります。
パーティション数は最低限必要なコンシューマー数以上に設定する必要があり、将来のトラフィック増加も考慮して余裕を持たせるのが良いです。
コンシューマーの処理速度が流入速度に追いつかないと、キューにメッセージが積み重なり続けて遅延が増大し、保存容量も超過する可能性があります。