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