СОА (сервис-ориентированная архитектура) — многослойная (три или более уровня) архитектура, каждый слой которой отвечает за определённую «обязанность»:
Микросервисы — это небольшие автономные совместно работающие сервисы.
Можно выделить следующие основные характеристики МСА:
В IT-ландшафте крупных организаций существует множество систем и сервисов, обеспечивающих функционирование со стороны IT. Для взаимодействия этих систем используется специальное связующее программное обеспечение (middleware).
Например, ESB (Enterprise Service Bus, сервисная шина предприятия). Данная шина выносит наружу API, которые могут вызывать различные системы, и за API реализует логику вызова. Этот подход хорошо зарекомендовал себя благодаря тому, что:
В противовес ESB существует подход «умные сервисы и глупые каналы», используемый в МСА.
В виде каналов в данном подходе выступают различные брокеры:
Как было упомянуто ранее, при проектировании МСА должны поддерживать два DevOps-подхода:
Непрерывная поставка состоит из следующих этапов.
«Данная характеристика достигается применением соответствующих технологий, а именно — контейнеризацией, например, в docker-контейнер.
При использовании данной технологии микросервисы упаковываются в docker-контейнеры, которыми управляет специальная служба (например, Kubernetes или Consul). Для того, чтобы микросервисы могли «жить» в разных копиях и их экземпляры создавались автоматически, служба управления контейнерами содержит вспомогательную службу регистрации микросервисов. Вот как это работает.
Микросервисы — небольшие автономные сервисы, предоставляющие конкретный бизнес-функционал. Моделирование микросервисов должно осуществляться на основе ограниченных и максимально понятных контекстов.
Основные плюсы МСА:
Плюсы МСА рождают также определенные минусы:
Для этого существует очень много подходов. Самый простой — разбить микросервсы по уровням транзакции, чтобы вся транзакция была реализована в одном микросервисе. Когда мы поймём, что некоторые куски функционала в микросервисе часто изменяемы и их лучше вынести в соседний микросервис, чтобы обеспечить стабильность первичного микросервиса, можно реализовать транзакционность через паттерн «Saga».
Правила взаимодействия микросервисов в асинхронном режиме
В данном случае всё зависит от конкретной ситуации. Основные подходы:
В первую очередь необходимо хорошо изучить бизнес, для которого реализуется МСА, чтобы верно определить контексты. Далее всё зависит от используемого технологического стека.
Из обязательного:
Существует универсальные правила построения уровня кэшированных данных.