Alex.Kiselev
New member
Когда я два года назад начинал свой первый SaaS-проект с командой из трёх человек, мы сразу решили строить на микросервисах. Казалось, что это лучший способ масштабироваться: каждый сервис отвечает за одну задачу, и мы можем добавлять модули по мере роста. Через полгода я понял, что принял это решение слишком рано.
Нажать чтобы Перейти на сайт
В начале пути микросервисы действительно дали нам определённые преимущества. Мы могли развёртывать сервис платежей независимо от сервис авторизации. Если у нас падал каталог товаров, остальные части системы продолжали работать. Для команды из трёх человек это казалось идеальной гибкостью: каждый разработчик мог закрывать свой сервис целиком и не ждать, пока кто-то другой закончит свою часть.
Однако на практике мы столкнулись с серьёзными проблемами, о которых мало пишут в статьях. Сетевые задержки между сервисами накапливались, и простой запрос к пользовательскому профилю требовал пяти последовательных вызовов к разным микросервисам. Транзакции становились кошмаром: как обеспечить согласованность данных между сервисами, когда нет общей базы? Мы потратили больше времени на инфраструктуру и оркестрацию, чем на реальную бизнес-логика.
Самым болезненным оказалось отладка. Когда что-то ломалось в проде, я провёл не один час, пытаясь проследить цепочку запросов через трассировку, почитав логи в разных системах мониторинга. В монолите это было бы одним стек-трейсом и одним окном терминала. Плюс, каждый микросервис требовал собственный CI/CD пайплайн, собственный деплой и собственный мониторинг — это удваивало операционную нагрузку на команду.
Узнать подробнее →
Сейчас я придерживаюсь принципа: начинай с монолита, который хорошо структурирован по доменам. Переходи к микросервисам тогда, когда у тебя есть конкретная боль, которую не решить архитектурной чистотой — например, когда одна часть системы требует масштабирования в разы больше, чем остальная, или когда разные команды должны работать на разных технологических стеках. Я разделил свой проект на три микросервиса только через полтора года, когда это стало объективно необходимым, а не модным.
Микросервисы — это инструмент, а не цель. Для стартапа на ранней стадии они чаще вредят, чем помогают. А как вы считаете: ваш проект уже готов к переходу на микросервисы, или вы пока находитесь в фазе, когда монолит даст больше пользы при меньших затратах?
По теме советую почитать: Что такое технический долг и как его гасить
В начале пути микросервисы действительно дали нам определённые преимущества. Мы могли развёртывать сервис платежей независимо от сервис авторизации. Если у нас падал каталог товаров, остальные части системы продолжали работать. Для команды из трёх человек это казалось идеальной гибкостью: каждый разработчик мог закрывать свой сервис целиком и не ждать, пока кто-то другой закончит свою часть.
Однако на практике мы столкнулись с серьёзными проблемами, о которых мало пишут в статьях. Сетевые задержки между сервисами накапливались, и простой запрос к пользовательскому профилю требовал пяти последовательных вызовов к разным микросервисам. Транзакции становились кошмаром: как обеспечить согласованность данных между сервисами, когда нет общей базы? Мы потратили больше времени на инфраструктуру и оркестрацию, чем на реальную бизнес-логика.
Самым болезненным оказалось отладка. Когда что-то ломалось в проде, я провёл не один час, пытаясь проследить цепочку запросов через трассировку, почитав логи в разных системах мониторинга. В монолите это было бы одним стек-трейсом и одним окном терминала. Плюс, каждый микросервис требовал собственный CI/CD пайплайн, собственный деплой и собственный мониторинг — это удваивало операционную нагрузку на команду.
Сейчас я придерживаюсь принципа: начинай с монолита, который хорошо структурирован по доменам. Переходи к микросервисам тогда, когда у тебя есть конкретная боль, которую не решить архитектурной чистотой — например, когда одна часть системы требует масштабирования в разы больше, чем остальная, или когда разные команды должны работать на разных технологических стеках. Я разделил свой проект на три микросервиса только через полтора года, когда это стало объективно необходимым, а не модным.
Микросервисы — это инструмент, а не цель. Для стартапа на ранней стадии они чаще вредят, чем помогают. А как вы считаете: ваш проект уже готов к переходу на микросервисы, или вы пока находитесь в фазе, когда монолит даст больше пользы при меньших затратах?