본문 바로가기
CS

Clean Architecture(클린 아키텍처)에 대한 개념과 구조

by mr.conan 2023. 7. 20.
728x90
반응형

Clean Architecture(클린 아키텍처)란 소프트웨어 시스템의 구조를 구성하는 하나의 디자인 패턴으로, 소프트웨어를 독립적인 컴포넌트로 나누고, 각 컴포넌트가 독립적으로 개발과 테스트가 가능하도록 설계하는 방법을 말합니다. 로버트 C. 마틴(Robert C. Martin)의 "Clean Architecture: A Craftsman's Guide to Software Structure and Design"에서 소개된 이 아키텍처는 소프트웨어의 유연성, 테스트 용이성, 확장성 등을 보장하여 유지보수성을 높이고, 비즈니스 로직을 최대한 독립적으로 관리할 수 있도록 합니다.

클린 아키텍처의 구조는 크게 다음과 같이 나뉩니다.

  1. Entity: 애플리케이션의 비즈니스 로직을 담당하는 엔티티입니다. 애플리케이션의 핵심 비즈니스 규칙과 데이터를 포함하며, 다른 레이어에 의존하지 않습니다.
  2. Use Case: 애플리케이션의 비즈니스 규칙을 실행하는 유스케이스(Use Case)가 위치하는 곳입니다. 엔티티의 데이터를 이용하여 비즈니스 규칙을 구현하고, Presenter 레이어로 결과를 반환합니다.
  3. Interface Adapters: 외부 요청(사용자 인터페이스, 데이터베이스 등)을 Use Case와 Entity가 이해할 수 있는 형태로 변환하는 책임을 갖고 있습니다. 컨트롤러, 뷰, 프레젠터 등이 이에 해당합니다.
  4. Frameworks & Drivers: 인터페이스 어댑터를 외부 환경과 연결하는 역할을 합니다. 웹 프레임워크, 데이터베이스, UI 프레임워크 등이 이에 해당합니다.

클린 아키텍처의 핵심 원칙은 다음과 같습니다.

  1. 의존성 역전 원칙(Dependency Inversion Principle): 상위 수준의 모듈은 하위 수준의 모듈에 의존하지 않도록 설계합니다. 의존성은 추상화를 기반으로 하며, 하위 수준의 모듈이 상위 수준의 모듈을 의존합니다.
  2. 단일 책임 원칙(Single Responsibility Principle): 하나의 모듈은 하나의 책임만 갖도록 구성합니다. 이를 통해 유지보수성과 확장성을 향상시킵니다.
  3. 인터페이스 분리 원칙(Interface Segregation Principle): 클라이언트가 사용하지 않는 메서드에는 의존하지 않도록 인터페이스를 분리합니다. 이를 통해 결합도를 낮춥니다.

클린 아키텍처는 소프트웨어를 구성하는 모든 요소들을 독립적인 단위로 구성하며, 이를 통해 유지보수성과 테스트 용이성을 극대화합니다. 또한, 비즈니스 로직을 최대한 독립적으로 관리하여 시스템의 변경에 유연하게 대응할 수 있습니다.

이상으로, Clean Architecture(클린 아키텍처)에 대한 개념과 구조에 대해 설명드렸습니다. Clean Architecture의 핵심 원칙과 장점을 활용하여 소프트웨어를 설계하면, 유지보수성과 확장성을 높일 수 있으며, 변경에 유연하게 대응할 수 있는 구조를 구축할 수 있습니다.

728x90
반응형