# [[Incremental Migration]] ## πŸ“Œ Brief μ‹œ Summary **Incremental Migration(점진적 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜)**은 였래된 κΈ°μˆ μ΄λ‚˜ μ•„ν‚€ν…μ²˜μ—μ„œ μƒˆλ‘œμš΄ 기술둜 μ „ν™˜ν•  λ•Œ, 전체 μ‹œμŠ€ν…œμ„ ν•œ λ²ˆμ— μž¬μž‘μ„±(complete rewrite)ν•˜λŠ” λŒ€μ‹  λ‹¨κ³„μ μœΌλ‘œ μ΄λ™ν•˜λŠ” μ „λž΅μ„ μ˜λ―Έν•©λ‹ˆλ‹€ [1]. ν•œ λ²ˆμ— λͺ¨λ“  것을 λ³€κ²½ν•˜λŠ” μœ„ν—˜μ„ μ΅œμ†Œν™”ν•˜κ³ , μ•„ν‚€ν…μ²˜λ₯Ό ν˜„λŒ€ν™”ν•˜λŠ” λ™μ•ˆμ—λ„ κΈ°λŠ₯ κ°œλ°œμ„ 지속할 수 있게 ν•΄μ£ΌλŠ” **"μž¬μž‘μ„±(rewrite)이 μ•„λ‹Œ λ¦¬νŒ©ν† λ§(refactor)"** 철학에 κΈ°λ°˜ν•©λ‹ˆλ‹€ [1]. λŒ€ν‘œμ μΈ 예둜, Context APIμ—μ„œ Zustand둜 μƒνƒœ 관리λ₯Ό μ „ν™˜ν•  λ•Œ μ•Œλ¦Όκ³Ό 같은 λ‹¨μˆœν•œ μœ ν‹Έλ¦¬ν‹°λΆ€ν„° μ‹œμž‘ν•˜μ—¬ 결제 흐름과 같은 λ³΅μž‘ν•œ λ„λ©”μΈμœΌλ‘œ μ μ§„μ μœΌλ‘œ μ˜μ—­μ„ λ„“ν˜€κ°€λŠ” 방식이 μžˆμŠ΅λ‹ˆλ‹€ [1]. ## πŸ“– Core Content * **μ „λ©΄ μž¬μž‘μ„±μ˜ μœ„ν—˜μ„± νšŒν”Ό:** κΈ°μ‘΄ κΈ°μˆ μ—μ„œ μƒˆλ‘œμš΄ 기술둜 μ „ν™˜ν•  λ•Œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 전체λ₯Ό ν•œ λ²ˆμ— κ°ˆμ•„μ—ŽλŠ” μ „λ©΄ μž¬μž‘μ„±(complete rewrite)은 λ„ˆλ¬΄ 높은 μœ„ν—˜μ„ μˆ˜λ°˜ν•©λ‹ˆλ‹€. 점진적 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ€ 이 리슀크λ₯Ό μš°νšŒν•˜λŠ” ꢌμž₯ μ ‘κ·Όλ²•μž…λ‹ˆλ‹€ [1]. * **단계적 μ „ν™˜ (μŠ€ν† μ–΄ λ‹¨μœ„ 이동):** ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ μŠ€ν† μ–΄(store)μ”© μ΄λ™ν•˜λŠ” 방식이 νš¨κ³Όμ μž…λ‹ˆλ‹€ [1]. μ•Œλ¦Ό(notifications)κ³Ό 같은 μƒλŒ€μ μœΌλ‘œ λ‹¨μˆœν•˜κ³  독립적인 μœ ν‹Έλ¦¬ν‹°μ„± μƒνƒœλΆ€ν„° μ‹œμž‘ν•˜μ—¬, μ μ§„μ μœΌλ‘œ μž₯λ°”κ΅¬λ‹ˆλ‚˜ 체크아웃 흐름(checkout flow) 같은 λ³΅μž‘ν•œ 핡심 λ„λ©”μΈμœΌλ‘œ μ „ν™˜μ„ μ§„ν–‰ν•©λ‹ˆλ‹€ [1]. * **κΈ°λŠ₯ 개발과 μ•„ν‚€ν…μ²˜ ν˜„λŒ€ν™”μ˜ 병행:** 이 μ ‘κ·Όλ²•μ˜ 핡심적인 이점은 λ¦¬νŒ©ν† λ§ 철학을 기반으둜 ν•˜κΈ° λ•Œλ¬Έμ—, μ‹œμŠ€ν…œ ꡬ쑰λ₯Ό ν˜„λŒ€ν™”ν•˜λŠ” 쀑에도 λΉ„μ¦ˆλ‹ˆμŠ€ μš”κ΅¬μ‚¬ν•­μ— 맞좘 μƒˆλ‘œμš΄ κΈ°λŠ₯ κ°œλ°œμ„ 쀑단 없이 계속할 수 μžˆλ‹€λŠ” μ μž…λ‹ˆλ‹€ [1]. * **μ»€μŠ€ν…€ ν›…(Custom Hook)을 ν™œμš©ν•œ λ¦¬νŒ©ν† λ§ λ‹¨μœ„ν™”:** λͺ¨λ˜ React ν™˜κ²½μ—μ„œ λ¦¬νŒ©ν† λ§μ˜ μ£Όμš” λ‹¨μœ„λŠ” μ»€μŠ€ν…€ ν›…μž…λ‹ˆλ‹€ [2]. κ±°λŒ€ν•œ μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œ λ‘œμ§μ„ μΆ”μΆœν•΄ ν›…μœΌλ‘œ λΆ„λ¦¬ν•¨μœΌλ‘œμ¨ λͺ¨λ“ˆμ„±κ³Ό ν…ŒμŠ€νŠΈ κ°€λŠ₯성을 높이며, 이λ₯Ό 톡해 점진적인 ꡬ쑰 κ°œμ„  및 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ μ•ˆμ „ν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2]. ## βš–οΈ Trade-offs & Caveats μ†ŒμŠ€ λ‚΄μ—μ„œ 점진적 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 자체의 μ‹¬κ°ν•œ λΆ€μž‘μš©μ„ λͺ…μ‹œν•˜κ³  μžˆμ§€λŠ” μ•ŠμœΌλ‚˜, μ „ν™˜μ„ μ‹œλ„ν•˜λŠ” 기술과 쑰직 상황에 따라 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 경둜(Migration Paths)별 λ‚œμ΄λ„μ™€ ν•œκ³„κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€ [3]. * **기술 μŠ€νƒλ³„ μ „ν™˜ λ‚œμ΄λ„μ˜ 차이:** Context APIμ—μ„œ Zustand둜의 μ „ν™˜μ€ 비ꡐ적 쉽닀(Easy)κ³  ν‰κ°€λ˜μ§€λ§Œ, Zustandμ—μ„œ Redux둜의 점진적 μ „ν™˜μ€ κ³ ν†΅μŠ€λŸ¬μšΈ 수 있으며(Painful), Reduxμ—μ„œ Zustand둜 μ „ν™˜ν•˜λŠ” 것은 κ°€λŠ₯ν•˜μ§€λ§Œ μœ„ν—˜(Possible but risky)이 λ”°λ¦…λ‹ˆλ‹€ [3]. * **기술 λ³€κ²½ μ‹œμ μ˜ λͺ¨ν˜Έν•¨:** 규λͺ¨ ν™•μž₯ 단계(Scaleup, 50-500λͺ…)의 κΈ°μ—…μ—μ„œλŠ” Zustand 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜λ‹€κ°€ ν•œκ³„μ— λΆ€λ”ͺ힐 λ•Œ Redux둜의 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ κ³„νšν•΄μ•Ό ν•˜λŠ”λ° [4], 이처럼 μ–Έμ œ 점진적 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ κ²°λ‹¨ν•˜κ³  μ‹œμž‘ν•΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•œ ꡬ쑰적 κ³ λ―Όκ³Ό μ „ν™˜ λΆ€ν•˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. ## πŸ”— Knowledge Connections ### Related Concepts #### [관계 μœ ν˜• A: μ•„ν‚€ν…μ²˜/기반 기술] - [[Context API]] - μ—°κ²° 이유: 점진적 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ˜ μ£Όμš” 좜발점(λ ˆκ±°μ‹œ 기술) μ‚¬λ‘€λ‘œ μ†ŒμŠ€μ—μ„œ μ–ΈκΈ‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ΄μ „μ˜ λ ˆκ±°μ‹œ μƒνƒœ 관리가 μ–΄λ–€ 문제λ₯Ό κ²ͺλŠ”μ§€ νŒŒμ•…ν•˜κ³ , μ™œ λ‹¨μˆœν•œ 도메인뢀터 μ „ν™˜μ„ μ‹œμž‘ν•΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•œ λ‹Ήμœ„μ„±μ„ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€. - [[Zustand]] / [[Redux]] - μ—°κ²° 이유: λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ˜ λͺ©μ μ§€ λ˜λŠ” μ „ν™˜ κ²½λ‘œμ— ν•΄λ‹Ήν•˜λŠ” μƒνƒœ 관리 κΈ°μˆ λ“€μž…λ‹ˆλ‹€ [1, 3, 4]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 각 기술 κ°„μ˜ μ „ν™˜μ΄ μ‰¬μš΄μ§€(Easy), κ³ ν†΅μŠ€λŸ¬μš΄μ§€(Painful) νŒŒμ•…ν•˜μ—¬ 쑰직 규λͺ¨μ— λ§žλŠ” λͺ©ν‘œ μ•„ν‚€ν…μ²˜λ₯Ό μ–΄λ–»κ²Œ μ„€μ •ν•˜κ³  이동할 것인지 νŒλ‹¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. #### [관계 μœ ν˜• B: κ΅¬ν˜„/λ¦¬νŒ©ν† λ§ 도ꡬ] - [[Custom Hooks]] - μ—°κ²° 이유: λͺ¨λ˜ Reactμ—μ„œ ꡬ쑰λ₯Ό μ μ§„μ μœΌλ‘œ λ³€κ²½ν•  λ•Œ μ‚¬μš©ν•˜λŠ” 'λ¦¬νŒ©ν† λ§μ˜ 핡심 λ‹¨μœ„(primary unit)'μž…λ‹ˆλ‹€ [2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: κ±°λŒ€ν•œ μ»΄ν¬λ„ŒνŠΈμ˜ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ UI와 μ–΄λ–»κ²Œ λΆ„λ¦¬ν•˜μ—¬ λͺ¨λ“ˆμ„±κ³Ό ν…ŒμŠ€νŠΈ μš©μ΄μ„±μ„ ν™•λ³΄ν•˜λŠ”μ§€ 싀무적인 κ΅¬ν˜„ κ΄€μ μ—μ„œ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€. ### Deeper Research Questions - κΈ°μ‘΄ μƒνƒœ 관리(예: Context API)와 μ‹ κ·œ μƒνƒœ 관리(예: Zustand)κ°€ κ³΅μ‘΄ν•˜λŠ” 점진적 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ κ³Όμ •μ—μ„œ, 두 μƒνƒœ κ°„μ˜ λ™κΈ°ν™”λ‚˜ μ˜μ‘΄μ„±μ€ μ–΄λ–»κ²Œ μ²˜λ¦¬ν•΄μ•Ό μ•ˆμ „ν•œκ°€? - Zustandμ—μ„œ Redux둜의 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ΄ 특히 "κ³ ν†΅μŠ€λŸ½λ‹€(Painful)"κ³  ν‰κ°€λ˜λŠ” μ•„ν‚€ν…μ²˜μ , κ΅¬ν˜„μ  차이점은 무엇인가? - λ§ˆμ΄κ·Έλ ˆμ΄μ…˜κ³Ό μ‹ κ·œ κΈ°λŠ₯ κ°œλ°œμ„ 병행할 λ•Œ λ°œμƒν•  수 μžˆλŠ” 브랜치(Branch) μΆ©λŒμ΄λ‚˜ 톡합 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ Git WorkflowλŠ” μ–΄λ–»κ²Œ κ΅¬μ„±λ˜μ–΄μ•Ό ν•˜λŠ”κ°€? - λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ»€μŠ€ν…€ ν›… λ‹¨μœ„λ‘œ λ‘œμ§μ„ λΆ„λ¦¬ν•˜λŠ” λ¦¬νŒ©ν† λ§μ„ μ§„ν–‰ν•  λ•Œ μ„±λŠ₯ μ €ν•˜(μ˜€λ²„ν—€λ“œ)λ₯Ό μœ λ°œν•˜μ§€ μ•ŠλŠ” μ΅œμ ν™” 방법은 무엇인가? - μ‹œμŠ€ν…œμ˜ 일관성을 μœ μ§€ν•˜κΈ° μœ„ν•΄, ν•œ κΈ°μˆ μ—μ„œ λ‹€λ₯Έ 기술둜의 '점진적 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜'이 μ΅œμ’… μ™„λ£Œλ˜μ—ˆλ‹€κ³  νŒλ‹¨ν•˜λŠ” κΈ°μ€€(Definition of Done)은 μ–΄λ–»κ²Œ μ •μ˜ν•΄μ•Ό ν•˜λŠ”κ°€? ### Practical Application Contexts - **Implementation:** React μ½”λ“œλ² μ΄μŠ€μ—μ„œ μƒˆλ‘œμš΄ μƒνƒœ 관리 라이브러리λ₯Ό λ„μž…ν•  λ•Œ, 전체λ₯Ό κ΅μ²΄ν•˜μ§€ μ•Šκ³  μ—λŸ¬ μ•Œλ¦Ό λ“± μ•„μ£Ό 독립적인 λ‹¨μœ„ κΈ°λŠ₯λΆ€ν„° μƒˆλ‘œμš΄ μŠ€ν† μ–΄μ— μ—°κ²°ν•΄ λ‚˜κ°€λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„μ„ μ§„ν–‰ν•©λ‹ˆλ‹€ [1]. - **System Design:** μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό ν˜„λŒ€ν™”ν•  λ•Œ, λΉ…λ±…(Big Bang) 방식이 μ•„λ‹ˆλΌ κΈ°μ‘΄ μ„œλΉ„μŠ€κ°€ μ§€μ†μ μœΌλ‘œ 운영 및 ν™•μž₯λ˜λ©΄μ„œ λ ˆκ±°μ‹œμ™€ μ‹ κ·œ μ•„ν‚€ν…μ²˜κ°€ 곡쑴할 수 μžˆλŠ” 섀계 원칙을 μˆ˜λ¦½ν•©λ‹ˆλ‹€ [1]. - **Operation / Maintenance:** κΈ°λŠ₯ 개발 λΆ€μ„œμ™€ μ•„ν‚€ν…μ²˜ κ°œμ„  λΆ€μ„œκ°€ λΆ„λ¦¬λ˜μ§€ μ•Šκ³ , μœ μ§€λ³΄μˆ˜ 일정 λ‚΄μ—μ„œ κΈ°λŠ₯ 배포와 기술 뢀채(Technical Debt) κ°μ†Œλ₯Ό λ™μ‹œμ— 이뀄내도둝 μš΄μ˜ν•©λ‹ˆλ‹€ [1]. - **Learning Path:** 큰 μ»΄ν¬λ„ŒνŠΈλ₯Ό λΆ„ν•΄ν•˜μ—¬ Custom Hook으둜 λ…λ¦½μ‹œν‚€λŠ” μ—°μŠ΅μ„ 톡해, ν–₯ν›„ μ½”λ“œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ— ν•„μš”ν•œ λͺ¨λ“ˆν™” μ—­λŸ‰μ„ ν•™μŠ΅ν•©λ‹ˆλ‹€ [2]. - **My Project Relevance:** ν˜„μž¬ μ§„ν–‰ 쀑인 ν”„λ‘œμ νŠΈμ—μ„œ κ΅¬ν˜• 라이브러리(λ˜λŠ” νŒ¨ν„΄)λ₯Ό μ΅œμ‹  기술둜 μ—…κ·Έλ ˆμ΄λ“œν•΄μ•Ό ν•˜λŠ” νƒœμŠ€ν¬κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, λΉ„μ¦ˆλ‹ˆμŠ€ 영ν–₯을 μ΅œμ†Œν™”ν•˜λŠ” 점진적 적용 λ‘œλ“œλ§΅μ„ μž‘μ„±ν•˜λŠ” 데 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ### Adjacent Topics - [[Technical Debt Management (기술 뢀채 관리)]] - ν™•μž₯ λ°©ν–₯: 점진적 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ€ 결과적으둜 기술 뢀채λ₯Ό ν†΅μ œν•˜κ³  ν•΄κ²°ν•˜κΈ° μœ„ν•œ μ—¬λŸ¬ μ „λž΅ 쀑 ν•˜λ‚˜μ΄λ―€λ‘œ, μ‹œμŠ€ν…œμ΄ 노후화됨에 따라 기술 뢀채λ₯Ό μ–΄λ–»κ²Œ μΈ‘μ •, 관리, μƒν™˜ν•˜λŠ”μ§€μ— λŒ€ν•œ 넓은 κ΄€μ μ˜ μ—”μ§€λ‹ˆμ–΄λ§ μ „λž΅μœΌλ‘œ ν•™μŠ΅μ„ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1]. --- *Last updated: 2026-04-30*