В современной архитектуре принято выделять монолитные и микросервисные архитектуры. Однако это очень грубое обобщение, на самом деле существует большое количество реализаций как монолитных, так и микросервисных архитектур.

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

Важно! Монолит - это не плохо само по себе, но есть свои нюансы.

Монолиты бывают:

Основные проблемы:

## Зацепление и связность Duration: 5

- Зацепление кода;
- Зацепление реализации;
- Временное зацепление (синхронность);
- Зацепление развертывания;

На уровне кода понять архитектуру очень сложно, увидеть монолитность очень сложно. Поэтому начать анализ архитектуры нужно с проработки диаграмм приложения (диаграммы могут строиться по модели С4). Обязательный минимум - диаграммы классов.

Для того чтобы "прочувствовать" идею монолитности, можно поискать разные абстракции. Удачной абстракцией является аналогия с анатомией человека.

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

Сохранение монолитности может быть выполнено при использовании сервисной архитектуры, но при этом можно уйти от проблем развития и роста (сервисный подход).

- Контракт;
- Независимость;

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

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

Важные элементы, которые должны быть учтены в микросервисной архитектуре:

- API
- Балансировка
- Оркестрация и хореография
- Защита от сбоев
- Шлюз
- Мониторинг
- Система конфигурирования
- Обнаружение микросервисов (Discoverying)