mybook
12

スケーラビリティ 101

小さな Rails アプリを100万ユーザーに耐えるシステムに育てる方法

1
プロローグ — 嬉しい悲鳴

ユーザー急増で落ちるアプリ。CTOのアキラがスケーリングの旅を始める

2
パフォーマンスの測り方 — ボトルネックを見つける

N+1クエリ、rack-mini-profiler、Bulletで真の問題を数字で把握する

3
データベース最適化 — インデックスとクエリ改善

EXPLAIN ANALYZEでボトルネックを可視化し、カバリングインデックスで劇的に高速化する

4
読み取りスケーリング — レプリカとキャッシュ

Aurora Read ReplicaとRedisで読み取りを分散させ、DBへの負荷を劇的に下げる

5
書き込みスケーリング — シャーディングとパーティショニング

垂直パーティショニングとシャーディングで書き込みボトルネックを突破する

6
アプリケーションスケーリング — 水平展開

ECS Auto ScalingとALBでRailsを複数台に展開し、トラフィックスパイクに自動対応する

7
非同期処理 — ピークを平準化する

SidekiqとSQSでバックグラウンドジョブを活用し、ユーザー体験を損なわずに重い処理を捌く

8
CDNと静的アセット — エッジで配信する

CloudFrontとS3でメディアファイルをエッジ配信し、世界中のユーザーに高速体験を届ける

9
データベースの選択 — RDB以外の選択肢

DynamoDB、ElastiCache、OpenSearchでポリグロット・パーシステンスを実践する

10
キューとストリーミング — リアルタイムデータ処理

KinesisとEventBridgeでイベント駆動アーキテクチャを構築し、大量データをリアルタイム処理する

11
グローバルスケーリング — 世界展開する

マルチリージョン構成とGlobal Acceleratorで世界中のユーザーに低遅延体験を届ける

12
エピローグ — スケーリングの判断基準

早すぎる最適化の罠、コストとの天秤、そしてアキラが学んだスケーリングの哲学