Уроки первого outage: почему монолит надежнее микросервисов
F@pmdailyмедиа / агрегатор
1 месИстория о том, как проблемы с коммуникацией между сервисами привели к сбою в рассылке СМС, и почему монолитная архитектура остается надежным выбором.
Сложные распределенные системы часто ломаются не из-за ошибок в коде, а из-за непредсказуемого взаимодействия между компонентами.
- Автоматизация написания кода с помощью ИИ не отменяет необходимости проектировать надежные архитектурные связи.
- Каскадные сбои при ретраях могут быстро привести к блокировке аккаунтов у внешних провайдеров.
- Монолитная архитектура упрощает отладку и контроль за состоянием системы в небольших проектах.
У Зои недавно случился первый outage — перестали ходить авторизационные СМС.
Я с самого начала решил, что проект будет исключительно монолитным. Так и живем уже год — весь код, включая бухгалтерию, шаблоны сторисов и учёт затрат на маркетинг живет в одном репозитории. Полгода назад, правда, искал сокращалку урлов и решил, что навайбать свою будет быстрее, чем разбираться с традиционно кривыми API отечественного производителя. В итоге она и выпала.
У нас есть массовая (вернее не совсем, всего пара сотен) рассылка СМС. В какой-то момент скорость создания этих СМС переросла порог тротлинга в сокращалке урлов (не спрашивайте, зачем там тротлинг на внутреннем API — это только клод знает). Сокращалка отказала, и СМС пошли с полными урлами, всеми этими utm_medium и utm_source — кароч по три СМС вместо одной.
Как назло, на балансе было мало денег — СМС-провайдер начал отказывать с 402. Но у нас же ретраи! Из-за ретраев случился уже шторм — в какой-то момент провайдер стал отвечать уже не 402, а 403 (вернее заменил 200 ok с текстом «No Money», на 200 ok с текстом «ip blocked», но кого такое удивляет). В общем пока я проснулся, пока сообразил как чистить очередь ретраев, пока пополнил баланс — потеряли кучу денег на рекламу.
Вот и получилось, что есть несколько сервисов, каждый по отдельности работает хорошо, а когда начинают коммуницировать между собой — случается хуйня. Мне кажется в эпоху AI все баги такими и будут: потому что на привычные ошибки в коде легко нагенерить тестов, даже не имея специальных знаний. А вот коммуникацию между сервисами, просто так, увы, не протестируешь.
Делайте монолиты кароч. Ну или хотя бы слушайте Антона.
Кратко (AI)
Автор делится опытом первого серьезного сбоя в проекте «Зоя», вызванного проблемами взаимодействия между монолитным ядром и самописным сервисом сокращения ссылок. Из-за превышения лимитов API и ошибок в логике ретраев при нехватке средств на балансе СМС-провайдера произошел каскадный сбой. Автор делает вывод, что современные инструменты ИИ помогают писать код, но не решают проблему сложных коммуникаций между распределенными компонентами системы.
Обсуждение
0Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖