본문 바로가기
Android/Architecture

Clean Architecture 요약(입문용)_대출 앱을 통해 구조 파악해보기

by A Coder's Daydream 2025. 2. 27.
SMALL

1. Clean Architecture

본문의 내용은 유튜버 '리디의 삶은 개발'님의 "Clean Architecture 도대체 왜 쓰는거죠? | feat. MVC, MVVM, 클린아키텍쳐 | 주니어 개발자 꿀팁"을 참고했습니다.

 

 

1-1. 대출 앱 구조

대출 앱을 생각해보면, 크게 1) 대출하기 버튼, 2) 대출을 실행하는 비즈니스 로직, 3) 대출 정보를 저장할 공간으로 구성된다.

대출 앱 구조

 

 

위의 그림을 코드로 바꾸면 아래와 같이 정의할 수 있다.

- Presentation 계층에는 대출하기 버튼인 UI와 버튼의 action을 받고 Domain과의 번역을 담당하는 Controller가 있다.

- Domain 계층에는 '대출한다'라는 애플리케이션 비즈니스 룰을 담은 UseCase와 핵심 기능을 가진 엔터프라이즈 비즈니스 룰을 담은 Entity로 나눌 수 있다.

- Data 계층에는 Repository가 있다.

대출 앱의 계층 구조

 

 

 

1-2. 대출 앱 계층 동작 구조

- UI는 버튼 클릭 action을 Controller에게 전달한다.
- Controller에서는 대출 로직을 담은 UseCase를 실행한다.
- UseCase에서는 대출에 필요한 Entity들을 통해 최종 결정을 하고 대출이 실행된 후, Repository에 이를 반영한다.
- 필요에 따라, UseCase에서 변화된 값을 다시 Controller에 전달하고 이는 UI에 반영된다.

대출 앱 계층 동작 구조

 

 

 

1-3. Clean Architecture 구조

- 위의 구조를 쉽게 표현하면 다음 그림과 같다.

- 바깥의 원인  InfraStructure는 쉽게 변경이 가능한 영역, 내부에 있는 Domain은 쉽게 변하지 않는 영역이다.

- 의존성은 원 외부에서 원 내부로 흐른다. 이 때문에 Domain은 외부 영향을 받지 않고 외부 영향을 알 필요 또한 없다.

Clean Architecture 구조

 

 

- 위에서부터 이해하면서 따라왔다면, 아래의 Clean Architecture 구조는 훨씬 이해하기 쉬울 것이다.

Clean Architecture 구조

 

 

 

1-4. Clean Architecture 이점

'소프트웨어를 계층으로 나누어 관심사를 분리함으로써' 다음과 같은 이득을 취할 수 있다.

1. 소스 코드 전반을 쉽게 파악 가능하다.
2. 수정 사항에 대한 대응이 쉬워진다.
3. 다른 계층에 영향을 주지 않는다.
4. 테스트가 쉬워진다.
5. 높은 응집도, 낮은 결합도를 통해 생산성 또한 향상된다.