Я исследовал микросервисные архитектуры, пытаясь получить общее представление обо всех плюсах и минусах, когда и почему, и т. Д. Большая часть информации, которую я читаю / смотрю, поступает из ThoughtWorks (Мартин Фаулер, Нил Форд и др.). аль).
Большинству работ Мартина Фаулера по этому вопросу посвящено несколько лет, когда Микросервисы (как общеизвестное имя в программировании, если не в общей практике) были еще молоды, поэтому я беру большую часть этого с недоверием.
Одна вещь, в частности, это:
Когда я слышу истории о командах, использующих архитектуру микросервисов, я заметил общую закономерность.
- Почти все успешные истории микросервисов начались с монолита, который стал слишком большим и был разрушен
- Почти во всех случаях, когда я слышал о системе, которая была построена как микросервисная система с нуля, это привело к серьезным проблемам.
Этот шаблон заставил многих моих коллег утверждать, что вам не следует начинать новый проект с микросервисами, даже если вы уверены, что ваше приложение будет достаточно большим, чтобы оно того стоило. ,
(ссылка: https://martinfowler.com/bliki/MonolithFirst.html - выделите их)
Теперь, спустя 3 года, и когда микросервисы являются более вездесущим термином, можно ли вообще согласиться с тем, что новая система обычно лучше обслуживается благодаря наличию больших (чем микросервис, но меньше, чем монолит) сервисных блоков для начала и созданию они более гранулированы как часть эволюционной меры?
Или есть ли норма начинать проект с нуля с гранулированной микросервисной архитектурой, в отличие от приведенных выше утверждений?
Похоже на здравый общий подход, но любопытно мысли сообщества.