TGViewer
ИТ-архитектура ИТ-архитектура @itarchitecture · 558 subscribers
Post #191 279
Почему сначала надо разрабатывать (модульный) монолит?

#перевод_для_канала_itarchitecture

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

В микросервисном подходе также есть несколько недостатков - система становится сложной для обслуживания и диагностики проблем (логирование и отслеживание). И это очень важно при работе с микросервисами.

Между тем, создание монолитов само по себе не является лучшим решением. В последние годы мы часто видели идентификацию монолита с архитектурой big ball of mud (“большой шар грязи”) или только написания устаревающего кода, что на самом деле некорректно. Да, монолиты не могут масштабировать независимые части системы или релизить их отдельно, в этом самые большие недостатки монолита. Тем не менее, вы можете писать отличный и качественный код внутри. Также монолит приносит нам гораздо меньшую сложность, сокращение сетевых вызовов, упрощение логирования и т.п.

Одним из хороших вариантов решения проблем единого монолита может быть построение модульного монолита, в котором мы все еще можем иметь отдельные модули и работать над ними, и при этом поддерживать простоту. Правильно построенный модульный монолит может при необходимости, с определенным объемом доработок преобразован в микросервисное решение завтра.

Когда мы хотим построить модульный монолит, важно сначала разделить систему на управляемые модули, прежде чем собирать эти модули в монолит для развертывания. Поскольку вся связь между модулями может привести к межсетевым вызовам, если вы решите разбить его на сервисы в будущем, high cohesion (высокая согласованность) и low coupling (низкая связность) имеют решающее значение. Это означает, что вся межмодульная связь должна быть абстрактной, асинхронной или основанной на обмене сообщениями, чтобы модули могли обрабатывать вызовы, которые будут проходить по сети в будущем.

Как мы можем реализовать такую концепцию? Мы создаем отдельные модули, каждый из которых может иметь свою собственную архитектуру, и эти модули объединяются в один API Gateway (шлюз API). Это позволяет нам развертывать всю систему как монолит, но позволяет нам извлекать отдельные модули в сервисы, если это необходимо в будущем.
  • 👍 4
More from @itarchitecture
  1. Jul 17, 2026https://www.youtube.com/live/N_n3AQtrfEU?si=h3IaD4Avi-LFgGMi
  2. Apr 16, 2026Technology Radar за апрель 2026 Почитал свежий Technology Radar. Если коротко: мы входим в…
  3. Mar 5, 2026Dual Write Problem Dual Write Problem (проблема двойной записи) возникает, когда две или б…
  4. Feb 6, 2026День из жизни Solutions Architect #fun
  5. Jan 17, 2026Как внедряли DDD в Яндекс360 - Что такое DDD и зачем он нужен? - Какой книгой лучше всего…
  6. Jan 9, 2026🎬 Архитектура предпросмотра видео в Netflix Когда вы наводите курсор на таймлайн Netflix,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →