# [[Fiber μ•„ν‚€ν…μ²˜ ([[Fiber Architecture]])]] ## πŸ“Œ[[ brief]] μ‹ Summary Fiber μ•„ν‚€ν…μ²˜λŠ” λ™μ‹œμ„± λ Œλ”λ§([[Concurrent Rendering]])을 μ§€μ›ν•˜κ³  λ Œλ”λ§ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„Έλ°€ν•˜κ²Œ μ œμ–΄ν•˜κΈ° μœ„ν•΄ React 16μ—μ„œ λ„μž…λœ μž¬μ‘°μ •([[Reconciliation]]) μ—”μ§„μ˜ μ™„μ „ν•œ μž¬μž‘μ„± 버전이닀 [1-3]. 이 μ•„ν‚€ν…μ²˜λŠ” λ Œλ”λ§ μž‘μ—…μ„ 'νŒŒμ΄λ²„ λ…Έλ“œ(Fiber node)'라고 λΆˆλ¦¬λŠ” μž‘μ€ μž‘μ—… λ‹¨μœ„(unit of work)둜 λΆ„ν• ν•˜μ—¬ μ μ§„μ μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” μž‘μ—… 루프(work loop)λ₯Ό 기반으둜 μž‘λ™ν•œλ‹€ [4, 5]. λ Œλ”λ§ 도쀑 μš°μ„ μˆœμœ„κ°€ 높은 μƒν˜Έμž‘μš©μ΄ λ°œμƒν•˜λ©΄ μž‘μ—…μ„ μΌμ‹œ μ€‘μ§€ν•˜κ³  λΈŒλΌμš°μ €μ— μ œμ–΄κΆŒμ„ λ„˜κ²Όλ‹€κ°€ λ‹€μ‹œ μ‹œμž‘ν•  수 μžˆλŠ” 'νƒ€μž„ μŠ¬λΌμ΄μ‹±([[Time-Slicing]])'을 κ°€λŠ₯ν•˜κ²Œ ν•˜μ—¬ UI의 λ°˜μ‘μ„±μ„ 크게 ν–₯μƒμ‹œν‚¨λ‹€ [4, 5]. ## πŸ“– Core Content * **μž‘μ—… 루프와 νŒŒμ΄λ²„ 트리 (Work Loop and Fiber Tree):** μ΄μ „μ˜ ReactλŠ” μŠ€νƒ μž¬μ‘°μ •μž(stack reconciler)λ₯Ό μ‚¬μš©ν•˜μ—¬ 전체 μ»΄ν¬λ„ŒνŠΈ 트리λ₯Ό 단일 μž¬κ·€ 호좜둜 ν•œ λ²ˆμ— μ²˜λ¦¬ν–ˆκΈ° λ•Œλ¬Έμ— 메인 μŠ€λ ˆλ“œλ₯Ό μ°¨λ‹¨ν•˜λŠ” λ¬Έμ œκ°€ μžˆμ—ˆλ‹€ [4]. FiberλŠ” μ»΄ν¬λ„ŒνŠΈ 트리의 각 λ…Έλ“œλ₯Ό μžμ‹(child), ν˜•μ œ(sibling), λΆ€λͺ¨(return)에 λŒ€ν•œ 포인터λ₯Ό κ°€μ§„ 'νŒŒμ΄λ²„ λ…Έλ“œ'둜 κ΅¬μ„±ν•˜λ©°, 이λ₯Ό λ‹¨μœ„λ‘œ μž‘μ—… 루프λ₯Ό λˆλ‹€ [6, 7]. μŠ€μΌ€μ€„λŸ¬λŠ” 트리λ₯Ό 깊이 μš°μ„  탐색(depth-first) λ°©μ‹μœΌλ‘œ μˆœνšŒν•˜λ©° λ Œλ”λ§ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³ , ν˜„μž¬ ν”„λ ˆμž„μ— 남은 μ‹œκ°„μ΄ μ—†μœΌλ©΄ μž‘μ—…μ„ μΌμ‹œ 쀑단(yield)ν•˜μ—¬ λΈŒλΌμš°μ €μ˜ λŠκΉ€μ„ λ°©μ§€ν•œλ‹€ [7, 8]. * **μž¬μ‘°μ • 단계 (Reconciliation Phases):** React의 μž¬μ‘°μ • ν”„λ‘œμ„ΈμŠ€λŠ” μž‘μ—… 쀑단 및 μš°μ„ μˆœμœ„ 지정을 κ°€λŠ₯ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ 두 κ°€μ§€ λͺ…ν™•ν•œ λ‹¨κ³„λ‘œ λ‚˜λ‰œλ‹€ [9]. * **λ Œλ” 단계 (Render phase):** 트리λ₯Ό μˆœνšŒν•˜λ©° 이전 μƒνƒœμ™€ μƒˆλ‘œμš΄ μƒνƒœ κ°„μ˜ 차이λ₯Ό κ³„μ‚°ν•˜λŠ” λ‹¨κ³„λ‘œ, DOM을 직접 μˆ˜μ •ν•˜μ§€ μ•ŠλŠ”λ‹€ [9, 10]. 이 λ‹¨κ³„λŠ” μ–Έμ œλ“  쀑단, μ·¨μ†Œ, μž¬μ‹œμž‘μ΄ κ°€λŠ₯ν•˜λ©° λΆ€μž‘μš©(side effects)을 μ‹€ν–‰ν•΄μ„œλŠ” μ•ˆ λœλ‹€ [9, 10]. λ Œλ” 단계가 λλ‚˜λ©΄ 변경이 ν•„μš”ν•œ νŒŒμ΄λ²„λ“€λ§Œ λͺ¨μ•„ μ΄νŽ™νŠΈ λͺ©λ‘(effect list)을 κ΅¬μ„±ν•œλ‹€ [11]. * **컀밋 단계 (Commit phase):** 쀑단될 수 μ—†λŠ” 동기적인 λ‹¨κ³„λ‘œ, λ Œλ” λ‹¨κ³„μ—μ„œ μƒμ„±λœ μ΄νŽ™νŠΈ λͺ©λ‘μ„ λ°”νƒ•μœΌλ‘œ DOM λ…Έλ“œμ˜ μ‚½μž…, μ‚­μ œ, μ—…λ°μ΄νŠΈλ₯Ό ν•œ λ²ˆμ— μ μš©ν•œλ‹€ [10, 12]. 이 λ‹¨κ³„μ—μ„œ `useLayoutEffect` 및 `useEffect`와 같은 생λͺ…μ£ΌκΈ° λ©”μ„œλ“œμ™€ 훅이 μ‹€ν–‰λœλ‹€ [10, 12, 13]. * **μš°μ„ μˆœμœ„ μŠ€μΌ€μ€„λ§κ³Ό 레인 λͺ¨λΈ (Priority and [[Lane Model]]):** FiberλŠ” μ—¬λŸ¬ μ—…λ°μ΄νŠΈμ˜ ν˜Όν•©λœ μš°μ„ μˆœμœ„λ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ '레인(Lanes)'μ΄λΌλŠ” λΉ„νŠΈλ§ˆμŠ€ν¬ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•œλ‹€ [14, 15]. μž‘μ—…μ€ μ‚¬μš©μž νƒ€μ΄ν•‘μ΄λ‚˜ 클릭처럼 즉각적인 μ²˜λ¦¬κ°€ ν•„μš”ν•œ 동기(Sync) λ ˆμΈλΆ€ν„° 슀크둀과 같은 μ‚¬μš©μž 차단(User-[[Blocking]]) 레인, 데이터 페칭 κ²°κ³Όλ₯Ό λ‚˜νƒ€λ‚΄λŠ” κΈ°λ³Έ(Default) 레인, λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…μΈ 유휴(Idle) 레인 λ“±μœΌλ‘œ λΆ„λ₯˜λœλ‹€ [14, 16]. 이λ₯Ό 톡해 κΈ΄κΈ‰ν•œ UI μƒν˜Έμž‘μš©μ΄ 무거운 비동기 μ—…λ°μ΄νŠΈλ³΄λ‹€ λ¨Όμ € 처리될 수 μžˆλ‹€ [14, 17]. * **λ™μ‹œμ„± κΈ°λŠ₯의 기반 (Foundation for Concurrent Features):** μ΄λŸ¬ν•œ 쀑단 κ°€λŠ₯ν•œ λ Œλ”λ§ 및 μš°μ„ μˆœμœ„ 관리 ꡬ쑰 덕뢄에 ReactλŠ” `[[useTransition]]` 및 `[[useDeferredValue]]`와 같은 λ™μ‹œμ„± ν›…(concurrent hooks)을 λ„μž…ν•  수 있게 λ˜μ—ˆλ‹€ [18]. 이 훅듀은 무거운 연산이 μ§„ν–‰λ˜λŠ” λ™μ•ˆμ—λ„ κΈ΄κΈ‰ν•œ μ‚¬μš©μž μž…λ ₯을 μœ„ν•΄ 메인 μŠ€λ ˆλ“œλ₯Ό ν™•λ³΄ν•˜μ—¬ λΆ€λ“œλŸ¬μš΄ μ•± κ²½ν—˜μ„ μœ μ§€ν•˜κ²Œ λ•λŠ”λ‹€ [18, 19]. ## πŸ”— Knowledge Connections - **Related Topics:** [[가상 DOM ([[Virtual DOM]])]], [[μž¬μ‘°μ • (Reconciliation)]], [[λ™μ‹œμ„± λ Œλ”λ§ (Concurrent Rendering)]], νƒ€μž„ μŠ¬λΌμ΄μ‹± (Time-Slicing) - **Projects/Contexts:** React 16, [[React 19]] λ™μ‹œμ„± ν›… (useTransition, useDeferredValue) - **Contradictions/Notes:** μ†ŒμŠ€ κ°„μ˜ 의견 μΆ©λŒμ€ μ—†μœΌλ©°, Fiber μ•„ν‚€ν…μ²˜μ˜ λͺ©ν‘œλŠ” λ³΅μž‘ν•œ λ Œλ”λ§ μž‘μ—…μœΌλ‘œ 인해 ν”„λ ˆμž„μ΄ λ–¨μ–΄μ§€λŠ” 기쑴의 μŠ€νƒ μž¬μ‘°μ •μž(Stack Reconciler) 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ν•„μˆ˜μ μœΌλ‘œ λ„μž…λœ ꡬ쑰적 변화라고 μΌκ΄€λ˜κ²Œ μ„€λͺ…λœλ‹€ [2, 4]. --- *Last updated: 2026-04-25*