[미디어] 국내 최초 안드로이드 GDE가 추천하는 코틀린 코루틴
국내 최초 안드로이드 GDE가 추천하는 코틀린 코루틴
국내 은행 앱 1위 카카오뱅크에서 코틀린 코루틴 리팩토링을 진행한 김용욱에게 코루틴의 개념부터 내부구조까지 배워보세요
· 우리나라 최초 GDE (Google Developer Expert)
· 전) 카카오뱅크 / Android Core팀 개발자
· 전) Realm (미국/리모트) / Java Developer
· 전) 필링선데이 CTO
· 전) 레이지비 CTO
안녕하세요, 안드로이드 개발자 김용욱입니다.저는 10년 전에 안드로이드 개발자 모임인 GDG(Google Developer Group) Korea Android를 만들었고, 그 이후에 최초의 안드로이드 GDE(Google Developer Expert)로써 2년간 활동했습니다.
![안드로이드 개발자 김용욱](https://storage.googleapis.com/static.fastcampus.co.kr/prod/uploads/2022-04-28T10:00:08Z/2022-04-28T10:00:08Z-704/sc7.png)
안드로이드에 관심이 많아서 안드로이드 커리어를 쌓아나가고 있었고요. 글로벌 모바일 데이터베이스 회사인 Realm에서 일을 한 이후에 카카오뱅크에서 여러 프로젝트를 수행하였습니다.
이 인터뷰를 통해 현업에서의 코루틴 트렌드와 우리가 공부해 볼 가치가 있는 이유에 대해서 이야기하려고 합니다.
"현업에서 느끼는 코루틴의 중요성"
현업, 현직자들 사이에서는 코루틴으로 다 건너가는 단계예요. 코루틴을 안 쓰는 것 자체가 트렌드에 뒤처지는 느낌이 있긴 했죠. 사실 이전까지는 아예 안 쓰는 사람도 분명히 있었지만, 작년(2021)부터는 코루틴을 쓰고 있지 않더라도 써야 한다는 생각 자체는 공유가 되기 시작했어요. 아마 모바일 앱 개발자라면 한 번쯤 다 생각해 봤을 거예요. 몇 년 뒤에는 지금보다 더 많은 기업에서 코루틴을 100% 사용하고 플로우를 적용할 것이라고 생각해요.
"현업이 아닌 개발자 취준생들이 느끼는 코루틴"
현업에서는 다들 코루틴으로 건너가는 중인 반면에 취준생들 중 (코루틴을 사용하는 기업에 지원하는) 지원자가 적은 것 같아요. 현업의 트렌드를 체감하지 못해서 그런 것 일 수도 있고, 지금이 과도기이기 때문에 자신이 지원할 회사가 코루틴을 도입하지 않고 있거나 도입하기 전이라 공부하는 사람이 많이 없을 수도 있을 것 같아요. 또 배울 수 있는 환경 조성이 아직 안 된 이유도 있겠죠.
"기존 라이브러리의 단점과 코루틴의 장점 (1)"
![안드로이드 개발자 김용욱](https://storage.googleapis.com/static.fastcampus.co.kr/prod/uploads/2022-04-28T10:11:13Z/2022-04-28T10:11:13Z-704/9.png)
안드로이드에서는 RxJava를 제일 많이 쓰는 편이에요. RxJava는 모든 것을 다 스트리밍으로 하려는 방식인데, 상대적으로 어렵고 수정할 때 유지 보수가 힘들다는 단점이 있어요.
예를 들어 4,5년 차 일해도 RxJava의 복잡한 체이닝 구조 때문에 RxJava 코드를 정확하게 예측하지 못하는 경우가 있어요. 남이 짠 코드, 내가 짠 코드마저 다시 한번 더 생각해야 하죠. 순서대로 짰던 프로그램을 퀴즈처럼 한 느낌이라고 생각하시면 됩니다.
반면에 코루틴은 순차적인 코드 작성이 가능해요. Rxjava는 굳이 스트림이 필요하지 않은 경우에도 스트림을 가져오지만, 코루틴은 한 번 가져와서 들여오면 끝이죠. 그리고 코루틴은 복잡한 동시성과 병렬성을 보다 쉽게 시작할 수 있어요.
"코루틴의 장점 (2) : 콜백 헬 (Callback Hell) 극복 가능"
![안드로이드 개발자 김용욱](https://storage.googleapis.com/static.fastcampus.co.kr/prod/uploads/2022-04-28T10:14:00Z/2022-04-28T10:14:00Z-704/아도겐.png)
최초로 비동기에 대해 관심을 갖게 되면 코드를 콜백으로 짜게 되는 경우가 많이 있어요.
콜백을 쓰게 되는 경우에는 성공 콜백과 실패 콜백이 있게 되거든요. 성공 콜백에 또 다른 호출을 넣고 거기에 또 콜백을 다는 형태로 되어 있고요. 그렇게 되면 성공 콜백에도 줄줄이 달리고 실패 콜백에도 뭔가 달려서 되게 복잡한 형태를 가지게 됩니다. 점점 깊게 들어가게 되면 사람들이 콜백 헬 (Callback Hell) 이라고 부르는 구조가 되거든요. 유지보수가 되게 어렵게 되죠.
반대로 코루틴 같은 경우에는 콜백 구조 대신에 순차적인 프로그래밍을 할 수 있습니다. 실패가 발생을 해서 실패 처리를 해야 할 경우, 모든 예외 처리를 한 번에 할 수 있는 CEH (Coroutines Exception Handler)라는 개념이 있습니다. 이걸 한번 세팅을 해두면 모든 예외를 이 CEH가 처리해주게 됩니다. 간결하게 프로그래밍 할 수가 있고 체계적으로 에러를 관리할 수가 있죠.
정리해서 말하자면,
· 직관적이고 순차적인 코드 작성 가능
· 에러 처리의 효율화
· Dispatcher를 통한 개발 협력성 증가
· 선택적 Stream 활용으로 효율성 증가
정도가 코루틴(Coroutines)의 큰 특징이라고 볼 수 있겠네요.
"강의 커리큘럼 소개"
카카오뱅크 재직 중에 면접자들을 대상으로 과제를 냈었는데요. 그 과제는 이미지 검색이 주제가 되는 과제였고요. 그 과제를 풀기 위해서 많은 사람들이 Coroutine을 썼습니다. 하지만 지원자들의 과제에서 warning이 너무 많았어요. 어떤 동작 자체가 안되는 사람들도 있었고, 로테이션을 했을 때 문제가 생긴다거나, 연타를 했을 대 문제가 생기는 경우들도 많았어요. 따라서 코틀린을 배우실 때에는, 이론 뿐만 아니라 프로젝트(실습)을 해보는 게 아주 중요하다고 생각해요.
그래서 이번에 제가 강의하는 코루틴 강의는 필수개념을 학습 및 실습하고 실전 프로젝트까지 진행하는 <3단계 커리큘럼>으로 구성해보았습니다.
실습에 대해 자세히 설명드리자면, 첫번째 과정은 먼저 Coroutine과 Channel을 이용해서 일반적인 애플리케이션을 만들어 보는 과정이고요. 두번째 과정은 Coroutine과 Flow를 통해서 간단한 안드로이드 애플리케이션을 만들어보는 실습을 하게 될 것입니다. 이 실습들을 통해서 자신감을 가지고 난 다음에 마지막으로 Coroutine의 이론적인 내부 구조를 알아보는 과정으로 진행됩니다.
"마지막 한마디"
RxJava 툴만 쓰고 있다면 불편함을 못 느낄 수 있어요. 왜냐하면 그 도구의 편리함도 있고 매우 익숙하기 때문이죠. 그런데 한 번이라도 Coroutine을 써보고 나면 ‘RxJava가 사실은 되게 불편한 도구였다’ 이렇게 생각하게 될 거예요.
제 후회 중에 하나는 2019년에 와서야 kotlin 컨퍼런스(KotlinConf)에 참여해서 Coroutine을 쓰게 된 것인데요.
여러분들이 더 이상 후회하지 않았으면 좋겠습니다. 지금이라도 빨리 Coroutine을 배워보세요!
지금 패캐머들이 읽고있는 BEST 아티클이 궁금하다면