--- id: P-REINFORCE-AUTO-F2362F category: "10_Wiki/πŸ’‘ Topics/Design & Experience" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ν”„λ‘ νŠΈμ—”λ“œ μ»΄ν¬λ„ŒνŠΈ 섀계" --- # [[ν”„λ‘ νŠΈμ—”λ“œ μ»΄ν¬λ„ŒνŠΈ 섀계]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > ν”„λ‘ νŠΈμ—”λ“œ μ»΄ν¬λ„ŒνŠΈ μ„€κ³„λŠ” μ›Ή κ°œλ°œμ—μ„œ νŠΉμ • κΈ°λŠ₯μ΄λ‚˜ UI μš”μ†Œλ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ HTML ꡬ쑰, CSS μŠ€νƒ€μΌ, JavaScript λ™μž‘μ„ ν•˜λ‚˜μ˜ κΈ°λŠ₯적 λ‹¨μœ„λ‘œ λ¬Άμ–΄ λ‹€λ£¨λŠ” 개발 λ°©μ‹μž…λ‹ˆλ‹€ [1]. 기쑴의 μ—­ν•  쀑심 λΆ„λ¦¬μ—μ„œ κΈ°λŠ₯ μ€‘μ‹¬μ˜ λͺ¨λ“ˆν™”λ‘œ νŒ¨λŸ¬λ‹€μž„μ΄ μ „ν™˜λ˜λ©΄μ„œ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고 독립적인 ν…ŒμŠ€νŠΈλ₯Ό κ°€λŠ₯ν•˜κ²Œ ν–ˆμŠ΅λ‹ˆλ‹€ [1, 2]. ν•˜μ§€λ§Œ ν”„λ‘œμ νŠΈ 규λͺ¨κ°€ 컀짐에 따라 λ°œμƒν•˜λŠ” μ»΄ν¬λ„ŒνŠΈμ˜ λΉ„λŒ€ν™”μ™€ κ°•ν•œ 결합도λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, λ‹€μ‹œ 계측을 λ‚˜λˆ„κ³  관심사λ₯Ό λΆ„λ¦¬ν•˜λŠ” κ³ λ„ν™”λœ 섀계 원칙이 μš”κ΅¬λ©λ‹ˆλ‹€ [3, 4]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **ν”„λ‘ νŠΈμ—”λ“œ μ»΄ν¬λ„ŒνŠΈ νŒ¨λŸ¬λ‹€μž„μ˜ λ“±μž₯κ³Ό ν•œκ³„** κ³Όκ±° μ›Ή κ°œλ°œμ€ HTML(ꡬ쑰), CSS(ν‘œν˜„), JS(λ™μž‘)둜 각자의 언어에 역할을 λΆ„λ¦¬ν–ˆμœΌλ‚˜, μ›Ή ν”„λ ˆμž„μ›Œν¬μ˜ λ„μž…κ³Ό ν•¨κ»˜ 이λ₯Ό 수직으둜 κ΄€ν†΅ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈ 기반 μ•„ν‚€ν…μ²˜λ‘œ λ°œμ „ν–ˆμŠ΅λ‹ˆλ‹€ [1, 5]. ν•˜μ§€λ§Œ λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œλŠ” ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈλ‘œ 데이터λ₯Ό μ „λ‹¬ν•˜κΈ° μœ„ν•œ 'props drilling'으둜 인해 결합도가 μ§€λ‚˜μΉ˜κ²Œ λ†’μ•„μ‘Œκ³ , ν•˜λ‚˜μ˜ μ»΄ν¬λ„ŒνŠΈμ— 데이터 관리와 ν‘œν˜„, λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 λͺ¨λ‘ μ§‘μ€‘λ˜λ©΄μ„œ 단일 μ±…μž„ 원칙(SRP)을 μœ„λ°˜ν•˜λŠ” λΉ„λŒ€ν™” λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€ [3, 6]. * **효과적인 μ»΄ν¬λ„ŒνŠΈ 섀계λ₯Ό μœ„ν•œ 계측적 관심사 뢄리** λΉ„λŒ€ν•΄μ§„ μ»΄ν¬λ„ŒνŠΈ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ν”„λ‘ νŠΈμ—”λ“œ μ§„μ˜μ€ μ»΄ν¬λ„ŒνŠΈ 내뢀와 μ™ΈλΆ€λ₯Ό λ‹€μ‹œ κ³„μΈ΅μ μœΌλ‘œ λΆ„λ¦¬ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€ [4]. * **UI μ»΄ν¬λ„ŒνŠΈμ˜ 계측화:** μ•„ν† λ―Ή λ””μžμΈ νŒ¨ν„΄(Atomic Design Pattern) 등을 λ„μž…ν•˜μ—¬ μ»΄ν¬λ„ŒνŠΈλ₯Ό 더 μ„Έλ°€ν•œ κΈ°μ€€κ³Ό μ—­ν• λ‘œ 뢄리해 μ •λˆν–ˆμŠ΅λ‹ˆλ‹€ [7]. * **HTML-CSS의 단방ν–₯ μ˜μ‘΄μ„±:** CSS Modulesλ‚˜ CSS-in-JS 등을 ν™œμš©ν•˜μ—¬ ꡬ쑰(HTML) λ³€κ²½ μ‹œ μŠ€νƒ€μΌ(CSS)이 μ’…μ†μ μœΌλ‘œ 따라가도둝 μ˜μ‘΄μ„±μ˜ λ°©ν–₯을 단방ν–₯으둜 ν†΅μ œν–ˆμŠ΅λ‹ˆλ‹€ [7, 8]. * **λ·° 둜직과 λΉ„μ¦ˆλ‹ˆμŠ€/μ„œλ²„ μƒνƒœ 둜직의 뢄리:** μƒνƒœ 관리(State Management) κ°œλ…μ„ 톡해 μ»΄ν¬λ„ŒνŠΈλŠ” 였직 ν™”λ©΄ λ Œλ”λ§κ³Ό μ‚¬μš©μž 이벀트 μˆ˜μ‹ μ—λ§Œ μ§‘μ€‘ν•˜λ„λ‘ ν•˜κ³ , 데이터 λ‘œμ§μ΄λ‚˜ 비동기 처리(API 호좜, 캐싱 λ“±)λŠ” λ³„λ„μ˜ κ³„μΈ΅μœΌλ‘œ μœ„μž„ν•˜μ—¬ 단방ν–₯ 데이터 흐름을 κ΅¬μΆ•ν–ˆμŠ΅λ‹ˆλ‹€ [9, 10]. * **싀무적인 μ»΄ν¬λ„ŒνŠΈ 뢄리 및 μž¬μ‚¬μš© 원칙** * **도메인과 UI의 뢄리:** μ‹œκ°μ μΈ λͺ¨μ–‘이 μœ μ‚¬ν•˜λ”λΌλ„ λ‹€λ£¨λŠ” 도메인 데이터가 λ‹€λ₯΄λ‹€λ©΄ 같은 μ»΄ν¬λ„ŒνŠΈλ‘œ λ¬Άμ–΄ μž¬μ‚¬μš©ν•˜λŠ” 것은 μ§€μ–‘ν•΄μ•Ό ν•©λ‹ˆλ‹€. μž¬μ‚¬μš©ν•  μ»΄ν¬λ„ŒνŠΈλŠ” 도메인에 μ’…μ†λ˜μ§€ μ•Šμ€ 순수 UI μš”μ†Œλ‘œλ§Œ κ΅¬μ„±ν•˜μ—¬ 응집도λ₯Ό 높이고 λ…λ¦½μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€ [11, 12]. * **μ–΄λŒ‘ν„°(Adapter) νŒ¨ν„΄ ν™œμš©:** 만λŠ₯ κ΄€λ¦¬μž κ²Œμ‹œνŒμ²˜λŸΌ λ™μΌν•œ UI 화면에 λ‹€μ–‘ν•œ 도메인 데이터λ₯Ό λ Œλ”λ§ν•΄μ•Ό ν•  경우, μ»΄ν¬λ„ŒνŠΈ 내뢀에 λΆ„κΈ°λ¬Έ(if)을 λ¬΄ν•œνžˆ μΆ”κ°€ν•˜λŠ” 것은 μ•ˆν‹° νŒ¨ν„΄μž…λ‹ˆλ‹€. λŒ€μ‹  각 λ„λ©”μΈμ˜ 데이터λ₯Ό UI μ»΄ν¬λ„ŒνŠΈμ˜ κ·œκ²©μ— 맞게 λ³€ν™˜ν•΄ μ£ΌλŠ” μ–΄λŒ‘ν„°λ₯Ό 두어 ν™”λ©΄κ³Ό 데이터 κ°„μ˜ 단방ν–₯ μ˜μ‘΄μ„±μ„ μ§€μΌœμ•Ό ν•©λ‹ˆλ‹€ [12, 13]. * **섀계 νŒ¨λŸ¬λ‹€μž„μ— λ”°λ₯Έ 폴더 ꡬ쑰의 μ§„ν™” (FSD)** ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈμ˜ μ„€κ³„λŠ” 폴더 ꡬ쑰와 μ§κ²°λ©λ‹ˆλ‹€. μ΄ˆκΈ°μ—λŠ” μ—­ν• (api, components, pages λ“±) λ‹¨μœ„μ˜ 뢄리가 μœ λ¦¬ν•˜μ§€λ§Œ, ν”„λ‘œμ νŠΈκ°€ κ³ λ„ν™”λ˜λ©΄ μ—­ν•  μ€‘μ‹¬μ˜ κ΅¬μ‘°λŠ” μœ μ§€λ³΄μˆ˜λ₯Ό μ–΄λ ΅κ²Œ ν•©λ‹ˆλ‹€ [14, 15]. 이에 따라 μ½”λ“œλ₯Ό κΈ°λŠ₯(Feature) λ‹¨μœ„λ‘œ μ‘μ§‘μ‹œν‚€λŠ” FSD(Feature-Sliced Design) μ•„ν‚€ν…μ²˜ 방식이 λŒ€μ•ˆμœΌλ‘œ λ“±μž₯ν•˜μ—¬, κΈ°λŠ₯ κ°„μ˜ 결합도λ₯Ό 쀄이고 ν”„λ‘ νŠΈμ—”λ“œμ˜ λ³΅μž‘μ„±μ„ κ΄€λ¦¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [16, 17]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Design & Experience λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[κ΄€μ‹¬μ‚¬μ˜ 뢄리 (SoC)]], [[단일 μ±…μž„ 원칙 (SRP)]], μ•„ν† λ―Ή λ””μžμΈ νŒ¨ν„΄ (Atomic Design Pattern), 단방ν–₯ 데이터 흐름, [[FSD (Feature-Sliced Design)]] - **Projects/Contexts:** λŒ€κ·œλͺ¨ ν”„λ‘ νŠΈμ—”λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜ ꡬ좕 및 λ¦¬νŒ©ν† λ§ - **Contradictions/Notes:** μ†ŒμŠ€μ—μ„œλŠ” μ‹œκ°μ  ν˜•νƒœκ°€ λΉ„μŠ·ν•˜λ‹€κ³  λ¬΄μž‘μ • λ™μΌν•œ μ»΄ν¬λ„ŒνŠΈλ‘œ λ¬ΆλŠ” 것을 ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλ“€μ΄ ν”νžˆ ν•˜λŠ” μ‹€μˆ˜λ‘œ μ§€μ ν•©λ‹ˆλ‹€. 데이터(도메인)κ°€ λ‹€λ₯Ό 경우 결합도가 κΈ‰μ¦ν•˜μ—¬ 였히렀 μœ μ§€λ³΄μˆ˜μ„±μ΄ μ €ν•΄λ˜λ―€λ‘œ, UI μ»΄ν¬λ„ŒνŠΈμ™€ 도메인 μ»΄ν¬λ„ŒνŠΈλ₯Ό λͺ…ν™•νžˆ 뢄리해야 ν•œλ‹€κ³  κ°•μ‘°ν•©λ‹ˆλ‹€. --- *Last updated: 2026-04-18* ---