"매 legacy → modern stack 매 incremental migration 의 textbook". Kiwi.com 매 travel booking platform 매 PHP/jQuery → React/TypeScript/Next.js 매 multi-year migration 의 case study. 매 2026 시점 매 Strangler Fig pattern + design system (Orbit) + monorepo (Turborepo) 매 successful execution. 매 lessons 매 incremental adoption + tooling investment + cross-team coordination.
매 핵심
매 starting state (pre-migration)
PHP server-rendered + jQuery sprinkles.
매 100+ engineers, 매 single repo.
매 inconsistent UI, 매 design 매 ad-hoc.
매 search → booking funnel 매 monolith.
매 target state
React + TypeScript SPA / SSR (Next.js).
Orbit design system (open-sourced) 매 single source of truth.
Monorepo (Turborepo) 매 shared package.
Apollo / GraphQL gateway.
매 migration playbook
Strangler Fig: 매 page-by-page replacement, 매 reverse proxy routing 매 old vs new.
Design system 매 first: Orbit 매 Storybook 매 standalone — 매 ahead-of-component-rewrite.
Type safety: GraphQL codegen → TypeScript type 매 API contract.
// Button.stories.tsx
exportdefault{component: Button};exportconstPrimary={args:{variant:'primary',children:'Book'}};exportconstLoading={args:{variant:'primary',loading: true}};// design system 매 Storybook 매 review 매 before integration
매 결정 기준
상황
Approach
Legacy app, 매 high-traffic
Strangler Fig — page-by-page
Visual inconsistency 매 root issue
Design system 매 first investment
Type drift 매 API ↔ frontend
GraphQL + codegen
매 monorepo coordination overhead
Turborepo / Nx 매 caching
매 risky launch
Feature flag + percentage rollout
기본값: 매 incremental, 매 design-system-first, 매 telemetry-gated rollout.
언제: large legacy frontend rewrite 매 planning, 매 design system priority 의 justification.
언제 X: greenfield app — Kiwi case 매 migration constraint 매 specific.
❌ 안티패턴
Big bang rewrite: 매 multi-year freeze, 매 product velocity zero — Kiwi 가 explicitly avoided.
Design system 매 after: 매 visual drift 매 unfixable late.
No telemetry: 매 regression 매 invisible until users complain.
Feature flag 매 abandoned: 매 code path 매 dead, 매 cleanup 매 backlog.
🧪 검증 / 중복
Verified (Kiwi.com engineering blog, Orbit design system OSS — github.com/kiwicom/orbit).
신뢰도 B (case study 매 specific, 매 generalizable lessons).