Комментарии 8
В Монолите весь код должен быть в едином стиле, a в разных микросервисах можно использовать разные подходы, языки программирования и фреймворки.
Зачем вам усложнять на порядок приложение?
Вы хотите за отдельный прайс сопровождать этот зоопарк?
Подсказки:
Для монолита можно использовать модули и библиотеки, внутри которых можно применять разные стили и фреймворки.
Минусы у такого подхода есть, поэтому если проект маленький, то особых преимуществ не получите. НО по мере того как система будет разрастаться, вы начнете сталкиваться с типичными проблемами монолита:
— тяжелое или практически невозможное горизонтальное масштабирование
— много конфликтов при работе нескольких команд
— ci/cd для отдельных компонентов
и список можно дальше перечислять.
Много компаний уже пришли к тому, что с имеющимися монолитами очень тяжело дальше жить и всячески пытаются переходить на микросервисную архитектуру.
Можете статью Фаулера почитать, почему такой подход появился
martinfowler.com/articles/microservices.html
Угу, проблема в том, что в 99% случаев, все называют главной проблемой монолита — сильная связанность кода (например половина пунктов из коммента ниже).
Что не имеет совершенно ничего общего с монолитом. Можно иметь такую же связанность кода и на микросервисах. А можно разбить всё на независимые модули в рамках одного монолита и тем самым решить бОльшую часть проблем.
И лично я согласен с автором предыдущего коммента: по мне хорошо организованный монолит это лучше чем зоопарк технологий.
Но я согласен и с вами, в довольно больших проектах, монолит тоже приведёт к страданиям. Если вам требуется больше нескольких запущенных инстансов монолита и у вас очень много функциональности
Как всегда, вопрос баланса: микросервисы это дороже и сложнее, поэтому их есть смысл выбирать, только когда это действительно обосновано. А не когда люди банально не умеют писать модули или хотят поиграться с новой технологией
— для горизонтального масштабирования в продакшене,
— для использования более удобной распределённой разработки,
— для использования разных технологий в плане удобства решения конкретной подзадачи,
— для независимого частичного развёртывания,
— для упрощения тестирования,
— для чёткого разграничения сфер ответственности,
— для…
upd. перекликается с комментом выше. на модерации провисел…
Есть кратко суть статьи: Джун — пишет код в контроллере. Мидл — пишет кучу абстракций. Сеньор — знает когда нужно писать код в контроллере, а когда нужны абстракции.Что за дискриминация по
Организация кода в микросервисах и мой подход применения гексагональной архитектуры и DDD