Что такое микросервисы и чем они отличаются от архитектуры на основе API? - PullRequest
1 голос
/ 04 февраля 2020

Я хочу иметь возможность ответить на вопрос: «Вы пользуетесь микросервисами?» Я понятия не имею, что конкретно означает «микросервис». По сути, все, что я прочитал на "Что такое микроуслуги?" это либо бесполезная куча терминов, таких как «слабосвязанные», «мелкозернистые» и «легковесные», либо звучит так, как будто они написаны консультантами по управлению для руководителей предприятий и не имеют реального содержания.

Мой текущий понимание:

  • A monolithic application - это то, где все (кроме базы данных) интегрировано в единую кодовую базу. Например, я написал приложение ASP. NET MVC с моделями, представлениями и контроллерами. Это была единая кодовая база, работавшая поверх IIS и подключенная к MS SQL.
  • . API-driven application - это та, где бизнес-логика c отделена от логики приложения; API определяет / реализует бизнес-логи c, а приложение взаимодействует с пользователями и выполняет бизнес-логи c, вызывая API. Например, я преобразовал свое приложение ASP. NET MVC в A) API, который запускался в одном контейнере, и B) одностраничное приложение (SPA), которое выполнялось в отдельном контейнере и выполняло вызовы API клиентом. side.

Позже, когда я начал писать дополнительные приложения, каждое с собственным SPA и API, я решил выделить аутентификацию и авторизацию в свой собственный API. А потом я решил выделить некоторые бизнес-логики c, которые были бы общими для каждого API, но не относились к authn / authz, в еще один API. Таким образом, теперь каждый SPA взаимодействует независимо (как минимум) с тремя API. (Каждый API представляет собой отдельный контейнер, а каждый SPA - отдельный контейнер.)

Являются ли эти микросервисы? Что такое микросервисы? Каждое приложение имеет один API, и в большинстве случаев я могу разбить их на несколько меньших API. Так это монолитные c API или микросервисы?

1 Ответ

1 голос
/ 05 февраля 2020

Я согласен с вами, что, похоже, не существует надежного метода для измерения таких целей, как «малые», «слабосвязанные» и т. Д. c. Вероятно, трудно дать точное определение, потому что это зависит от контекста и от того, как работает приложение.

Однако существуют некоторые критерии, касающиеся процесса разработки и развертывания для архитектуры микросервисов:

  • Вы должны иметь возможность предоставлять и развертывать службы независимо друг от друга.
  • Команда разработчиков должна иметь возможность внедрять сервис независимо от других сервисов.

Теперь интересный вопрос - как найти подходящие границы для сервисов. Мне понравилась статья Как разбить монолит на микросервисы , в которой есть приятное утверждение:

Поиск границ домена в устаревшем монолите - это искусство и наука.

Похоже, вы уже много думали о том, что разделять в отдельных сервисах, поэтому вы, по крайней мере, хорошо на пути к использованию микросервисов.

...