← к ленте

Уроки первого 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
В

Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖