Migration patterns на собеседовании системного аналитика

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — 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 используют.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

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

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на работах Fowler («Strangler Fig», «Branch by Abstraction»).


Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.