Splitting the Monolith Too Fast
Разделихме монолита ни на 15 микросървиси за 3 месеца. После прекарахме 2 години в поправяне на границите.
Как разделихме:
- Една услуга на таблица в базата данни
- "Това изглежда като естествена граница"
- Пусни бързо, поправяй после
Какво объркахме:
- Order услугата се нуждаеше от Customer данни
- Customer услугата се нуждаеше от Order история
- Всяка заявка: 5+ между-услугови извиквания
- Разпределени joins през HTTP (да, наистина)
Симптомите:
- P99 латентност: 50ms → 800ms
- Една услуга надолу = всичко счупено
- Екипите не можеха да релийзват независимо (цялата идея)
- Несъответствие на данни между услугите
Какво трябваше да направим:
- DDD event storming първо
- Намиране на реални bounded contexts
- Разделяне по бизнес възможност, не по таблица
- Валидиране на границите с модели на трафика
Урок: Границите на услугите са най-трудното нещо за правилно определяне. Отделете си време.