В современной архитектуре принято выделять монолитные и микросервисные архитектуры. Однако это очень грубое обобщение, на самом деле существует большое количество реализаций как монолитных, так и микросервисных архитектур.
Существует много точек зрения на то, что является монолитом. Но наиболее часто монолитами называют приложения с позиции развертывания. Т.е. приложения, которые должны быть развернуты в едином цикле и могут работать только при выполнении всех этапов развертывания. Так же монолитом принято считать системы с сильными связями между модулями или компонентами.
Важно! Монолит - это не плохо само по себе, но есть свои нюансы.
Монолиты бывают:
Основные проблемы:
## Зацепление и связность Duration: 5
- Зацепление кода;
- Зацепление реализации;
- Временное зацепление (синхронность);
- Зацепление развертывания;
На уровне кода понять архитектуру очень сложно, увидеть монолитность очень сложно. Поэтому начать анализ архитектуры нужно с проработки диаграмм приложения (диаграммы могут строиться по модели С4). Обязательный минимум - диаграммы классов.
Для того чтобы "прочувствовать" идею монолитности, можно поискать разные абстракции. Удачной абстракцией является аналогия с анатомией человека.
Общая идея заключается в том, чтобы сначала уйти на модульный монолит, а потом на сервисную или микросервисную архитектуру, при этом есть следующие варианты:
Сохранение монолитности может быть выполнено при использовании сервисной архитектуры, но при этом можно уйти от проблем развития и роста (сервисный подход).
- Контракт;
- Независимость;
При правильной грануляции системы, возможно жить с монолитной архитектурой в рамках сервисной архитектуры.
Микросервис - по сути является "микромонолитом", и гибкость достигается за счет взаимодействия многих маленьких монолитов.
Важные элементы, которые должны быть учтены в микросервисной архитектуре:
- API
- Балансировка
- Оркестрация и хореография
- Защита от сбоев
- Шлюз
- Мониторинг
- Система конфигурирования
- Обнаружение микросервисов (Discoverying)