Микросервисы или монолит. Какую архитектуру выбрать?


Особенности микрсервисов

Микросервисы — это несколько независимых однофункциональных протоколов или сервисов, которые собираются в приложение.

Области применения:
- При работе небольшой команды разработки
- При тестировании (вы можете протестировать какую-то отдельную область. Не нужно запускать все приложение целиком, как при монолите)
- При разных технологических стеках. (например, одна команда разработки использует Python, а другая C++)

Характеристики микросервисов:
- Удобность для бизнеса (бизнес эффективность повышается за счет роста эффективности малых групп)
- Удобная маршрутизация. Все просто - микросервисы получают запросы и после дают на них ответ
- Несколько компонентов - сервисы работают независимо друг от друга
- Данные управляются децентрализовано
- Устойчивость к сбоям. Сложно себе представить ситуцацию, в которой все компоненты выходят из строя одновременно


рис.1 Микросервисная архитектура

Особенности монолита

Монолитная архитектура


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


Область применения:

Хорошо использовать в самом начале проекта - легкое развертывание и удобное управление кодом. Можно сразу пускать в релиз все, что находится в монолите.


Характеристики монолита:

- Легкое развертывание, так как используется только один исполняемый файл или каталог.


- Разработка на монолите легче, так как приложение создается с использованием одной базы кода.


- Производительность. Один интерфейс API часто может выполнять ту функцию, которую при работе с микросервисами выполняют несколько API.


- Легче проводить тестирование, тк монолитное приложение - представляет собой единый центролизованный модуль


- Удобная отладка, тк весь код находится в одном месте


В следующем посте сравним монолит и микросервис

Рис.2 Монолитная архитектура

Что же лучше?

Давайте теперь суммируем все знания о микросервисах и монолитах и посмотрим на минусы и плюсы каждого
Рис.3 Сравнение Монолита и микросервиса
Суммируя, можно сказать, что для разработки сложных высоконагруженных приложений для бизнеса лучше подойдет микросервисный подход. Пример системы на микросервисе - популярные маркетплейсы, например, Wildberries или Ozon. Каталог товаров, рейтинг, чат с поддержкой, отзывы и фото — это отдельные микросервисы.

Классический же интернет магазин, например, магазин комнатных растений одного поставщика является монолитом.

Также стоит отметить, что нельзя вначале делать приложение на монолите, а потом превратить его в микросервис. Нужно учитывать бизнес потребности и стратегию развития приложения в будущем - если планируется большое масштабирование, то мы рекомендуем использовать микросервисную архитектуру.

Гибридная архитектура является некоторым компромиссом между микромервисом и монолитом. Она реализуется следующим образом: базовый функционал представлен монолитом, а отдельные функции — в виде микросервисов. Таким образом, можно сочетать надежность монолитных приложений с гибкостью микросервисов.