Microservices и монолитная архитектура
Это объяснение термина архитектурного сравнения Microservices vs. Monolith, которое включает вопросы для проверки, ключевые элементы и теги.
Суть в двух словах
Microservices и монолитная архитектура представляют два противоположных подхода к структурированию ПО: модульность/децентрализация/масштабируемость vs. централизованность/простота/консистентность.
Краткое техническое описание
Монолитная архитектура описывает ПО, которое развертывается и работает как единое целое. Функции, логика и интерфейсы тесно связаны между собой.
Архитектура Microservices разбивает приложение на множество небольших независимых сервисов, взаимодействующих через сетевые интерфейсы (обычно REST или Messaging). Каждый сервис разрабатывается, тестируется и разворачивается независимо, часто с собственным хранилищем данных.
Microservices дают преимущества в масштабировании и поддержке, но требуют больше инфраструктуры, знаний DevOps и чистых интерфейсов.
Ключевые моменты для проверки знаний
- Монолит = одно приложение, одно развертывание
- Microservices = независимые сервисы (часто собственные репозитории)
- Microservices способствуют масштабируемости и гибкости (релевантно для экзаменов)
- Монолит проще при малых проектах (практический аспект)
- Microservices требуют API-Gateway, аутентификации, логирования (аспект безопасности)
- Затраты на инфраструктуру Microservices выше (экономический аспект)
- Интерфейсы и зависимости должны быть задокументированы (требование документации)
- Microservices хорошо подходят для CI/CD и agile-команд
Ключевые компоненты
- Границы сервисов и Bounded Context
- Коммуникация (REST, gRPC, Messaging)
- База данных на сервис (Microservices)
- Центральная БД (Monolith)
- Стратегия развертывания (Single vs Multiple Pipelines)
- Service Registry & Discovery
- Мониторинг/Логирование на сервис
- Слой безопасности и аутентификация
- Изоляция ошибок (Circuit Breaker, Retry, Fallback)
- Документирование сервисов (OpenAPI)
Простой практический пример
Monolith:
Веб-магазин это Java-Spring-Boot-проект с модулями (User, Orders, Inventory) → одно развертывание.
Microservices:
User-Service, Order-Service, Inventory-Service это отдельные сервисы, взаимодействуют через REST,
разворачиваются независимо через Docker/Kubernetes.
Преимущества и недостатки
Монолит
- Преимущества: простота развертывания, низкие требования к инфраструктуре, меньше сложности в малых командах
- Недостатки: сложно масштабировать, изменения влияют на другие модули, длительные циклы релизов
Microservices
- Преимущества: независимые команды, масштабирование отдельных сервисов, технологическое разнообразие
- Недостатки: высокие затраты на DevOps, сложные интерфейсы, распределенные транзакции сложнее
Типичные экзаменационные вопросы (с кратким ответом)
- Что такое монолит? Приложение, которое работает и развертывается как единое целое.
- Два преимущества Microservices? Масштабирование отдельных сервисов, независимое развертывание.
- Когда имеет смысл монолит? При малых проектах с небольшим числом участников.
- Как типично взаимодействуют Microservices? По HTTP/REST, gRPC или Messaging (Kafka/RabbitMQ).
- Почему архитектура Microservices сложнее? Распределенная система, множество развертываний, больше источников ошибок.
- Что такое API-Gateway? Центральная точка входа к сервисам (маршрутизация, аутентификация, мониторинг).
Глоссарий
| Термин | Определение |
|---|---|
| Монолитная архитектура | централизованная структура ПО в одной кодовой базе |
| Архитектура Microservices | распределенная архитектура с автономными сервисами |
| API-Gateway | центральное управление доступом к Microservices |
Свободный ответ
Для многих экзаменационных проектов монолит часто лучше документируется и достаточен. Microservices имеют смысл только при наличии четких границ, инфраструктуры и компетенций DevOps. Хороший компромисс это модульный монолит.
Стратегия обучения
- Входная точка: Нарисуй обе архитектуры для одного и того же случая использования.
- Углубление: Соберите мини-систему с Docker Compose.
- Фокус на экзамене: Письменно обоснуй выбор архитектуры.
- Избежание ошибок: Не предполагай автоматически, что Microservices лучше.
Анализ темы
- Технический стержень: Сервис-ориентированность, интерфейсы, развертывания
- Реализация: Коммуникация, консистентность данных, CI/CD
- Безопасность: Границы сервисов, аутентификация, Gateways
- Документация: Интерфейсы/зависимости/развертывания
- Экономичность: Затраты vs. гибкость
Дополнительная информация
- https://martinfowler.com/articles/microservices.html
- https://www.ibm.com/cloud/learn/monoliths-vs-microservices
- https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices



