--- id: [[P-Reinforce|P-Reinforce]]-AI-CLEANARCH-IMP category: Dev confidence_score: 0.98 tags: [Clean Architecture, Implementation, Layering, SOLID] last_reinforced: 2026-04-20 --- # [[Clean-Architecture-Implementation|Clean-Architecture-Implementation]] (클린 아키텍처 구현) ## 📌 한 줄 통찰 (The Karpathy Summary) > "데이터베이스나 프레임워크는 세부 사항일 뿐이다." 비즈니스 규칙(Domain)을 외부 세계로부터 철저히 격리하여 평생 변하지 않는 단단한 원핵(Core)을 유지하는 아키텍처다. ## 📖 구조화된 지식 (Synthesized Content) - **의존성 규칙 (Dependency Rule)**: - 의존성의 방향은 항상 안쪽(Domain)으로만 향해야 한다. 도메인은 외부 라이브러리나 UI 라이브러리를 절대 알면 안 된다. - **4대 레이어 구성**: 1. **Entities**: 가장 핵심적인 비즈니스 객체 및 규칙. 2. **Use Cases**: 애플리케이션 특유의 비즈니스 논리 구현. 3. **Interface Adapters**: Controller, Presenter 등 데이터 변환기. 4. **Frameworks & Drivers**: DB, UI, 외부 API 등 인프라스트럭처. - **DIP (Dependency [[Inversion|Inversion]] Principle)**: - 중심부가 외부를 호출해야 할 땐 인터페이스를 정의하고, 실체는 외부에서 주입(Injection)받는다. ## ⚠️ 모순 및 업데이트 (RL Update) - 작은 프로젝트에 클린 아키텍처를 도입하는 것은 '보일러플레이트 지옥'을 초래할 수 있다. 소규모일 땐 생산성을 챙기고, 코드 베이스가 1만 라인을 넘어가는 시점부터 점진적으로 레이어를 분리하는 **'점진적 아키텍처링'**이 실무에서 더 선호된다. ## 🔗 지식 연결 (Graph) - Related: [[Separation_of_Concerns|Separation_of_Concerns]] , [[Domain-Driven Design (DDD)|Domain-Driven Design (DDD)]] - Foundation: [[React_Clean_Code_Best_Practices|React_Clean_Code_Best_Practices]]