Шаблон “Микросервисная архитектура”¶

Микросервисная архитектура — это архитектурный стиль, при котором представление реализации структурируется в виде набора компонентов — исполняемых или WAR файлов. Компоненты — это сервисы, коннекторы — коммуникационные протоколы. Каждый сервис имеет свою архитектуру логического представления (например, шестигранную архитектуру).
На рисунке — пример микросервисной архитектуры, где сервисы соответствуют бизнес-функциям, коннекторы — REST API или асинхронный обмен сообщениями.
Важной характеристикой микросервисной архитектуры является слабое зацепление
достоинства¶
- Continuos delivery, Continuos deploy — возможность непрерывных доставки и развертывания
- Обеспечивает уровень тестируемости — маленькие сервисы проще покрывать автоматическими тестами
- Обеспечивает уровень развертываемости — каждый сервис можно развернуть независимо от других
- Позволяет сделать команды автономными
- Небольшая кодовая база каждого сервиса
- Независимое масштабирование по осям X и Z куба масштабирования, кроме того — каждый компонент можно развернуть на оптимальном для компонента оборудовании
- Лучшая изоляция неполадок
- Возможность экспериментировать и внедрять новые технологии
недостатки¶
- Сложно подобрать подходящий набор сервисов — нет алгоритма разбиения системы на сервисы — каждый раз нужно всё продумывать с нуля. Также, если разделить систему неправильно — можно получить распределенный монолит — систему, компонеты которой необходимо деплоить вместе. Такой системе присущи недостатки как монолита, так и микросервисов
- Распределенные системы гораздо сложнее — сложнее реализация взаимодействия, сложнее реализация согласованности данных, сложнее написать тесты, покрывающие несколько сервисов, сложнее администрирование
- Развертывание фич, охватывающих несколько сервисов, требует тщательной координации нескольких команд
- Нетривиальность решения о переходе — непонятно, в какой момент надо переходить от монолита к микросервисам
Ссылки¶
https://microservices.io/patterns/microservices.html
Последнее обновление :
21 июня 2023 г.
Дата создания : 13 июля 2022 г.
Дата создания : 13 июля 2022 г.