Консолидиране на микросървиси, което се обърка
Разделянето на монолит е трудно. Сливането на микросървиси обратно? По-трудно.
Планът:
- 10 малки услуги, правещи свързани неща
- Обединяване в 3 домейн услуги
- Оценка: 6 седмици
Реалността:
- Продължителност: 6 месеца
- Скрити асинхронни зависимости навсякъде
- 3 различни модела на опашка за съобщения
- Несъвместимости в схемите
- Race conditions, които се проявяваха само при мащаб
Какво открихме:
- Услуга A очакваше JSON, Услуга B изпращаше XML
- Услуга C имаше недокументирани предположения за кеширане
- Две услуги притежаваха една и съща концепция за данни по различен начин
- Никой не знаеше пълната графа на зависимости
Уроци:
- Документирайте договорите за услуги обсесивно
- Поддържайте актуална графа на зависимости
- Консолидацията е пренаписване, не рефакторинг
- Разгледайте Strangler Fig модела в обратен ред
Урок: Разделянето е (до известна степен) обратимо. Цената на обръщане расте с времето.