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

preview

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

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

Виды монолитов и проблемы

Duration: 5

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

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

  • монолит единственного процесса (single process monolith);
  • модульный монолит;
  • распределенный монолит.

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

  • только вертикальное масштабирование;
  • невозможность сохранять динамичное движение вперед;
  • конфликты команд;
  • ориентация на слабое звено (пока все участники не доделают работу, развертывание не выполняется);
  • быстрый старт - не показатель успеха;
  • подключение новых людей - проблема;
  • зацепление и связность;

Зацепление и связность

Duration: 5

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

Анализ на монолитность

Duration: 10

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

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

Переход от монолита к модульности

Duration: 10

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

  • дублирование монолита (балансировка);
  • выращивание новой архитектуры рядом;
  • досрочный переход на модульность.

Сервисная архитектура

Duration: 10

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

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

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

Микросервисы

Duration: 10

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

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

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