Clean Architecture라는 말은 안드로이드에만 국한되는 것이 아니다. 소프트웨어 개발을 하고 있다면 이에 대해서 관심을 가져봤을 법하다고 생각한다.

필자는 지금까지 Clean Architecture를 들어봤지만, 실제로 무엇인지 제대로 살펴본 적이 없다. 그래서 이번에 간단한 프로젝트를 하게 되었는데 Clean Architecture를 왜 사용하는지와 사용했을 때의 장점을 알아보려고 한다.

아직, 제대로 된 공부를 하지 않았기에 '어떤 장점이 있어서 써야된다.'라고 말하지 못할 것 같다.

머릿속에 정리하고 개념을 이해한 뒤, 실제 적용하면서 느끼는 점이 있지 않을까 하면서 공부를 시작한다.

Clean Architecture

클린 아키텍처를 검색했을 때, 만날 수 있는 그림이다. 이 그림이 의미하는 바를 알아보자.

Robert C Martin 블로그의 글에서 대부분의 아키텍처는 세부적인 차이는 있어도 공통적인 목표는 계층을 분리하여 관심사의 분리를 하는 것이라고 말한다. 이런 아키텍처가 동작하기 위해서는 의존성 규칙을 지켜야 한다고 한다.

의존성 규칙은 모든 소스코드의 의존성은 반드시 외부에서 내부로, 고수준 정책을 향해야 한다고 말한다. 즉, 업무의 업무 로직을 담당하는 코드들이 DB 또는 Web 같이 구체적인 세부 사항에 의존하지 않아야 한다. 이를 통해 업무 로직(고수준 정책)은 세부 사항들(저수준 정책)의 변경에 영향을 받지 않도록 할 수 있다.

이번에는 Fernando 분이 설명하신 글을 살펴보자.

이와 같은 구조는 다음과 같은 측면에서 도움을 준다.

  • Problem Solving
  • Scalability(확장성)
  • Modularization(모듈화)
  • Testability(테스트 가능한 코드)
  • Independence of frameworks, UI and Databases.

클린 아키텍처는 크게 3개의 architecture로 나눌 수 있다.

참고