From e1cf743bf008da6b3436f58f2e69cffbb9b0bb27 Mon Sep 17 00:00:00 2001 From: Antigravity Agent Date: Sun, 26 Apr 2026 21:34:25 +0900 Subject: [PATCH] chore: Delete processed raw file (React Arch) --- 00_Raw/React Application Architecture.md | 35 ------------------- ...React-Application-Architecture-Patterns.md | 29 +++++++++++++++ 2 files changed, 29 insertions(+), 35 deletions(-) delete mode 100644 00_Raw/React Application Architecture.md create mode 100644 10_Wiki/Topics/AI/Modern-React-Application-Architecture-Patterns.md diff --git a/00_Raw/React Application Architecture.md b/00_Raw/React Application Architecture.md deleted file mode 100644 index e2f5ae2a..00000000 --- a/00_Raw/React Application Architecture.md +++ /dev/null @@ -1,35 +0,0 @@ -# [[React Application Architecture]] - -## πŸ“Œ Brief Summary -React μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜λŠ” ν™•μž₯μ„±, μœ μ§€λ³΄μˆ˜μ„±, κ³ μ„±λŠ₯을 보μž₯ν•˜κΈ° μœ„ν•΄ ν”„λ‘ νŠΈμ—”λ“œ μ‹œμŠ€ν…œμ˜ μ½”λ“œλ₯Ό μ²΄κ³„μ μœΌλ‘œ κ΅¬μ‘°ν™”ν•˜λŠ” ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€ [1]. 기술적인 파일 μœ ν˜• 기반의 폴더 κ΅¬μ‘°μ—μ„œ λ²—μ–΄λ‚˜ λΉ„μ¦ˆλ‹ˆμŠ€ κΈ°λŠ₯(Feature) 및 도메인 μ€‘μ‹¬μ˜ ꡬ쑰둜 μ „ν™˜ν•˜λŠ” 것이 졜근의 핡심 νŠΈλ Œλ“œμž…λ‹ˆλ‹€ [2, 3]. 효과적인 μ•„ν‚€ν…μ²˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 UI의 λͺ…ν™•ν•œ 뢄리, μƒνƒœ μ†Œμœ κΆŒμ˜ μ •μ˜, 그리고 μ»΄ν¬λ„ŒνŠΈ κ°„μ˜ 암묡적인 결합도 κ°μ†Œλ₯Ό 톡해 λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ—μ„œλ„ μ•ˆμ „ν•˜κ³  지속 κ°€λŠ₯ν•œ μ„±μž₯을 κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€ [4, 5]. - -## πŸ“– Core μ†ŒμŠ€ Content - -**1. 폴더 ꡬ쑰의 진화와 FSD (Feature-Sliced Design)** -* **파일 μœ ν˜• 기반 ꡬ쑰 (File-Type Based Structure):** κ³Όκ±°μ—λŠ” `components/`, `hooks/`, `services/` λ“± 기술적 역할에 따라 νŒŒμΌμ„ λΆ„λ₯˜ν–ˆμœΌλ‚˜, μ΄λŠ” κΈ°λŠ₯이 λ³΅μž‘ν•΄μ§ˆμˆ˜λ‘ κ΄€λ ¨ 둜직이 흩어져 μœ μ§€λ³΄μˆ˜μ™€ ν™•μž₯에 λΆˆλ¦¬ν•©λ‹ˆλ‹€ [2, 6, 7]. -* **κΈ°λŠ₯ 기반 ꡬ쑰 (Feature-Based Structure):** 인증(auth), λŒ€μ‹œλ³΄λ“œ(dashboard) λ“± λΉ„μ¦ˆλ‹ˆμŠ€ κΈ°λŠ₯μ΄λ‚˜ λͺ¨λ“ˆμ„ μ€‘μ‹¬μœΌλ‘œ 폴더λ₯Ό κ΅¬μ„±ν•˜μ—¬ 응집도λ₯Ό 높이고 λͺ¨λ“ˆ 독립성을 보μž₯ν•©λ‹ˆλ‹€ [3, 8]. -* **FSD (Feature-Sliced Design):** ν”„λ‘ νŠΈμ—”λ“œμ— νŠΉν™”λœ ν˜„λŒ€μ  μ•„ν‚€ν…μ²˜ λ°©λ²•λ‘ μœΌλ‘œ, μ½”λ“œλ₯Ό `app`, `pages`, `widgets`, `features`, `entities`, `shared`의 μ—„κ²©ν•œ 계측 ꡬ쑰둜 λ‚˜λˆ•λ‹ˆλ‹€ [9-11]. ν•˜μœ„ 계측이 μƒμœ„ 계측에 μ˜μ‘΄ν•˜μ§€ λͺ»ν•˜κ²Œ ν•˜λŠ” '단방ν–₯ μ˜μ‘΄μ„±' 원칙을 κ°•μ œν•˜λ©°, 각 μŠ¬λΌμ΄μŠ€λŠ” `index.ts`λ₯Ό ν†΅ν•œ 단일 μ§„μž…μ (Public API)만 λ…ΈμΆœν•˜μ—¬ μΊ‘μŠν™”μ™€ μ•ˆμ „ν•œ λ¦¬νŒ©ν† λ§μ„ 보μž₯ν•©λ‹ˆλ‹€ [9, 12, 13]. - -**2. Clean Code 및 ν™•μž₯성을 μœ„ν•œ 섀계 원칙** -* **관심사 뢄리 (Separation of Concerns):** UI λ Œλ”λ§μ„ λ‹΄λ‹Ήν•˜λŠ” μ»΄ν¬λ„ŒνŠΈμ™€ 데이터 페칭 및 μ™ΈλΆ€ 톡신을 λ‹΄λ‹Ήν•˜λŠ” μ„œλΉ„μŠ€ λ ˆμ΄μ–΄λ₯Ό λΆ„λ¦¬ν•˜μ—¬ 디버깅을 μš©μ΄ν•˜κ²Œ ν•΄μ•Ό ν•©λ‹ˆλ‹€ [14, 15]. -* **SOLID 원칙:** 단일 μ±…μž„ 원칙(SRP)에 따라 ν•˜λ‚˜μ˜ μ»΄ν¬λ„ŒνŠΈλŠ” ν•˜λ‚˜μ˜ 일만 ν•΄μ•Ό ν•˜λ©°, 300쀄이 λ„˜μ–΄κ°€λŠ” μ»΄ν¬λ„ŒνŠΈλŠ” λ„ˆλ¬΄ λ§Žμ€ 역할을 ν•˜κ³  μžˆλ‹€λŠ” μ‹ ν˜Έμ΄λ―€λ‘œ 뢄리해야 ν•©λ‹ˆλ‹€ [16]. λ˜ν•œ 상속 λŒ€μ‹  μ»΄ν¬λ„ŒνŠΈ 합성을 μ‚¬μš©ν•˜κ³ (OCP), ν•„μš” μ—†λŠ” props μ˜μ‘΄μ„±μ„ 제거(ISP)ν•΄μ•Ό ν•©λ‹ˆλ‹€ [17, 18]. -* **DRY, KISS, YAGNI:** 쀑볡 λ‘œμ§μ€ μ»€μŠ€ν…€ ν›…μ΄λ‚˜ κ³ μ°¨ μ»΄ν¬λ„ŒνŠΈλ‘œ λΆ„λ¦¬ν•˜λ˜(DRY), λ„ˆλ¬΄ λ³΅μž‘ν•œ μΆ”μƒν™”λŠ” ν”Όν•˜μ—¬ μ½”λ“œλ₯Ό μ§κ΄€μ μœΌλ‘œ μœ μ§€ν•΄μ•Ό ν•˜λ©°(KISS), ν˜„μž¬ ν•„μš”ν•˜μ§€ μ•Šμ€ 미래의 κΈ°λŠ₯은 미리 κ΅¬ν˜„ν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€(YAGNI) [19-21]. - -**3. μƒνƒœ 관리 (State Management) μ•„ν‚€ν…μ²˜** -* ν˜„λŒ€μ˜ μƒνƒœ κ΄€λ¦¬λŠ” 단일 μŠ€ν† μ–΄κ°€ μ•„λ‹Œ λͺ©μ μ— λ”°λ₯Έ μ„ΈλΆ„ν™”κ°€ ν‘œμ€€μž…λ‹ˆλ‹€ [22]. -* **μ„œλ²„ μƒνƒœμ™€ ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœ 뢄리:** APIμ—μ„œ κ°€μ Έμ˜€λŠ” μ„œλ²„ λ°μ΄ν„°λŠ” 캐싱과 동기화λ₯Ό μ§€μ›ν•˜λŠ” TanStack Query(React Query)둜 κ΄€λ¦¬ν•˜λ©°, λ„€νŠΈμ›Œν¬ λ‘œμ§μ„ UI와 λΆ„λ¦¬ν•©λ‹ˆλ‹€ [23, 24]. μ „μ—­ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μƒνƒœλŠ” Context API의 λΆˆν•„μš”ν•œ λ¦¬λ Œλ”λ§ 문제λ₯Ό ν”Όν•˜κΈ° μœ„ν•΄ Zustand와 같은 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€ [22, 23, 25, 26]. - -**4. κ±°λ²„λ„ŒμŠ€: λͺ…λͺ… κ·œμΉ™, ν˜‘μ—… 및 λ¦¬νŒ©ν† λ§** -* **λͺ…λͺ… κ·œμΉ™ (Naming Conventions):** 파일 및 폴더 이름은 OS ν˜Έν™˜μ„±μ„ μœ„ν•΄ `kebab-case`λ₯Ό, React μ»΄ν¬λ„ŒνŠΈλŠ” `PascalCase`λ₯Ό, ν•¨μˆ˜λ‚˜ μ»€μŠ€ν…€ ν›… 및 λ³€μˆ˜λŠ” `camelCase`λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 ν‘œμ€€μž…λ‹ˆλ‹€ [27-30]. -* **μžλ™ν™”λœ κ±°λ²„λ„ŒμŠ€:** ESLintλ₯Ό 톡해 FSD 계측 κ°„ 잘λͺ»λœ μž„ν¬νŠΈλ₯Ό μ°¨λ‹¨ν•˜κ³ , Husky둜 컀밋 μ „ ν¬λ§·νŒ…κ³Ό λ¦°νŒ…μ„ κ°•μ œν•˜μ—¬ μ•„ν‚€ν…μ²˜ 원칙을 νŒ€ 전체에 μΌκ΄€λ˜κ²Œ μ μš©ν•©λ‹ˆλ‹€ [28]. -* **μ›Œν¬ν”Œλ‘œμš° 및 λ¦¬νŒ©ν† λ§:** μ†Œκ·œλͺ¨ νŒ€μ΄λΌλ„ κΈ°λŠ₯ 브랜치 μ›Œν¬ν”Œλ‘œμš°λ₯Ό 톡해 메인 브랜치의 μ•ˆμ •μ„±μ„ μœ μ§€ν•˜λ©°, μ»€μŠ€ν…€ 훅을 λ¦¬νŒ©ν† λ§μ˜ κΈ°λ³Έ λ‹¨μœ„λ‘œ μ‚Όμ•„ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ UIλ‘œλΆ€ν„° μ•ˆμ „ν•˜κ²Œ κ²©λ¦¬ν•©λ‹ˆλ‹€ [31-34]. - -## πŸ”— Knowledge Connections -- **Related Topics:** [[Feature-Sliced Design]], [[State Management Architecture]], [[Clean Code Principles]], [[Folder Structure Best Practices]] -- **Projects/Contexts:** [[Large-scale React Applications]], [[Frontend System Engineering]] -- **Contradictions/Notes:** - - 폴더 ꡬ쑰에 κ΄€ν•œ μ‹œκ° 차이: 평면 κ΅¬μ‘°λ‚˜ 파일 μœ ν˜•λ³„ ꡬ쑰(components, hooks λ“±)λŠ” μ΄ˆλ³΄μžλ‚˜ μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈμ—λŠ” μ‹œμž‘ν•˜κΈ° μ‰¬μš΄ μž₯점이 μžˆμ§€λ§Œ, ν”„λ‘œμ νŠΈκ°€ 컀짐에 따라 ν™•μž₯성이 크게 λ–¨μ–΄μ§€λ―€λ‘œ κΆκ·Ήμ μœΌλ‘œλŠ” κΈ°λŠ₯ λ‹¨μœ„(Feature-based)λ‚˜ FSD μ•„ν‚€ν…μ²˜λ‘œ λ„˜μ–΄κ°€μ•Ό ν•œλ‹€κ³  κ°•μ‘°ν•©λ‹ˆλ‹€ [6-8, 35, 36]. - - DRY와 KISS 원칙 κ°„μ˜ κ· ν˜•: μ†ŒμŠ€λŠ” 쀑볡을 μ€„μ΄λŠ” DRY 원칙을 κ°•μ‘°ν•˜λ©΄μ„œλ„, μ½”λ“œλ₯Ό κ³Όλ„ν•˜κ²Œ μΆ”μƒν™”ν•˜λ©΄ 직관성과 λ‹¨μˆœμ„±μ„ ν•΄μΉ˜λŠ” KISS 원칙 μœ„λ°˜μ„ μ΄ˆλž˜ν•  수 μžˆμœΌλ―€λ‘œ μ΅œμ†Œ 3번 이상 νŒ¨ν„΄μ΄ 반볡될 λ•Œλ§Œ 좔상화λ₯Ό μ μš©ν•˜λ„λ‘ ꢌμž₯ν•©λ‹ˆλ‹€ [19]. - ---- -*Last updated: 2026-04-26* \ No newline at end of file diff --git a/10_Wiki/Topics/AI/Modern-React-Application-Architecture-Patterns.md b/10_Wiki/Topics/AI/Modern-React-Application-Architecture-Patterns.md new file mode 100644 index 00000000..d85453ac --- /dev/null +++ b/10_Wiki/Topics/AI/Modern-React-Application-Architecture-Patterns.md @@ -0,0 +1,29 @@ +--- +id: FE-ARCH-REACT-MODERN-001 +category: "[[10_Wiki/πŸ’‘ Topics/AI]]" +confidence_score: 1.0 +tags: [react, architecture, components, separation-of-concerns, domain-driven-design, hooks, scalability] +last_reinforced: 2026-04-26 +--- + +# [[Modern React Application Architecture Patterns (ν˜„λŒ€ React μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄)]] + +## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) +> "UI λ Œλ”λ§(JSX), λΉ„μ¦ˆλ‹ˆμŠ€ 둜직(Custom Hooks), μƒνƒœ 관리(Global/Server State), 그리고 도메인 κ·œμΉ™(Features)을 λͺ…ν™•ν•˜κ²Œ λΆ„λ¦¬ν•˜μ—¬, 변화에 μœ μ—°ν•˜κ³  ν…ŒμŠ€νŠΈ κ°€λŠ₯ν•œ 'μ»΄ν¬λ„ŒνŠΈ 쀑심 λΆ„μ‚° μ‹œμŠ€ν…œ'을 μ„€κ³„ν•˜λΌ" β€” ν™•μž₯μ„± μžˆλŠ” React 앱을 μœ„ν•œ ꡬ쑰적 κ°€μ΄λ“œλΌμΈ. + +## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) +- **μΆ”μΆœλœ νŒ¨ν„΄:** "Feature-Based Modularization and Functional Decoupling" β€” μ½”λ“œλ₯Ό 기술적 μ—­ν• (Components, Hooks)이 μ•„λ‹Œ λΉ„μ¦ˆλ‹ˆμŠ€ 도메인(Features) λ‹¨μœ„λ‘œ μ‘μ§‘μ‹œν‚€κ³ , 관심사λ₯Ό λΆ„λ¦¬ν•˜μ—¬ μœ μ§€λ³΄μˆ˜μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” νŒ¨ν„΄. +- **핡심 μ•„ν‚€ν…μ²˜ μ „λž΅:** + - **Custom Hooks for Logic:** λͺ¨λ“  λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 데이터 νŽ˜μΉ­μ€ μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€κ°€ μ•„λ‹Œ μ „μš© μ»€μŠ€ν…€ ν›…μœΌλ‘œ μΆ”μΆœν•˜μ—¬ UI와 결합도 μ΅œμ†Œν™”. + - **Compound Components Pattern:** λ³΅μž‘ν•œ UI μš”μ†Œλ₯Ό λΆ€λͺ¨-μžμ‹ κ΄€κ³„μ˜ μž‘μ€ μ»΄ν¬λ„ŒνŠΈλ“€λ‘œ μ‘°ν•©ν•˜μ—¬ μœ μ—°ν•œ API 제곡. + - **Container-Presenter Logic:** (ν˜„λŒ€μ μœΌλ‘œ μž¬ν•΄μ„) 순수 UI μ»΄ν¬λ„ŒνŠΈμ™€ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μ£Όμž…λœ 래퍼 μ»΄ν¬λ„ŒνŠΈμ˜ λͺ…ν™•ν•œ μ—­ν•  λΆ„λ‹΄. + - **Server State Management:** ν΄λΌμ΄μ–ΈνŠΈ μ „μ—­ μƒνƒœμ™€ μ„œλ²„ 데이터(Cache)λ₯Ό λΆ„λ¦¬ν•˜μ—¬ `TanStack Query` λ“±μœΌλ‘œ 효율적 관리. +- **의의:** μš”κ΅¬μ‚¬ν•­ λ³€κ²½ μ‹œ 영ν–₯ λ²”μœ„λ₯Ό μ΅œμ†Œν™”ν•˜κ³ , 수백 λͺ…μ˜ κ°œλ°œμžκ°€ ν˜‘μ—…ν•΄λ„ μ½”λ“œ 좩돌이 적은 μ•ˆμ •μ μΈ μ½”λ“œλ² μ΄μŠ€ μœ μ§€. + +## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) +- **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** κ³Όκ±°μ—λŠ” Redux에 λͺ¨λ“  μƒνƒœλ₯Ό λͺ°μ•„λ„£λŠ” 정책이 μΌλ°˜μ μ΄μ—ˆμœΌλ‚˜, ν˜„λŒ€ 정책은 'μƒνƒœμ˜ 성격(UI vs Server vs Global)에 λ”°λ₯Έ νŒŒνŽΈν™” μ •μ±…'을 μ„ ν˜Έν•¨. +- **μ •μ±… λ³€ν™”:** Antigravity ν”„λ‘œμ νŠΈλŠ” λͺ¨λ“  λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 ν¬ν•¨λœ 훅에 λŒ€ν•΄ λ°˜λ“œμ‹œ λ‹¨μœ„ ν…ŒμŠ€νŠΈ μž‘μ„±μ„ μ˜λ¬΄ν™”ν•˜λ©°, λ·°(View)와 λͺ¨λΈ(Model)의 강결합을 μ—„κ²©νžˆ μ œν•œν•˜λŠ” 정책을 μ‹œν–‰ν•¨. + +## πŸ”— 지식 μ—°κ²° (Graph) +- [[Large-scale-Application-Architecture-Patterns]], [[Custom-Hooks-Patterns]], [[State-Management-Architecture-and-Ownership]], [[Frontend-Architecture-and-Folder-Structure]] +- **Raw Source:** [[00_Raw/React Application Architecture.md]]