클린 아키텍처(Clean Architecture)란?

채상엽·2022년 10월 2일
0

Spring

목록 보기
15/21

클린 아키텍처(Clean Architecture)

먼저 아키텍처란 무엇일까? 위키피디아에서는 아래와 같이 정의하고 있다.

소프트웨어 구성요소들 사이에서 유기적 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙 - wikipedia

쉽게 말하자면 소프트웨어를 설계하는 방법이며 지켜야 하는 원칙을 의미한다.

클린 아키텍처의 구성 요소

  1. Entity
    원의 가장 안쪽에 위치 Entity는 그림에서 알 수 있듯이 규칙이 변경될 가능성이 가장 적고, 의존성이 가장 낮다.

  2. Use Cases
    유스케이스는 데이터를 알맞게 변경하고 가공하는 비즈니스 로직을 결정한다. 여기서 데이터는 상위의 Entity를 의미한다. 이는 Entity 데이터를 참조해서, 사용자의 요청에 맞게 가공하고 출력하는 역할을 한다는것을 의미한다.

  3. Adapter
    어댑터는 도메인과 인터페이스 사이의 번역기의 역할을 수행한다. 예를 들면 GUI로부터 입력 값을 받아 Use cases와 Entity에게 편리한 형태로 데이터 형식을 변환하여 보내주고, 반대로 Use cases와 Entity로부터 결과 값을 받아와 GUI에 표시해주는 역할을 한다

  4. Infrastructure
    모든 I/O components(UI, DB, Frameworks, Devices)가 있는 영역이다. 이는 변화 가능성이 매우 높기 때문에 domain과 확실하게 분리되어 있다.

이는 다음과 같은 특징을 갖는다.

  • 같은 상황과 이유로 변경되는 클래스들은 같은 컴포넌트로 묶인다.
  • Business rule은 stable한 컴포넌트로, 변경되기 쉬운 외부의 infrastructure layer를 알지 못한다.
  • 각 컴포넌트 간의 경계는 adapter 인터페이스를 통해 관리된다.
  • adapter는 Layer간의 데이터 형태를 다루기 편한 형태로 바꾸어주고, 더 stable한 내부 컴포넌트로 의존성을 갖도록 한다.

https://wlgusdn700.tistory.com/100
https://dataportal.kr/74
https://joonfluence.tistory.com/322#recentComments![](https://velog.velcdn.com/images/saint6839/post/f6d2b9b2-5c59-4c68-b6c7-1cf160486a63/image.png)

profile
프로게이머 연습생 출신 주니어 서버 개발자 채상엽입니다.

0개의 댓글