뜯어고치기 쉽게 앱 뜯어고치기

해당 포스트는 GDG Korea Android 2018 Lightning Talk에서 발표했던 내용을 조금 더 상세히 정리한 포스트입니다. 발표 직후 작성해 올리려 했는데 3개월이나 지나버렸네요….

매스프레소(콴다)

발표 슬라이드는 링크에서 확인하실 수 있습니다.

콴다 안드로이드 앱의 2017년은 변화의 시기였습니다. 대규모의 업데이트 두 번과 실패로 끝났지만 많은 것을 배우게 해준 대규모 코드 리팩토링 과정이 있었는데요. 콴다의 변화와 그 과정에서 얻은 지식과 노하우 중 일부를 공유하려 합니다.

2017년 3월. Code Refactoring (실패)

2017년 콴다의 첫 변화는 대규모의 Code Refactoring이었습니다. 그동안 쌓아왔던 기술 부채를 덜어냄과 동시에 Realm, Dagger, Rx 등의 최신 트렌드 기술들을 도입하여 간결하고 우아한 코드를 작성하고 앱 개발의 생산성을 높이는 것이 주된 목적이었습니다.

한달 가량의 시간을 소비했지만 출시 가능한 수준으로 앱을 만드는데 실패하였고 이후 개발 일정상 해당 리팩토링 시도는 실패로 결론 내리고 전부 롤백하였던 가슴 아픈 역사네요.

실패의 핵심 원인은 제 실력 부족이었고 그 외의 핵심적인 실패원인을 하나꼽자면 Realm 도입 때문이었습니다. Realm에서 DB Table로 사용되는 데이터 모델들은 RealmObject를 반드시 상속받아야 하기 때문이었습니다. 기존 콴다 앱 내 데이터 모델들은 Paginator Service를 편리하게 쓰기위해 자체적으로 구현한 RetrievableObject(=기술 부채의 산물)라는 객체를 상속받고 있었습니다. 따라서 이를 변환하는 과정에서 많은 시간이 소요되었습니다.

2017년 6월. OCR 베타 출시 & Material Design Guide적용

두번째 변화는 큰 규모의 기능 출시와 디자인 개선인데요. OCR을 통한 풀이 검색 기능이 추가되면서 탭이 추가되거나 주요 기능들이 전부 조금씩 변화하거나 추가되었습니다. 더불어 Material Design Guide를 반영하기위해 전체적인 디자인 개선이 있었습니다.

2017년 10월. 콴다 V2 출시

세번째 변화로는 일명 ‘콴다 V2’ 완전히 새롭게 만든 콴다입니다.

콴다를 완전히 새롭게 만들게 된 이유와 변화에 대한 내용는 Qanda Android Rebranding Story 포스팅에 자세히 작성해두었습니다.

3달 가량의 시간동안 콴다의 모든 화면과 기능을 처음부터 구현하는 작업은 돌이켜보면 정말 힘들었지만 의외로 즐거운 작업이었습니다.

콴다 앱을 새로 만들때의 가장 핵심 Mission은 뜯어고치기 쉬운 앱 만들기였습니다. ‘콴다는 기획도 디자인도 서버도 언제 또 어떻게 뜯어고칠지 모르니 이번에 새롭게 만들 콴다는 꼭 뜯어고치기 쉽도록 앱을 만들어놔야지.'라고 생각한 것 입니다. 조금 고급지게 표현하면 지속관리 용이한 앱 만들기라고 표현할 수 있는데 이러한 앱을 만들기 위해 재사용성, 의존성 제거, 모듈화 등의 키워드를 가장 많이 고민했습니다.

Android Clean Architecture

제가 가장 많이 참조한 레퍼런스는 github에 공개되어있는 Android10/Android-CleanArchitecture입니다.

Qanda Android Architecture

뜯어고치기 쉬운 앱 만들기에 가장 많은 도움이 되었던 건 Clean Architecture 도입이었습니다. 화면이 자주 바뀌고 새로운 기능 추가 혹은 로직 변경 등이 빈번하게 일어나는 콴다의 변화에 발빠르게 대응하기 위해서는 최대한 독립적인 모듈을 많이 만드는 것이 좋을 것이라 판단하였습니다. 특히 Clean Architecture는 순수한 Model들을 하나의 Domain 모듈로 빼내고, 네트워크 혹은 Cache등에서 정의된 Model의 데이터를 가져오는 로직 부분들은 Data 모듈로 빼내어 관리한다는 점에서 매우 흥미로웠습니다.

실제로 Clean Architecture를 적용하려하면서 초반에는 코드량이 늘고 Dagger를 통해 주입하고 모듈을 만드는 과정 등에서 어려움을 겪곤했지만, 오히려 화면적인 요소와 기능을 분리해 생각하며 의존성이 적은 앱을 개발 할 수 있는데 도움이 많이 되었습니다. 또한, 추후 디자인의 변화나 로직의 변경이 발생할때 빠르게 변화에 대처할 수 있었습니다.

Design Component Application

콴다 디자인 컴포넌트 앱에 관한 더 자세한 사항은 콴다 안드로이드 디자인 컴포넌트 포스팅에서 확인하실 수 있습니다.

기존 콴다 앱의 경우 2년 넘게 앱을 수정하면서 개발해오면서 개발자도, 디자이너도 바뀌었고 지정된 양식이 없었기 때문에 서로 다른 스타일의 개발, 디자인이 산재해 통일성을 해치고있었습니다. 화면마다 새롭게 디자인 컴포넌트를 제작하고, 아이콘마다 사이즈가 다르게 대충 만들어 넣는 등 통일성이 매우 떨어지고 관리하기 어렵도록 디자인을 하고 있었습니다.

사실 이 또한 실력부족이 가장 큰 문제의 원인이었던 것 같지만, 기능 개발하기도 시간이 부족하다는 이유로 미루고 있었습니다. 새롭게 앱을 만들기로 하면서, 디자이너와 이런 점에 대해 이야기를 하고 나름의 규칙을 세웠습니다.

이처럼 자주 사용되는 컴포넌트들에 대해 미리 정의함으로써 개발자와 디자이너사이에 암묵적인 규약을 만들었고, 서로 해당 컴포넌트들을 벗어나지 않도록 디자인을 하고 개발을 하게 되었습니다.

2017년 콴다는 (사실 훨씬 더 많은 시도와 삽질들이 존재합니다만…) Clean Architecture와 Design Component 도입을 통해 뜯어고치기 쉽게 앱을 뜯어 고쳤고, 그 기반위에서 2018년에는 더 빠르고 다양하게 변화하고 있습니다. 콴다는 오늘도 변화하고 있고, 내일도 변화할 예정입니다. 앞으로 더욱 멋지게 변화하고 성장하는 콴다를 지켜봐주세요!

기업문화 엿볼 때, 더팀스

로그인

/