Google Drive風のファイル保存共有システムの設計
ファイル保存システムの設計case-study:要件、データモデル、チャンク式upload API、共有、同期、競合処理と負荷スパイク対策
ファイル保存システムの設計case-study:要件、データモデル、チャンク式upload API、共有、同期、競合処理と負荷スパイク対策
Builderパターンでパラメータが多いオブジェクトを読みやすく、immutable、そして検証可能に作成する方法:手動実装からLombok @Builderとrecordまで
Kafka の Consumer group による Partition 割り当てと Rebalance の仕組みを理解し、Spring Boot での対応方法を学びます。
PostgreSQL のトランザクション処理方法、4 つの分離レベル、ロストアップデートや Write Skew などの現象、Spring Boot での設定とリトライロジックについて学びます。
複数のマイクロサービス間でデータ一貫性を保つため、Saga パターンを使用する方法を説明します。2PC を必要としない設計で、Java 21 を使った orchestration の実装例とテストを含みます。
SET NX PXとLuaスクリプトで分散ロックを自分で実装する方法、watchdog搭載のRedissonの使用法、Testcontainersでテストを書く方法、そして頻繁に起こるエラーを回避する方法を学べます。
入札システム設計の事例研究。データモデル、API、条件付きアップデートによる並行Bid処理、Redis Lua、スナイピング防止、安全なセッション終了。
cache-asideとwrite-throughという2つの一般的なキャッシング戦略を理解し、Spring Boot 3で実装して、適切なTTLを選択する方法を学びます。
割引コードシステム設計のケーススタディ:フラッシュセール時のオーバーセル防止、アトミックなUPDATE、Redis Lua、Kafkaと有効期限付きの予約メカニズムを活用
Spring Boot、Kafka、Redis GEO、SSEを使用したリアルタイム注文追跡とシッパー位置情報システムの設計に関するケーススタディ。競合状態、データ一貫性、バーストトラフィックの分析。
1対1およびグループチャットの設計ケーススタディ:seqに基づくデータモデル、べき等なメッセージ送信API、watermarkベースの既読状態、outbox + Kafka、そしてトラフィック急増への対応。
Debeziumを使ってPostgreSQLのWALを読み込み、すべてのデータ変更をKafkaにプッシュし、Spring Bootで消費。データ書き込みコードの変更は不要です。
ニュースフィード設計のケーススタディ:要件、スケール、データモデル、API、fan-out on writeとon readの比較、ハイブリッドモデルとcelebrityの処理、一貫性、バースト負荷
Spring BootとKafkaでorchestration型のSagaパターンを実装。飛行機チケット、ホテル、支払い予約と、ステップ失敗時の自動補償。
データベース書き込みとKafka送信を同時に実行するとイベントが失われやすいです。本記事ではSpring Boot 3とKafkaを使用してOutbox patternを設定し、両者を常に一致させる方法を説明します。
Consumer lagの概要、CLIやAdminClient、Micrometerでの測定方法、broker/producer/consumerの監視指標、適切なアラート設定について説明します。
Kafkaプロデューサーの acks, enable.idempotence, batch.size, linger.ms を設定してメッセージの損失がなく、重複がなく、高いスループットを実現する
Spring Boot 3でRedis StreamsとConsumer Groupを使用して、手動ACK、保留メッセージの再試行、およびdead-letterを備えたat-least-onceイベント処理を実装します。
redis-cli、MEMORY USAGE、OBJECT FREQ を使用して hot key と big key を検出し、キーシャーディング、UNLINK、ローカルキャッシュ、キーレプリケーションで対応する方法を学びます。
Redis が RDB と AOF でデータをディスクに永続化する仕組み、各モードの設定方法、そして永続化を有効にしてもデータが失われる状況を理解します。