Comments 13
А сам микросервис это разве не N уровневая архитектура?
Эти принципы сделают наше приложение масштабируемым, обслуживаемым и высокопроизводительным.
Интересно откуда такая уверенность?
А вообще статья похожа на маркетинговую копипасту от MS
Однако если мы создаем очень большое приложение для обслуживания сотен тысяч пользователей или более, где требуется высокий уровень надежности, мы можем использовать микросервисную архитектуру.
В чем проблема обеспечения надежности монолита? Горизонтально он масштабируюется точно также как и какой-нибудь микросервис, надежность обеспечивается точно такими же средствами, что и для микросервисов. Монолитов, работающих с миллионнами пользователей, дофига.
Мартин Фаулер, один из главных идеологов микросервисов который кажется даже придумал это название, вполне согласен с тем, что по-умолчанию стоит делать монолит, а думать о микросервисах имеет смыл тогда, когда на это есть веские причины: https://www.youtube.com/watch?v=GBTdnfD6s5Q&t=535s&ab_channel=GOTOConferences
И ни одна из действительно веских причин вами не была упомянута вообще.
Проблема с масштабированием в том, что разные части монолита испытывают разную нагрузку. И когда у вас какая-то часть прекрасно справляется в одном экземпляре, а другой надо сто инстансов - начинаются танцы с бубном
Автор сравнивает подходы на разных уровнях абстракции. Что дальше, рассуждения о том, стоит ли применять ООП или микросервисы?
Кто мешает строить многоуровневую архитектуру из микросервисов?
Наведем немного порядок "в головах" :)
N-уровневая архитектура - это разнесение системы по физически разным машинам (виртуальным - тоже считается). Например:
- 1-уровневая - запуск всей системы на компьютере пользователя;
- 2-уровневая - классический клиент-сервер, когда слой представления запускается в браузере пользователя (на его машине), а серверная (с базой и т.п.) - на отдельном сервере;
- 3-уровневая - тот же клиент-сервер, но под DB выделена отдельная машина;
Слоеная архитектура - это разнесение системы по логически компонентам (очень похоже на слои, но делят логикой :).
Эти два понятия близки/переплетаются. Например, во время разработки три логических слоя (представление, бизнес логика, данные) запускаются как одноуровневая система на компьютере пользователя. А при развертывании в прод - как N-уровневая система.
Часто уровни и слои называют "горизонтальным" разбиением системы.
Микросервисная архитектура - это способ "вертикального" разбиения системы на слабосвязанные части. По факту, каждая такая часть может быть реализована как N-уровневая/слоеная.
Т.е. в принципе не верно противопоставлять эти архитектуры, они "о разном".
Сначала хочу похвалить автора: Пишете очень хорошо. Читать было интересно даже несмотря на то, что все время подгорало по мере чтения
По контенту:
Если кратко резюмировать претензии, то противопоставлять N уровневую архитектуру, SOLID и микросервисы это примерно как противопоставлять торт и духовку.
При всем уважении, есть множество замечательных книг на тему Микросервисов, при чем бесплатных. Настоятельно рекомендовал бы прочитать одну из них. К примеру вот бесплатная книга от Microsoft: https://learn.microsoft.com/en-us/dotnet/architecture/microservices/
Есть еще замечательная, но платная книга: https://www.manning.com/books/microservices-patterns
В целом есть много других замечательных книг, что бы подучить матчасть.
Вижу что это у вас первая публикация, не бросайте, пишете хорошо и для первой попытки очень неплохо.
Микросервисы и N-уровневая архитектура