Всем привет. Я Артём, CTO arcsinus. Наткнулся на статью в HackerNoon о том, что микросервисы — не панацея, и часто вообще не нужны. И знаете что? Какая жиза! Я насмотрелся на проекты, где команды внедряли микросервисную архитектуру потому, что так модно, а потом тихо плакали в углу, потому что это очень сложно поддерживать. Поделюсь своими соображениями о том, когда микросервисы действительно нужны, а когда это дорогая игрушка.
Вот математика из моего опыта: микросервисы увеличивает время разработки раза в полтора. И это только начало, затраты, которые можно уверенно закладывать ещё до старта работ.
Помимо очевидных накладных расходов на сетевое взаимодействие, сериализацию и HTTP-оверхед, есть менее заметные, но болезненные проблемы:
Вопреки расхожему мнению, монолит — не техдолг по умолчанию. Более того, есть сценарии, где он явно выигрывает:
У нас в arcsinus есть проект, где мы сразу пошли по пути модульного монолита. Результат — быстрая разработка, простая отладка и возможность при необходимости выделить отдельные модули в микросервисы.
Если хотите получить преимущества микросервисов, но без многочисленных накладных расходов — рассмотрите архитектуру модульного монолита. Приложение состоит из слабо связанных модулей с чёткими границами, но работает как единое целое. Принцип модульного монолита можно описать следующими тезисами:
Этот подход даёт 70-80 % преимуществ микросервисов. И когда действительно понадобится масштабирование — миграция пройдёт гораздо проще.
Наша система сама подберет вам исполнителей на услуги, связанные с разработкой сайта или приложения, поисковой оптимизацией, контекстной рекламой, маркетингом, SMM и PR.
Заполнить заявку
13260 тендеров
проведено за восемь лет работы нашего сайта.
А когда микросервисы действительно оправданы? Вот три ключевых сигнала:
Если столкнулись с каким-либо из этих сценариев, можно подумать о поэтапной миграции: выделить один проблемный модуль в отдельный сервис, обкатать процессы и инфраструктуру, а затем принимать решение о дальнейших шагах.
Микросервисы — это мощный, но вовсе не универсальный инструмент. Они оправданы, когда вы имеете дело с высоконагруженными системами, большими командами и сложными доменами. Во всех остальных случаях монолит может быть более разумным выбором.
Помните: архитектура — инструмент бизнеса, а не модный аксессуар. Иногда самое мудрое решение — признать, что вашему проекту пока достаточно хорошо спроектированного монолита.