본문 바로가기
안드로이드

[라인개발실록] 안드로이드 앱 빌드 시간 꿀팁 (feat. 질문 채택)

by 디지털노마더 2021. 4. 28.

최근 들어 IT회사의 개발자 수요가 급증하면서, 관련 유튜브 콘텐츠들도 많아지고 있다.

그중에서도 양질의 정보를 제공하는 개발자 관련 유튜브 채널 '라인개발실록'을 소개한다.

 

최신 업로드된 영상 중에, '안드로이드 개발 빌드 시간을 줄여주는 꿀팁'에 대한 영상이 있어 소개한다.

 

라인에서 안드로이드 현업 개발자 (차영호, 장혁재) 두 분이 나오셔서, 실무에서 사용 중인 기술과 꿀팁에 대해서 자세하게 설명해주신다.

 

사전에 채널 커뮤니티 게시판에 '1억 명이 쓰는 안드로이드 앱은 어떻게 만들어질까?' 주제에 대한 사전 질문을 모집하는 글을 확인하고, 실무 개발자로서 비동기 처리는 어떻게 진행하는지가 궁금했다.

 

그 이유는, 최근에 회사에서 Kotlin을 도입하여 신규 프로젝트를 진행하는 과정에서 RxJava3을 이용하여 API 기능을 개발하였다. 

비동기 처리방식에 대해 조금 더 자세히 알고 싶었다.

 

RxJava을 공부하면서 비슷한 라이브러리인 Coroutine(코루틴)의 존재에 대해서도 알게 되었다.

개인적으로는 RxJava가 비동기 처리 옵션이 세분화되어 있어서 상황에 맞게 커스터마이징 할 수 있어서 좋은 것 같았다.

 

 ► 유튜브 영상 인터뷰 내용

 

Q. 라인 안드로이드 앱 클린 빌드 시간은 어느 정도 걸리나요?

A. 보통 20~30분 정도 소요된다. 결코 짧은 시간이 아니다.

 

 

Q. 빌드 시간을 줄이려면 어떤 노력이 필요한가?

A. 일반적으로는 빌드 캐시를 이용한다.

 -> Android Build Cache Fix : Gradle 플러그인

 -> Remote Cache : Gradle에서 캐시 서버를 제공

 -> 빌드를 준비하는 시간도 병목지점을 찾아서 해결함 

     (빌드의 안정성이 중요하다. 모든 개발자가 공통된 빌드 환경을 제공받는 것이 업무에 효율적)

 

 

 

Q. 애플 최신 맥북(M1 탑재)에서 안드로이드 앱 빌드 성능은 어떠한가요?

A. 앱 빌드 시간은 일반 PC보다 2~3배 빠르다. 

 문제는 커맨드 라인에서 빌드하는 것은 빠른데, Android Studio는 아직 M1 대응이 안 되기 때문에 실제 안드로이드 개발에 사용하기에는 다소 무리가 있다.  단순히 앱 빌드용으로는 쓸만하다.

 

 

Q. Grade script는 kotlin DSL / Groovy 중 어느 것을 사용하시나요?

A. 라인에서는 두가지를 혼용해서 사용하고 있다. 

  일반적으로 개발자들은 kotlin DSL을 사용한다. 이유는 문법이 익숙하기 때문인 것으로 알려져 있다.

  개인적으로는 Groovy를 선호한다. 관련 레퍼런스도 많고 스택오버플로우에 예시가 많이 존재한다.

 

 

Q. 비동기 처리에 관한 프로세스 관리는 어떻게 하시나요?

A. 처음에는 RxJava1을 사용 쓰다가, 최신 버전 RxJava2로 넘어가는 작업을 많이 진행했습니다.

최근에는 Coroutine(코루틴)이 등장하면서 내부적으로는 RxJava2를 deprecated 시키고 신규 코드는 코루틴 or RxJava3로 코드를 생성하고 있다.

 

비동기에 대한 라이브러리나 기술은 계속 변화하고 있으므로, 트렌드의 변화에 따라 주기적으로 업데이트와 리팩토링 과정이 자연스럽게 일어난다. (개발자의 숙명☆)

 

비동기 기술이 업데이트가 되더라도, 서비스 내부적으로 사용 중인 API에서 RxJava1을 이용하고 있다면, 앱 단에서도 어쩔 수 없이 RxJava1을 이용할 수밖에 없는 상황이 있을 수 있다.

 

이를 개선하기 위해서는 주요 기능을 모듈화를 통해서, 점진적으로 개선할 수 있다.

라인 내부적으로 핫한 주제가 Modularization이다. 

 

라인앱은 굉장히 큰 서비스 애플리케이션이다. 그런데, 안드로이드 플랫폼 내에 많은 시스템과 기능이 포함되어 있다 보니 빌드 시간이 15~20분 정도 소요될 수밖에 없다. 기능별로 모듈을 분리한다면, 빌드 소요시간이 훨씬 줄어들 것이다.

 

 

Q. Jetpack Compose나 Hilt 라이브러리를 사용하나요?

A. 실제 Product 코드에서 알파/베타 버전의 라이브러리를 적용하기에는 다소 무리가 있다.

내부적으로 팀원 간 스터디를 통해서, 새로운 라이브러리가 추구하는 기술적인 방향에 대해서 검토하고 있다.

 

예를 들면, 기존에 Dagger라는 Dependency Injection(의존성 주입) 라이브러리가 있었다.

그럼에도 불구하고 왜 구글은 Hilt라는 것을 만들었는지에 대해서 이해할 필요가 있다.

 

 

본 영상을 정독하면서, 역시 개발자는 최신 기술을 도입하기 이전에 "이 기술이 왜 나왔고, 왜 쓰는지?"에 대해서 명확히 이해해야 한다는 사실을 느꼈다.

 

신입 개발자 연봉 5천만 원 시대를 살아가는 요즘이지만, 단기적인 연봉보다는 누구나 같이 일하고 싶은 개발자가 되면 연봉은 자연스럽게 따라오지 않을까하는 생각을 해본다.

 

마지막으로 "안드로이드 앱 빌드 시간 절약 꿀팁" 영상을 첨부합니다.

많은 안드로이드 앱 개발자분들에게 도움이 되는 시간이길 바랍니다.

 

 

댓글