클린아키텍처에 대해 발표해 주세요

클린아키텍처는 프로젝트를 Presentation, Domain, Data계층으로 분리하는 아키텍처입니다.

Data계층은 앱 외부와 직접적으로 소통하는 계층으로 네트워크 요청 및 로컬저장소를 사용합니다.

Domain계층은 어플리케이션의 핵심적인 비즈니스 로직을 보유한 계층으로 외부 변동사항에 의존하지 않는 계층입니다.

여기서 외부 변동사항이란, 어떤 로컬 저장소를 사용할 것인지, 어떤 플랫폼으로 데이터를 시각화 할 것인지 같은 세부사항을 의미합니다.

Presentation계층은 유저와 직접적으로 상호작용하는 계층입니다.

계층을 분리하는 이유?

관심사를 분리하기 위해서 입니다. 각 계층은 명확한 역할을 가지기 때문에 코드가 이해하기 쉽고 유지보수가 용이해집니다.