Где мы сейчас
MyChatBot обрабатывает 50M+ сообщений на месяц по WhatsApp, Telegram, Instagram, voice и email. Мы вирослы с 1M/месяц два годы потому. Вот что зминилось в нас в головах, пока мы масштабувались.
1. Tail latency, едина латентнисть, что имеет значення
Мы витратили первый год на оптимизацию медианнои latency. Медиана нормальна. Клиенты отчувают P95 и P99, саме там живут погани досвиды. Теперь каждый дашборд, на который мы дивимось, показывает P99 первым.
2. Идемпотентнисть, или вы плакатимете
Каждое сообщение имеет быть idempotent. Мережи падают. Webhooks ретраяться. Если ваш handler не idempotent, вы надишлете дубликати реальним клиентам. Мы навчились этого незручним шляхом.
3. Backpressure лучше за rate-limits
Rate limits здаются безпечними, но они штовхают проблему вгору, обычно до ваших клиентов, которые потом скаржаться. Backpressure (плавне сповильнення, когда downstream повильний) держит систему стабильною без сюрпризов.
4. Логи, не метрики
Не намагайтесь виводити метрики с логов в масштабе. Стройте first-class метрики. Логи, для дебагу окремих кейсов; метрики, для розуминня системы.
5. Pager-гигиена, частина инженернои культури
Если команду пейджать вночи за вещи, на которые не можно дияти, она вигорить. Каждый pageable-алерт повинен иметь runbook и читку дию. Если ничего с этого немает, алерт не повинен пейджити.