Где мы сейчас
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 и чёткое действие. Если ни того, ни другого нет, алерт не должен пейджить.