본문 바로가기

전지적라온시점

클린 아키텍처(Clean Architecture)란 무엇인가? 실무 적용 전략까지 본문

Development/Architecture

클린 아키텍처(Clean Architecture)란 무엇인가? 실무 적용 전략까지

최라온 2025. 5. 23. 13:34
728x90
반응형
SMALL

클린 아키텍처(Clean Architecture)란 무엇인가? 실무 적용 전략까지

클린 아키텍처(Clean Architecture)는 소프트웨어의 유지보수성과 테스트 가능성을 극대화하기 위한 아키텍처 설계 원칙입니다. 로버트 C. 마틴(Uncle Bob)이 제안한 이 구조는 의존성 역전을 기반으로 도메인 중심 설계를 실현합니다. 이 글에서는 클린 아키텍처의 개념, 계층 구조, 실무 적용 전략까지 단계별로 정리합니다.

1. 클린 아키텍처란?

클린 아키텍처는 애플리케이션을 도메인 중심으로 분리하고, 외부 기술에 의존하지 않는 구조를 지향합니다. “변하지 않는 것(비즈니스 규칙)은 중심에, 변하는 것(프레임워크, DB, UI 등)은 바깥에” 위치시키는 것이 핵심입니다.

2. 계층 구조 설명

  • Entity: 핵심 비즈니스 규칙 (도메인 모델)
  • Use Case: 사용자 요청에 따른 애플리케이션 규칙 (서비스)
  • Interface Adapter: 외부와 내부를 연결 (Controller, Presenter, Repository 인터페이스)
  • Framework & Driver: 웹, DB, UI 등 실제 구현 기술 (Spring, MySQL, React 등)

3. 의존성 규칙 (Dependency Rule)

안쪽 계층은 바깥 계층에 절대 의존하지 않는다.
즉, UseCaseControllerDB에 대해 아무것도 몰라야 하며, 반대로 바깥 계층이 안쪽 계층을 의존해야 합니다.

Interface → UseCase → Domain(Entity)
             ↑
         Infrastructure (implements)

4. 실무 구조 예시 (Spring 기준)

com.example.app/
 ├── domain/              (Entity, ValueObject)
 ├── usecase/             (Service, Port)
 ├── adapter/
 │   ├── in/              (Controller, WebAdapter)
 │   └── out/             (PersistenceAdapter, 외부 API)
 └── infrastructure/      (JPA, MyBatis, Config, Mail 등)

이 구조에서는 DB나 프레임워크 교체가 용이하며, 도메인 테스트 단독 수행이 가능합니다.

5. Port & Adapter 패턴

클린 아키텍처는 Port & Adapter (Hexagonal Architecture)의 개념을 기반으로 구성됩니다. Port: UseCase가 정의한 입출력 인터페이스 Adapter: 실제 구현체 (DB, 외부 API 등)

예:

// Port
public interface UserPersistencePort {
    User findById(Long id);
    void save(User user);
}

// Adapter
@Repository
public class UserJpaAdapter implements UserPersistencePort {
    // JPA 구현체
}

6. 장점

  • 유지보수 용이: 기술 변화에 유연함 (DB, 프레임워크 교체)
  • 테스트 용이: 도메인 계층 단독 테스트 가능
  • 높은 재사용성: 유스케이스 재활용 가능
  • 의존성 명확: 계층 간 흐름이 명확

7. 단점

  • 설계 복잡도 상승
  • 초기 학습 비용 존재
  • 작은 프로젝트에는 과도한 설계일 수 있음

8. 결론

클린 아키텍처는 장기적으로 유지보수성과 확장성이 뛰어난 애플리케이션을 만들기 위한 설계 전략입니다. 초기에는 다소 복잡해 보일 수 있지만, 도메인 중심 개발, 테스트 용이성, 기술 독립성을 확보할 수 있습니다. 규모가 커질수록 그 효과는 명확하게 나타납니다.

728x90
반응형
LIST