### 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/)