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

By JS | Last updated: October 13, 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 글 중에서 이 글이 저에게 가장 도움이 되었습니다. 코드가 충분히 이해되었다면, 제가 만든 앱을 다시 리팩토링해보는 시간을 가져야겠습니다.

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha