Pinterestが6人のエンジニアで1100万人のユーザーを支えてたって話、控えめに言ってバグってるんだけど… それ以上にすごかったのが、その急成長をMySQLベースのアーキテクチャで乗り越えた戦い方だった。 MongoやCassandraを試しては不安定さに泣かされ、クラスタリングはリバランスが地獄。 何度もデータ破損の危機を迎えた末に選んだのが、シャーディング × キャッシュ × シンプル設計。 ユーザーごとに全データをひとつのシャードに集めて、ID構造でどのシャードにあるか即判定できる仕組みを用意。 さらに結合や制約はアプリケーション層に逃がして、 「システムは壊れる前提」で動くように組んでたのが本当にかっこいい。 もちろん失ったものもある。トランザクションとか、JOINとか。 でもそれ以上に、「崩壊せずスケールすること」を最優先にして設計した潔さに痺れた。 しかもこの話、わずか8分で聞けるってマジで神。 スタートアップでスケーラブルなシステムに悩んでる人、今まさにDB設計と戦ってる人、これは全員見たほうがいい。