Coinbaseはユーザーサービスを拡大し、1秒あたり150万件以上のアイデンティティリードを維持できるようにしました。 その方法は以下の通りです: - モノリシックなユーザーオブジェクトを「フラグメント」と呼ばれる独立した論理グループに分割しました。 - 単一のMongoDBクラスターからMongoDBとDynamoDBの両方を用いたフェデレーテッドシステムへの移行。 - 同時書き込みには、Optimistic Concurrency Control(OCC)を実装しました。これはリソースバージョンフィールドを使って書き込み時の比較・交換を行い、遅いグローバルロックを回避します。 - 重要なフローに対する強力な読み書き後保証のために「フレッシュネストークン」を使用します。これらのトークンは読み取りリクエスト時に渡され、返されるデータがトークンに関連付けられたバージョンと同等の最新であることを保証するため、必要に応じてキャッシュをバイパスします。 - サービスが過負荷を検知した際に、受信トラフィックの一部を動的にダミーターゲットグループに迂回するロードシェディング機構を導入し、MongoDBのデスループを防ぎ、サービスの緩和を可能にします。 このアーキテクチャは、暗号市場の巨大で予測不可能なピークに対応するスケーラビリティと、Coinbaseが信頼をもって構築できるサービスとしてのレジリエンスを提供します。