Перейти к содержанию

Монолит

Монолитное приложение - это такое приложение, которое устанавливается и исполняется как единый процесс на конкретном узле. То есть, если приложение состоит из одной большой кодовой базы, компоненты системы деплоятся и запускаются вместе (т.к. зависят друг от друга) - то такое приложение можно назвать монолитным.

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

Стили монолита

Микроядро

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

Плагины в микроядре как правило автономны, но ничего не мешает плагинам расширять функционал ядра.

Примеры

  • Сервер Spigot для Minecraft. Он реализует API, с помощью которого разработчики могут изменять поведение и механики на сервере.
  • Google Chrome и любой другой современный браузер с поддержкой плагинов.

Когда использовать

  • Пользователю нужна возможность изменять или дополнять функционал приложения.

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

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

Каждый из этих слоёв отвечает за то, что будет происходит с данными. Слой представления будет их показывать клиенту, логика - обрабатывать, а слой данных хранить данные.

Слоёная архитектура может иметь закрытые слои или открытые:

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

Примеры

  • Любой не сложный интернет-магазин, например магазин на OpenCart.

Когда использовать

Почти всегда, особенно когда конечные требования не ясны, могут добавляться новые доменные сущности и т.д.

Доменная архитектура

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

Когда использовать

Точно знаем что будет мигрировать на SOA

Плюсы и минусы

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