나름대로 Clean Architecture 이해

개요



Clean Architecture에 관해서 나름대로 가능한 한 간결하게 정리해 보았습니다.

Clean Architecture에서 달성하는 것



관심의 분리

관심을 분리하여 달성 할 수있는 일



관심을 분리함으로써 다음을 달성 할 수 있습니다.

(1) 프레임 워크 독립적



아키텍처는 기능이 가득한 소프트웨어 라이브러리에 의존하지 않습니다. 이렇게하면 시스템을 프레임 워크의 제약으로 묶지 않고 프레임 워크를 도구로 사용할 수 있습니다.

(2) 테스트 가능



비즈니스 규칙(소프트웨어의 핵심)은 UI, 데이터베이스, 웹 서버, 기타 외부 요소 없이도 테스트할 수 있다.

(3) UI 독립적



UI는 시스템의 다른 부분을 변경하지 않고 쉽게 변경할 수 있다. 예를 들어, 비즈니스

스룰을 변경하지 않고 웹 UI를 콘솔 UI로 바꿀 수 있습니다.

(4) 데이터베이스 독립적



Oracle과 SQL Server를 Mongo, BigTable, CouchDB 등으로 대체할 수 있다. 비즈니스 규칙은 데이터베이스에 묶여 있지 않습니다.

(5) 외부 에이전트 독립적



비즈니스 규칙은 외부 세계의 인터페이스에 대해 아무것도 모른다.

Clean Architecture 개요



종속성은 내측 단방향으로만 이루어지며 외부 규칙을 안쪽으로 가져 가면 안됩니다.

즉, 내부 레이어는 외부 레이어의 구현을 알지 못하고 영향을받지 않아야합니다.



그림을 각 레이어별로 이해



엔터프라이즈 비즈니스 규칙(Entities)


  • 시스템이 자동화되지 않은 경우에도 존재하는 가장 중요한 비즈니스 규칙 및 가장 중요한 비즈니스 데이터를 캡슐화합니다.
  • 시스템에서 가장 독립적이고 가장 재사용 가능해야합니다

  • 애플리케이션 비즈니스 규칙(Use Cases)


  • 응용 프로그램 별 비즈니스 규칙 작성
  • 엔터프라이즈 비즈니스 규칙을 언제 · 어떻게 호출할지에 대한 규칙을 포함합니다.

    인터페이스 어댑터(Controllers/Presenters/Gateways)


  • 내부 (Entities/Usecases) 및 외부 (DB 및 웹 프레임 워크)에서 데이터 형식을 각각 편리한 형식으로 변환하는 어댑터

  • 프레임워크 및 드라이버(UI/Web/Devices/DB/External Interfaces)


  • 프레임 워크 및 도구로 구성됩니다 (DB, 웹 프레임 워크 등)

  • 참고


  • Clean Coder Blog
  • 세계에서 알기 쉬운 Clean Architecture - nuits.jp blog
  • 구현 클린 아키텍처 - Qiita
  • Trying Clean Architecture on Golang
  • 깨끗한 아키텍처 완전히 이해
  • Clean Architecture로 API Server 구축 - Qiita
  • 그림 깨끗한 아키텍처 - Qiita
  • 좋은 웹페이지 즐겨찾기