클린 아키텍처는 소프트웨어 시스템을 관심사 분리 (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 등 서버와 통신하는데 필요한 모듈들이
모두 여기에 존재한다.
'프로젝트' 카테고리의 다른 글
Clean Architecture에 대한 고찰 [3] (1) | 2025.06.04 |
---|---|
Clean Architecture에 대한 고찰 [2] (0) | 2025.05.29 |
AnimatedFloatAsState로 애니메이션 구현하기[3] (0) | 2025.04.18 |
AnimatedFloatAsState로 애니메이션 구현하기[2] (0) | 2025.04.08 |
AnimatedFloatAsState로 애니메이션 구현하기[1] (0) | 2025.04.01 |