Монолитная архитектура предполагает, что все функции приложения собраны в едином разрабатываемом и деплоимомом коде.
Сервис-ориентированная архитектура (SOA) и в частности микросервисы — подход, при котором приложение состоит из набора модулей, взаимодействующих через чёткие интерфейсы (обычно сетевые).
Когда выгоден монолит:
Когда выгодна SOA:
Пример сравнения: Монолит:
public class Application { public static void main(String[] args){ UserService userService = new UserService(); OrderService orderService = new OrderService(); // Логика заказов, пользователей — всё в одном приложении } }
SOA — взаимодействие по API:
GET /user/42 # запрос в сервис пользователей GET /order/532 # запрос в сервис заказов
Ключевые особенности:
Разделяет ли SOA базу данных между сервисами?
Обычно сервисы разделяют данные для слабой связанности. Общие базы допустимы на этапах миграции, но в идеале БД у каждого сервиса отдельная.
Монолит всегда хуже по производительности?
Нет, монолит может быть производительнее на небольших объёмах, так как нет лишних сетевых вызовов и разделения памяти.
Можно ли перевести монолит в микросервисы "одним махом"?
Нет, обычно переход делается поэтапно, начиная с выделения границ контекстов и преобразования их в сервисы.