프로젝트

Clean Architecture에 대한 고찰 [1]

roder 2025. 5. 23. 12:56

클린 아키텍처는 소프트웨어 시스템을 관심사 분리 (Separation of Concerns)

원칙에 따라 독립적이고 유지보수 가능하며 테스트하기

쉽게 구성하기 위한 설계 철학입니다.

로버트 C. 마틴 (Uncle Bob)이 제시한 이 아키텍처는

특정 프레임워크, 데이터베이스, UI에 종속되지 않는 시스템을 만드는 것을 목표로 합니다.

 

그렇단다...

어떤 프로젝트를 하던지 하도 클린 아키텍처란 키워드가 필수적으로 등장하고

글을 작성하고 있는 현 시점에서는 잘 모르겠으나,

한때 Clean Architecture가 굉장히 유행처럼 번지던 시절이 있었다. 

 

실제로 회사에서 개인 프로젝트로 클린 아키텍처를 적용하며

어떤 실수가 있었고, 적용하며 느낀 점을 공유하고자 한다.

 

 

 

# Presentation Layer에 대한 이해

 

view와 viewModel 등 클린 아키텍처를 알기

전부터 익숙한 Layer라 매우 친숙한 Layer이다.

 

# Domain Layer에 대한 이해

 

기존에는 Domain Layer에 대한 이해가 많이 부족하여 

구성하더라도 Presentation Layer와 Data Layer만을

이용하여 아키텍처를 구성했는데

 

여러 프로젝트를 진행하며 Domain Layer 안에 있는

UseCase, Entity의 코드와 Presentation과 Data 간의 상호작용을 보다보니

Domain 이런 것이구나.. 하고 알게 되었다.

 

어떤 Layer에도 의존성을 맺지 않고, 특정 Domain

즉 자주 바뀌지 않는 내용들이 들어있어야 할 Layer이다.

 

보통 유지보수를 하다보면 가장 많이 업데이트 되는 내용이 View와

API 수정 등인데 Domain Layer는 (물론 아예 안 바뀐다는 내용은 아니다..)
그에 반해 많이 수정되지 않는 Layer이기 때문에 Presentation과 Data에서

Domain Layer에 많은 의존성을 맺고 있다.

 

# Data Layer에 대한 이해

 

흔히 서버와 통신하는 Layer인데

Repository, API, Mapper 등 서버와 통신하는데 필요한 모듈들이

모두 여기에 존재한다.