티스토리 뷰

카테고리 없음

클린 아키텍처란?

jfmam 2023. 3. 19. 19:34

Clean Architecture


Clean Architecture란?

출처:Clean Architecture는 모바일 개발을 어떻게 도와주는가? - (1) 경계선: 계층 나누기

 

클린 아키텍처는 소프트웨어 구조 중 하나이며 다음 사진과 같은 계층 분리를 주 목적으로 하고있다. 클린 아키텍처의 바깥 원은 저 수준에 해당하며 중심으로 갈수록 고 수준에 해당한다.고 수준일수록 추상적이고 비즈니스 규칙을 나타내며 저 수준일수록 고 수준에 대한 내용을 바탕으로 구체적이고 세부적인 개념으로 들어간다.

의존성 규칙(Dependency-Rule)

모든 의존성은 저 수준에서 고 수준으로 향해야한다.

고 수준(High-Level)

Entity

정의

원의 가장 중심에 있는 부분으로 비즈니스 규칙의 데이터를 나타낸다.개발언어와 순수 라이브러리 외에 의존성이 없으며 매우 추상적인 개념을 나타낸다.

Usecase(interactor)

정의

Entity보다 한 단계 밖에 있는 원으로 고 수준에 해당한다.entity를 참조하여 framework,application에 적용 되는 비즈니스 로직을 정의한다.이 부분 또한 고 수준에 해당하며 framework,UI에 영향을 받지 않는 부분이다.

저 수준(Low-Level)

adapter

정의

adapter는 외부 에이전시로 부터 데이터를 받아 처리를 하는 부분이다.데이터 베이스나 서버통신이 이에 해당 되며 orm,데이터 베이스 로직 처리, api 호출 등이 이에 해당된다.

 

framework

정의

서비스의 end-point로 framework에 매우 의존적이다.view나 DB web이 이에 해당하며 가장 많이 변하는 부분에 해당한다.


clean Architecture의 장점

clean architecture의 본질은 계층을 분리하는 것이다.계층을 분리하여 얻는 장점은 다음과 같다.

  • framework의 영향을 받지 않는다.
    고 수준으로 갈수록 framework와는 무관해진다.각 계층을 나누었기에 나중에 framework를 변경해야 할 일이 생긴다면 저 수준에서의 계층만 변경하면 되기에 유지보수에 용이하다.
  • 테스트가 가능하다.
    비즈니스 규칙은 UI나 framework같은 외부 요소와 상관없이 테스트가 가능하다.
  • 소스코드의 전반적인 내용을 쉽게 이해 할 수 있고 수정 할 수 있다.
    각 계층별로 트리구조를 이루고 있기 때문에 필요한 계층만 찾아서 수정이 가능하고 바깥 계층에서의 변화가 안쪽 계층까지 영향이 가지 않는다.

Clean Architecture 단점

  • 클래스의 수 증가

각 계층을 나누는 만큼 간단한 로직을 만들 때에도 굉장히 많은 양의 파일을 만들어야한다.

  • 필요없는 파일의 생성

비즈니스 규칙이 많이 없는 경우에도 각 계층을 나누는 작업을 해야한다.


Clean Architecture 단점 보완 방법

  • 클린아키텍처의 원리를 재 해석하기
    클린아키텍처의 정의는 역할이나 레벨에 따라 각 계층을 나누는 것이다.위의 사진처럼 꼭 4계층이 아니여도 괜찮다.모든 계층을 전부 만드는 것이아닌 필요에 따라 고 수준과 저 수준의 계층 분할을 잘하는 것이 중요하다.또 한 클래스가 필요이상으로 많이 생기는 경우에는 클래스를 일부 축약하여 만드는 것도 가능하다.

참고