HOME > android > architecture

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

By JS | 13 Oct 2019

항상 안드로이드 앱을 구현할 때 유지보수하기 쉽게 만드려면 어떻게 해야할까? 라는 생각을 많이 합니다. 핑계를 대자면 안드로이드 앱 개발자가 아니고, 취미로 앱을 만들기 때문에 앱 개발에 미숙하다는 것이고, 사실은 노력을 많이 안해서겠죠.

평소에 코드의 가독성을 향상시켜주고, Boilerplate 코드를 줄여주며, 유지보수가 쉽게 만들어주는 기술들을 배우려고 노력했습니다.

  • Dependency Injection(DI): Dagger2
  • Reactive Programming: RxJava
  • Functional Programming
  • Retrofit
  • MVC, MVP, MVVM 등의 패턴들
  • Android Architecture Component(AAC, Jectpack)
  • Kotlin (Java 보다 짧은 코드로 구현 및 편리한 기능 ex. korutin)

각각 어떻게 사용해야 하는지 알겠지만, 이런 것들을 잘 사용했는지? 확신이 안서더라구요. 구현만 힘들고 막상 코드를 고치려니 좋은건지 잘 모르겠어요. 또, 제가 팀단위로 앱을 개발하지 않기 때문에 팀끼리 일할 때 장점이 있는 구조인지, 단점이 많은 구조인지 그런 것도 느끼기 어려웠구요.

Clean architecture에 도움이 되는 자료

기억은 안나지만 1년전에 안드로이드 Architecture를 어떻게 구현해야 하는지 예제와 함께 설명이 되어있는 블로그 글을 보았었는데요. 그 예제를 토대로 저의 앱을 refactoting해봤는데 제가 그 기술을 습득하기 어려웠었습니다. 그 글쓴이는 엄격한 설계를 바탕으로 앱을 개발하는데, 저 같은 초보자가 처음부터 그렇게 시작하는 것이 맞는지 의문이 들기도 했습니다.

최근에 우연히 Fernando Cejas님의 블로그를 알게 되었고, Fernando님이 생각하는 Clean Architecture와 그에 대한 샘플 앱을 볼 수 있습니다.

Java로 만든 Sample app과 포스팅도 있습니다. Sample app(Java)Clean architecture에 대한 설명(Java)를 참고해주세요.

Clean architecture

Fernando의 Clean architecture는 다음처럼 Layer가 나뉘어져 있습니다. clean architecture

이런 구조는 다음과 같은 측면에서 도움을 줍니다.

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

Clean Architecture는 크게 3개의 architecture로 나눌 수 있습니다. clean architecture

블로그를 보시면 간단하게 왜 이걸 사용해야 하는지, 어떤 장점이 있는지 설명이 되어있습니다. Dagger, MVVM 등의 패턴을 모르신다면 어려울 수 있기 때문에, 사전에 공부하시고 보셔야 합니다. 사용되는 각각의 기술은 알고 있지만, 함께 적용하는 방법을 모르시는 분들이 보시면 좋을 것 같습니다.

공부해야 할 것은?

이 블로그는 어떻게 안드로이드 구조를 설계해야하는지, 접근 방법에 대해서 알려주고 있습니다. 샘플 앱을 분석해보면서 왜 이렇게 구현했는지, 이렇게 구현하면 어떤 부분에서 장점이 될 수 있는지를 생각해봐야 할 것 같습니다. 지금까지 본 Architecture 글 중에서 이 글이 저에게 가장 도움이 되었습니다. 코드가 충분히 이해되었다면, 제가 만든 앱을 다시 리팩토링해보는 시간을 가져야겠습니다.