Alex.Zaytsev173
New member
Когда я запускал свой первый проект — платформу для управления заказами в кафе — я с размаху начал проектировать микросервисную архитектуру. Три сервиса: авторизация, каталог, заказы. Каждый в своём контейнере, свой API, своё хранение. Звучало солидно, и на питч-сессии инвесторы кивали. Но через два месяца я понял, что больше времени трачу не на функциональность, а на то, чтобы сервисы между собой разговаривали.
Нажать чтобы Перейти на сайт
Второй мой проект был построен на монолите. Чистый фреймворк, модульная структура внутри кодовой базы, единое тестирование, один деплой. Команда из трёх человек вела его без единого инцидента на интеграцию. Скорость разработки выросла кратно: не нужно было синхронизировать контракты API, отлаживать сетевые ошибки и поддерживать три Docker-файла вместо одного. Клиенты не знали и не задумывались об архитектуре — им просто нравилось, что фичи появляются каждую неделю.
Но я не хочу сказать, что микросервисы — зло. В третьем проекте, когда мы вышли на стабильный рост и команде стало двадцать человек, мы начали выносить отдельные модули. Логика проста: когда команда по четырём-пяти людям начинает конфликтовать за одни и те же файлы и ждать блокировки деплоя, это сигнал к разделению. Но разделению осознанному, а не превентивному.
Из личного опыта я вывел правило: монолит — это точка входа, микросервисы — точка выхода. Начинай с монолита с чёткой модульной структурой, где границы будущих сервисов уже видны в коде. Не создавай инфраструктурные сложности до тех пор, пока они не стали реальным препятствием. Усложнение должно мотивироваться болью, а не амбициями.
Узнать подробнее →
Главная ошибка, которую я видел у многих стартапов, — архитектурный снобизм. Молодой тимлид хочет показать, что он «в теме», и тянет микросервисы на три человека. А потом эти три человека неделями чинят то, что в монолите решалось за вечер. Инвесторы смотрят на скорость выхода продукта на рынок, а не на количество контейнеров в кластере.
Мой совет: выбери то, что позволяет твоей команде двигаться быстрее прямо сейчас, а не через полгода, когда вы станете масштабируемыми. А как вы сами решаете этот вопрос — начинается ли ваш проект с монолита или вы сразу строите распределённую систему, и что пошло не так или, наоборот, всё прошло идеально?
По теме советую почитать: Облачные решения для малого бизнеса: мой опыт и честное сравнение
Второй мой проект был построен на монолите. Чистый фреймворк, модульная структура внутри кодовой базы, единое тестирование, один деплой. Команда из трёх человек вела его без единого инцидента на интеграцию. Скорость разработки выросла кратно: не нужно было синхронизировать контракты API, отлаживать сетевые ошибки и поддерживать три Docker-файла вместо одного. Клиенты не знали и не задумывались об архитектуре — им просто нравилось, что фичи появляются каждую неделю.
Но я не хочу сказать, что микросервисы — зло. В третьем проекте, когда мы вышли на стабильный рост и команде стало двадцать человек, мы начали выносить отдельные модули. Логика проста: когда команда по четырём-пяти людям начинает конфликтовать за одни и те же файлы и ждать блокировки деплоя, это сигнал к разделению. Но разделению осознанному, а не превентивному.
Из личного опыта я вывел правило: монолит — это точка входа, микросервисы — точка выхода. Начинай с монолита с чёткой модульной структурой, где границы будущих сервисов уже видны в коде. Не создавай инфраструктурные сложности до тех пор, пока они не стали реальным препятствием. Усложнение должно мотивироваться болью, а не амбициями.
Главная ошибка, которую я видел у многих стартапов, — архитектурный снобизм. Молодой тимлид хочет показать, что он «в теме», и тянет микросервисы на три человека. А потом эти три человека неделями чинят то, что в монолите решалось за вечер. Инвесторы смотрят на скорость выхода продукта на рынок, а не на количество контейнеров в кластере.
Мой совет: выбери то, что позволяет твоей команде двигаться быстрее прямо сейчас, а не через полгода, когда вы станете масштабируемыми. А как вы сами решаете этот вопрос — начинается ли ваш проект с монолита или вы сразу строите распределённую систему, и что пошло не так или, наоборот, всё прошло идеально?