클린 아키텍처는 소프트웨어 시스템을 구성하는 다양한 계층들을 명확하게 구분하여, 유지보수성과 테스트 용이성을 극대화하는 아키텍처 패턴입니다.
로버트 C. 마틴(Robert C. Martin, Uncle Bob)이 제안했으며, 의존성 규칙(Dependency Rule)에 따라 안쪽 계층이 바깥 계층에 의존하지 않도록 설계됩니다.
+-------------------------+
| Frameworks & UI | ← 외부 시스템, UIKit, SwiftUI 등
+-------------------------+
↓
+-------------------------+
| Interface Adapter | ← ViewModel, Controller, Presenter
+-------------------------+
↓
+-------------------------+
| Application Business | ← UseCase
+-------------------------+
↓
+-------------------------+
| Enterprise Business | ← Entity (도메인 모델)
+-------------------------+

클린 아키텍처는 장기적인 프로젝트에서 유지보수성과 테스트 효율을 극대화하기 위한 설계 방법입니다.
비즈니스 로직을 외부 프레임워크나 UI로부터 격리시켜 독립성과 유연성을 확보할 수 있습니다.