Никаких микросервисов, только Монолит!
@it_underside
Введение
В этой мини-статье из серии не будет изложено фундаментальных истин, только краткое инфо, но знать это обязательно для любого ИТ специалиста, т.е. основная выжимка. Монолитная архитектура — архитектурный стиль, при котором все компоненты приложения объединены в единое целое. Простой и традиционный подход, который имеет свои преимущества и недостатки. Понимание этой архитектуры важно разработчиков, тестировщиков, но в особенности для аналитиков, чтобы эффективно работать с современными приложениями и принимать обоснованные решения. И да, в рамках этой статейки не буду уходить в разбор микросервисного подхода, только МОНОЛИТ, чуть позже затрону микросервисы и сравним два ключевых подхода.
Что такое монолитная архитектура?
Монолитная архитектура представляет собой приложение, в котором все компоненты связаны и работают как единое целое. Представьте себе большой торт, где все слои тесно связаны, и если вы хотите добавить начинку, вам нужно разрезать и собрать весь торт заново.
Особенности монолитной архитектуры
- Единое целое - все компоненты приложения связаны и работают вместе.
- Общее хранилище данных - вся информация хранится в одной базе данных.
- Цельное развертывание - обновление или развертывание приложения происходит целиком.
- Про тестирование вообще отдельная песня...., но крайне не просто и жди много регресса.
Достоинства монолитной архитектуры
1.Простота разработки и тестирования
Весь код находится в одном месте, что упрощает процесс разработки и тестирования. Вы точно знаете, где искать проблему, если что-то пошло не так.
Пример. Представьте, что вы чините велосипед: все части на виду, и вы можете сразу увидеть, где нужно подкрутить болт.
2.Производительность
Отсутствие необходимости в межпроцессовом взаимодействии (IPC) между различными сервисами снижает накладные расходы, что делает приложение быстрее.
3.Легкость управления
Одним приложением проще управлять, развертывать и обновлять, чем десятками мелких сервисов.
Недостатки монолитной архитектуры
1.Сложность масштабирования
Масштабировать можно только всё приложение целиком, а не отдельные его части.
Пример. Это как пытаться растянуть весь торт, когда вам нужен только большой кусок верхнего слоя.
2.Трудности с обновлениями
Обновление одной части может требовать развертывания всего приложения заново, что увеличивает время и риски.
3.Поддержка и развитие
С ростом приложения его поддержка и развитие становятся сложнее из-за увеличения кода и зависимости между модулями и порой добавление одной кнопки становится целым испытанием.
4.Риск отказа
Ошибка в одном модуле может привести к сбою всего приложения.
Почему важно понимать архитектуру и стили проектирования?
Для системных и бизнес аналитиков, разработчиков и других специалистов понимание архитектуры помогает:
- Принимать обоснованные решения. Выбирать подходящие технологии и методы разработки.
- Улучшать взаимодействие в команде. Понимание архитектурных стилей помогает эффективно общаться с коллегами.
- Оптимизировать процессы. Понимание особенностей архитектуры позволяет улучшать процессы разработки и развертывания.
Роль системного аналитика
Системный аналитик играет ключевую роль в выборе архитектуры, так как именно он:
- Анализирует требования. Понимает бизнес-требования и переводит их на язык технических решений.
- Оценивает архитектурные риски (уровень - Senior). Помогает оценить плюсы и минусы различных архитектурных подходов. Если накосячить вначале с выбором, то потом осложните себе и всей команде жизнь по полной программе.
- Консультирует команду. Обеспечивает связь между бизнесом и технической командой.
Частота релизов с монолитом
Монолитные приложения обычно релизятся реже по сравнению с микросервисами. Это связано с тем, что обновление одной части требует развертывания всего приложения, что увеличивает время тестирования и внедрения изменений. Поэтому важно принимать все риски связанные с монолитом.
Вывод
Монолитная архитектура — это традиционный и проверенный временем подход к разработке приложений, который имеет свои плюсы и минусы. Понимание особенностей монолитной архитектуры важно для всех участников процесса разработки, так как это помогает принимать обоснованные решения и улучшать процессы разработки и развертывания. Системные аналитики играют ключевую роль в выборе архитектурных подходов и обеспечении их соответствия бизнес-требованиям, даже скажу так - ключевую!
А что почитать? (а в ютубе или на habr вы найдёте и без меня)
- "Монолит и микросервисы" (Microservices vs Monolithic Architecture) – Sander Rossel - Книга, объясняющая основные концепции и различия между монолитной и микросервисной архитектурами.
- "Building Evolutionary Architectures: Support Constant Change" – Neal Ford, Rebecca Parsons, Patrick Kua - Книга о том, как разрабатывать архитектуры, которые поддерживают изменения, включая обсуждение монолитных подходов.
- "Patterns of Enterprise Application Architecture" – Martin Fowler - Классика архитектуры приложений, включая паттерны, применимые к монолитным системам.