ABOUT ME

-

  • Android) Clean Architecture 알아보기
    Android 2020. 12. 30. 20:10

    저희는 개발자로 성장해가면서 여러 가지 기술들을 배우고 잘 짜여진 구조로 프로젝트에 적용하려고 노력합니다.

    그 이유는 대표적으로 프로젝트의 유지보수를 쉽고 편하게 하기 위해서, 가독성, 성능을 높여주기 위해서라고 할 수 있습니다.

    하지만 막상 구조의 변화가 있을때 잘 대응할 수 있을까에 대한 고민과 제대로 이해하며 사용하고 있는지에 확신이 들지는 않았습니다.

     

    그래서 오늘은 잘짜여진 설계란 어떤 것인가와 어떤 이점이 있는지 알아보겠습니다.


    Clean Architecture

     

    클린 아키텍처는 모바일부터 백엔드까지 모든 소프트웨어에 일반적으로 필요한 내용을 담고 있습니다.

    각 계층을 어떻게 나누고 어떤 요소로 구성할 것인가에 대한 원칙들을 제시합니다.

    가운데로 갈 수록 높은 수준, 바깥으로 갈수록 낮은 수준의 컴포넌트로, 이에 대한 효율적인 분리로 효과적인 설계가 가능하다는 점을 설명하고 있습니다. 

     

    이런 구조는 아래와 같은 이점이 있습니다.

    • 문제 해결
    • 확장성
    • 모듈화
    • 테스트 가능한 코드
    • 프레임워크, UI, 데이터 베이스로 부터 독립

     

    4 Layers

     

    안드로이드에서 계층을 위와 같이 4개로 나눴습니다.

     

    1. Presentation : 사용자에게 보여지는 로직과 관련된 레이어

      -> UI 레벨에서의 처리를 의미하며, 안드로이드 의존성이 높습니다.
    2. Data : 네트워크를 포함한 데이터를 가져오는 레이어 

      -> Repository를 실제로 구현하는 것과 관련되어 있습니다.
           Data Source에 의해 데이터가 어디서 오는지를 결정해줍니다. (Local DB 혹은 Remote 서버 통신)
           여기서 의존성이 생기므로 안드로이드 의존성이 생길 수 있습니다.
    3. Domain : 사용자의 유스케이스로 분리되는 레이어

      -> 비즈니스 로직(기획적인 부분)과 관련되어 있습니다. 
           순수한 Java나 Kotlin 모듈, 유스케이스(1개 이상의 Repository를 받아 비즈니스 로직을 처리하는 부분),
           구현 없이 일련의 행동들만 나열한 Repository
    4. Entity : 사용자의 개념을 정의하는 레이어

      -> 순수한 Java나 Kotlin 모듈이며, 안드로이드와 의존성이 없습니다.
          안드로이드에서만 사용하는 것이 아니라고 생각하고 작성해야 합니다.
          모바일에서 백엔드 모두 같은 이름과 타입을 사용하는 Data class가 있습니다.
          데이터를 Parcelable 등으로 정의하는 행위는 삼가해야 합니다.

     

     

    이 4개 레이어 간의 의존성은 안쪽으로만 발생해야 합니다. 

     

    즉 Presentation 레이어는 Data 레이어를 알지만, Data 레이어는 Presentation 레이어를 몰라야 합니다.

    그래서 가장 하단부의 레이어일 수록 가장 의존성이 낮게 되어 Entitiy 레이어는 순수한 Java 혹은 Kotlin 모듈이 될 수 있습니다.

     

    결국 이러한 과정들은 좋은 코드를 작성하기 위함이 아닌가 싶습니다. 

     


    References

    Clean Architecture 2.

    안드로이드 - Clean Architecture 연습하기

     

    반응형

    댓글

Designed by Me.