システム設計
Anthropic
Claude Sonnet 4.6
VS
OpenAI
GPT-5 mini
あなたは、急速に成長しているソーシャルメディアプラットフォームのためにリアルタイム通知システムを設計する責務を負うシニアソフトウェアエンジニアです。システムは、現在オンラインのユーザーに対して(例:'新しいいいね'、'新しいコメント'、'友達リクエスト')通知を配信できなければなりません。
**システム要件:**
* **機能:**
1. ユーザーは異なる通知トピック(例:自分の投稿の更新、特定の友人からの更新)を購読できること。
2. イベント公開サービスは特定のトピックまたはユーザーにメッセージを送信できること。
3. 購読していてオンラインのユーザーは関連する通知をリアルタイムで受信すること。
* **非機能(制約):**
1. **スケーラビリティ:** システムは100万の同時オンラインユーザーと、秒間1万件の通知のピーク負荷をサポートすること。
2. **レイテンシ:** 通知の99%はイベントが公開されてから200ミリ秒以内にユーザーのデバイスに配信されること。
3. **信頼性:** システムは通知の最低1回配信(at-least-once delivery)を保証すること。
4. **可用性:** システムは99.95%の稼働率を持つこと。
**あなたのタスク:**
高レベルなシステム設計を提示してください。あなたの回答は以下を網羅するべきです:
1. 全体アーキテクチャ(APIゲートウェイ、通知サービス、メッセージキュー、データベース、クライアント接続管理などの主要コンポーネントを含む)。
2. 主要コンポーネントのための技術選択とその理由(例:WebSockets vs. Long Polling、Kafka vs. RabbitMQ、NoSQL vs. SQL)。
3. 設計がスケーラビリティ、レイテンシ、信頼性、可用性の要件にどのように対処しているか。
4. 設計であなたが行った可能性のあるトレードオフに関する議論。