Migration patterns на собеседовании системного аналитика
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем спрашивают на собесе SA
Migrations — large-scale tech work. На собесе SA: «как мигрировать монолит», «strangler».
Strangler fig
Martin Fowler. Inspired by trees, strangling host.
Идея. Постепенно build new system around old. Gradually move functions от old к new. Old умрёт когда все functions migrated.
Step 1: Old monolith — все traffic.
Step 2: New service для feature A. Proxy routes → A → new, остальное → old.
Step 3: Migrate feature B. Routes → B → new.
...
Step N: Old monolith пуст, удалить.Pros:
- Gradual.
- Lower risk.
- Continuous delivery — каждый migrated piece — value.
Cons:
- Time-consuming (years на legacy).
- Complexity routing layer.
Big bang
Replace all at once.
Pros:
- Fast (если survives).
- Simple post-migration.
Cons:
- High risk.
- Rollback hard.
- Downtime / data migration challenges.
- Не подходит для high-availability.
Применяется для маленьких / некритичных систем.
Parallel run
Old и new работают одновременно, оба get inputs. Compare outputs. Когда new proves correct — remove old.
Request → Both Old and New
Compare:
- same → all good.
- different → log, investigate.
After period → switch off old.Pros: safe, can validate new system.
Cons: double infrastructure cost. Complex setup.
Финансовые / regulatory migrations используют.
Branch by abstraction
Refactor without big change. Add abstraction layer, replace implementation behind it.
Step 1: All callers use SQL repository directly.
Step 2: Wrap in interface "OrderRepository". All callers use interface (no behavior change).
Step 3: New impl "OrderRepositoryNoSQL". Toggle via flag.
Step 4: Test new. Switch over. Remove old.Применяется внутри codebase для technology swap (PostgreSQL → MongoDB).
Когда что
| Situation | Pattern |
|---|---|
| Legacy monolith, large | Strangler fig |
| Маленький system | Big bang |
| Critical / regulatory | Parallel run |
| Tech swap внутри service | Branch by abstraction |
| Cloud migration | Strangler / blue-green |
Связанные темы
- Микросервисы vs монолит для SA
- DDD для SA
- Антипаттерны микросервисов для SA
- AS-IS vs TO-BE для SA
- Подготовка к собесу системного аналитика
FAQ
Это официальная информация?
Нет. Статья основана на работах Fowler («Strangler Fig», «Branch by Abstraction»).
Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.