공유하기

클린 아키텍처

클린 아키텍처

소프트웨어를 동심원 형태의 계층(엔티티→유스케이스→인터페이스 어댑터→ 프레임워크/드라이버)으로 나누고, 의존성이 항상 안쪽 비즈니스 로직을 향하게 만드는 아키텍처 원칙. 로버트 C. 마틴이 제안했다.

예시

  • 우리 프로젝트는 클린 아키텍처를 적용해서 도메인 로직이 프레임워크에 종속되지 않는다.
  • 클린 아키텍처의 의존성 규칙에 따르면 안쪽 계층은 바깥쪽 계층을 몰라야 한다.

유래

로버트 C. 마틴(Uncle Bob)이 2012년 블로그 글 "The Clean Architecture"에서 처음 소개했고, 2017년 동명의 책으로 정리해 확산시켰다.

설명

클린 아키텍처는 시스템을 여러 동심원 계층으로 나누고, 의존성 규칙(Dependency Rule)에 따라 항상 바깥쪽 계층이 안쪽 계층에만 의존하도록 강제하는 설계 원칙입니다.

대표적인 계층 구성은 다음과 같습니다.

  • 엔티티(Entities): 가장 안쪽, 프레임워크와 무관한 핵심 비즈니스 규칙
  • 유스케이스(Use Cases): 애플리케이션 고유의 로직
  • 인터페이스 어댑터(Interface Adapters): 컨트롤러, 프레젠터 등
  • 프레임워크·드라이버: DB, 웹 프레임워크, UI 등 가장 바깥쪽

이렇게 나누면 UI나 DB 같은 세부 구현을 교체해도 핵심 비즈니스 로직은 영향을 받지 않아 테스트 용이성·유지보수성·재사용성이 높아집니다. 헥사고날 아키텍처(포트와 어댑터 패턴)와도 같은 목표를 공유하는 개념으로 자주 함께 언급됩니다.

TECH중립2012아키텍처개발설계

관련 용어