Що таке «Distributed Monolith»?
Distributed Monolith («розподілений моноліт») - це антипатерн, за якого система зовні виглядає як набір мікросервісів, але фактично поводиться як єдиний моноліт.
Суть
Сервіси формально розділені, але мають жорсткі залежності:
- вимагають одночасного деплою,
- сильно пов'язані API-викликами,
- не можуть працювати незалежно.
По суті: система отримала складність розподіленості, мережі, DevOps, оркестрацію, але не отримала переваг мікросервісів: автономності і гнучкості.
Ознаки «distributed monolith»
- Сервіси не можуть розгортатися окремо: зміна одного вимагає перекомпіляції інших.
- Забагато синхронних викликів: кожен запит «чіпляє» ланцюжок із 5-10 сервісів.
- Спільні бібліотеки або БД: зміна схеми ламає все.
- Немає незалежного версіювання: усе релізиться «одним великим комітом».
- Часті каскадні помилки: падіння одного сервісу валить усю систему.
Чому це погано
- Втрата незалежності і масштабованості.
- Релізи і тестування стають складнішими, ніж у монолiту.
- Система перевантажена мережевими викликами і DevOps-складністю без вигоди.
Як уникнути
- Розділяти сервіси за bounded context.
- Використовувати асинхронну комунікацію і чіткі API-контракти.
- Ізолювати дані і релізи.
- Впроваджувати тести контрактів між сервісами.
Підсумок:
Distributed Monolith - це «моноліт, розрізаний мережею». Він складний, крихкий і втрачає сенс мікросервісної архітектури. Головна ознака - залежність між сервісами сильніша, ніж їхня автономність.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.