Вчера я рассказал об интересной миграции на модульный монолит на примере Amazon Prime Video.

Монолитная архитектура подразумевает, что весь код и функциональность приложения находятся в одном месте.

Рассмотрим на примере интернет-магазина. В таком приложении потребуется реализовать кабинет покупателя, поддержку комментариев, карточки товаров, корзину и так далее.

В монолитной архитектуре вся функциональность сосредоточена в одном приложении. Для отправки комментария к товару необходимо, чтобы приложение работало целиком.

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

В случае с интернет-магазином такими модулями могут быть: комментарии, управление товарами, поддержка скидок и так далее.

Хорошим примером такой архитектуры являются системы управления контентом (CMS). Многие из них предоставляют только базовую функциональность, а всё остальное реализуется в виде модулей (плагинов). Другой пример — редактор VS Code: функциональность расширяется за счёт независимых расширений.

Микросервисная архитектура подразумевает разбивку приложения на небольшие сервисы. Каждый сервис — это самостоятельное приложение. Он отвечает за решение какой-то определённой задачи и может взаимодействовать с другими сервисами. Например, для интернет-магазина может быть создано несколько сервисов: сервис аутентификации, сервис управления товарами, сервис отправки почтовых уведомлений и т.д. Каждый сервис может быть разработан, протестирован и масштабирован независимо.

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