본문 바로가기

Develop/WEB

클린 아키텍쳐(Clean Architecture)

🔴클린 아키텍쳐

기존의 계층형 아키텍쳐가 가지던 의존성에서 벗어나도록 하는 설계

경계가 핵심 포인트!!!!! 

소프트웨어 아키텍처는 선을 긋는 기술이며, 나는 이러한 선을 경계(boundary)라고 부른다.
경계는 소프트웨어 요소를 서로 분리하고, 경계 한편에 있는 요소가 반대편에 있는 요소을 알지 못하도록 막는다.

- Robert C. Martin, Clean Architecture

 

위 그래프의 화살표 방향은 의존성을 뜻한다

클린 아키텍쳐의 의존성은 밖에서 안으로 향하고, 바깥 원은 안쪽 원에 영향을 미치지 X

경계의 바깥으로 갈수록 덜 중요하고 세부적인 영역임

안으로 갈수록 고수준

🔵엔티티(Entities)

핵심 업무 규칙을 캡슐화

메서드를 가지는 객체, 일련의 데이터 구조와 함수의 집합

외부의 영향을 가장 받지 않음

 

🔵유즈 케이스(Use Cases)

애플리케이션의 특화된 업무 규칙

엔티티로 들어오고 나가는 데이터 흐름을 조정하고 조작

 

🔵인터페이스 어댑터(Interface Adapter)

일련의 어댑터들로 구성

외부 인터페이스에서 들어오는 데이터를 유즈 케이스와 엔티티에서 처리하기 편한 방식으로 변환 > 그 반대도 마찬가지

 

🔵프레임워크와 드라이버(Frameworks & Drivers)

시스템의 핵심 업무와는 관련 없는 세부 사항


이런식으로 중요한 순으로 응집을 해놓고 결합도를 낮추면 유지보수와 재사용성이 높아진다.