### 10章 通知の設計
- 通知の仕組み
- [[🗃️iOS]]
- プロバイダ -> APNS -> iOS
- Android
- プロバイダ -> FCM -> iOS
- SMS
- プロバイダ -> SMSサービス(Twilio, Nexmo) -> SMS
- メール
- プロバイダ -> eメールサービス(sendgrid, mailchimp) -> メール
## 設計の深掘り
#### 信頼性
- [[🗃️DB]]に、通知ログを保存して、再試行メカニズムを実装する
- 通知を一度だけ受け取るのか?
- 分散システムだと、通知が重複してしまう可能性がある
- イベントIDをチェックして、以前配信したかを確認する
- [You Cannot Have Exactly-Once Delivery – Brave New Geek](https://bravenewgeek.com/you-cannot-have-exactly-once-delivery/)
## 追加コンポーネント
- 通知テンプレート
- 通知設定ON/OFF
- レート制限
- ユーザーに通知が送られすぎないように制御
- 再試行の機能
- セキュリティ
- キューに入った通知の監視
- イベントのトラッキング
- [Key Metrics for RabbitMQ Monitoring | Datadog](https://www.datadoghq.com/ja/blog/rabbitmq-monitoring/)