클린 아키텍처란 무엇일까?

계층형 아키텍처. 화살표의 방향은 의존성을 뜻함

계층형 아키텍처. 화살표의 방향은 의존성을 뜻함

클린코드(Clean Code)를 저술한 저자(Robert C. Martin)님이 제안한 시스템 아키텍처로 기존 계층형 아키텍처가 가지던 의존성에서 벗어나도록 하는 설계를 제공한다.

클린 아키텍처는 경계를 가장 중요하게 생각한다. 로버트 마틴님은 경계에 대해서 다음과 같이 설명한다.

<aside> 💡 소프트웨어 아키텍처는 선을 긋는 기술이며, 이러한 선을 경계(boundary)라고 부른다.

경계는 소프트웨어 요소를 서로 분리하고, 경계 한편에 있는 요소가 반대편에 있는 요소를 알지 못하도록 막는다

</aside>

아키텍처가 추구하는 내용은 다음 특징을 갖는다.

위 언급된 내용을 포함하면서, 계층별로 관심사를 분리하고 비즈니스 로직을 캡슐화하는 소프트웨어 설계 철학이다.

<aside> 💡 클린 아키텍처와 구글 권장 아키텍처는 다르다.

</aside>

클린 아키텍처 다이어그램

클린 아키텍처 다이어그램

위 다이어 그램은 크기가 다른 4개의 동심원으로 구성되어있다.

계층간 의존 규칙

화살표의 방향으 의존성을 뜻한다. 클릭 아키텍처의 의존성은 밖에서 안으로 향하고, 바깥 원은 안쪽 원에 영향을 미치지 않는다. 경계의 바깥으로 갈수록 덜 중요하고 세부적인 영역으로 표현되며, 안으로 갈수록 고수준(추상화된 개념)으로 표현된다.

예를들어 고수준이 운동을 한다 라면, 저수준은 집에서 팔벌려뛰기 운동을 한다 로 표현!

즉, 안쪽 원은 바깥의 정보를 몰라야한다.

클린 아키텍처, 안드로이드에선 어떻게 적용될까?

안드로이드 프로젝트에선 위 원칙을 지키기 위해, 계층별로 모듈을 분리하고 의존관계를 설정할 수 있다.