brunch

매거진 책리뷰

You can make anything
by writing

C.S.Lewis

by Razelo May 11. 2024

[책리뷰] 코틀린 코루틴의 정석

코루틴을 사용한 업무에 투입된다면 가장 먼저 구매해야할 책

최근 업무에 코틀린을 사용하면서 코루틴을 사용해볼 일이 생겼다. 

기존 코드의 순차로직에서 각 작업을 코루틴으로 쪼개고 성능 개선을 꾀하고자 했다. 이때 코루틴의 Dispatchers에서 각 작업의 성격에 맞게 IO와 Default를 적절히 나누어 사용했고 이를 통해 스레드풀 내에서 각 작업을 쪼개어 개별 코루틴이 실행하는 것을 확인해보면서 진행했다. 


작업을 하면서 코루틴에 대한 지식이 부족함을 느꼈다. 그래서 코루틴에 대한 책을 찾게 되었고 마침 출간된지 얼마되지 않은 이 책을 발견하게 되었다. 


코틀린 코루틴의 정석

조세영 저자님께서 에이콘 출판을 통해 2024년 2월 29일에 발매한 신간이다. 


재밌는 점은 코틀린 관련 책이 안드로이드로 구분되는 경우가 있어서인지 카테고리가 모바일 프로그래밍으로 되어있다. 특정 문고에서는 에이콘 - 모바일 프로그래밍 시리즈로 분류되어있기도 하다. 하지만 이 책은 분명 안드로이드 개발자분들 뿐만 아니라 백엔드 개발자분들에게도 아주 유용한 책이다. 예제가 둘 중 하나에 종속된 예제가 아니라 코틀린 언어로만 표현된 예제다. 분류랑 상관없는 코루틴에 대한 책이다. 그래서인지 '정석'이라는 표현이 어울린다.


찾아보니 저자님께서 코틀린 블로그로 유명한 분인 것 같았다. 이전에 나도 들어가봤던 블로그였다. 좋은 책을 만들어주셔서 감사합니다. 


책은 코루틴의 전반적인 내용에 대해 간단명료한 예제와 설명과 함께 살펴본다. 아주 쉬운 난이도의 예제고 뒤로 갈수록 어려워지거나 특정 개념을 알고있다고 가정하는 곳은 전혀 없다. 그래서인지 정말 친절한 책이다. 


처음부터 끝까지 설명과 예제 모두 비슷한 난이도를 유지한다. 특별하게 어렵거나 막히는 예제는 없다.

간혹 책 중에는 완급조절에 실패해서 후반부에 급격하게 어려워지는 책도 있다. 


프로그래밍을 해본 사람이라면 앉은 자리에서 편하게 읽을 수 있을 정도의 난이도다. 


어느 책이던 마찬가지겠지만 예제는 꼭 직접 작성해보길 권한다. 손이 한번이라도 움직였는지 아닌지는 큰 차이가 있다.  


퇴근 이후와 주말동안 책을 틈틈히 보면서 이주정도 걸린 것 같다. 


왜 코루틴이 필요한지 간략하게 설명하고 코루틴의 다양한 기능에 대해서 설명한다. 언어 수준에서 지원하는 것보다는 코틀린 라이브러리에서 제공하는 사용법에 대한 설명이 주를 이룬다. 그래서 바로 써먹을 수 있는 지식이 많다. 때문에 코루틴 혹은 동시성 프로그래밍에 대한 심도있는 이론서라기보다는 곧장 회사 업무에 코루틴을 써먹을때 보면 좋은 유용한 실용서라고 보면 된다. 실용서임에도 이론이 부족한 것도 아니다.


인상적인 점은 다양한 그림 설명이다. 코루틴 구조화에 대해 간단한 도식을 통해 설명하는데 아마 이걸 글로 설명했다면 머릿속에 이처럼 연상되긴 힘들었을거라고 생각한다. Dispatchers가 코루틴을 받아서 스레드로 던져주는 과정, a 코루틴과 b 코루틴간의 실행 순서에 대한 그림 등등 친절한 그림 설명이 많았다. 

그림이 있으면 쉬운 책이라고 착각하기 쉬운데 쉬운 책이 아니라 친절한 책이다. 똑같은 내용도 그림없이 설명하면 어려운 책이라고 착각할 수 있다. 


당장 쓸 수 있는 지식을 얻을 수 있는 이유는 예제의 다양함이라고 생각한다. 예를 들어 A라는 개념이 있다고 한다면, 이 책은 A 개념이 없으면 발생하는 문제에 대해서 설명하고 A를 사용하는 방법과 A와 비슷하지만 조금 다른 A' 라는 개념에 대해 설명한다. 그래서 예제가 좋은 책이다. 

개인적으로 예제는 가장 어렵고 멋있는 방법을 보여주기보다는 극도로 쉬운 예제를 통해 표현하고 싶은 내용만 짤막하게 표현하는 예제가 가장 좋은 예제라고 생각하는 편이다.


마지막 챕터에 코루틴 테스트에 대한 내용이 있다. 이 챕터를 보고 역시나 실용서라는걸 확신했다. 테스트 코드에 등장하는 가상시간에 대한 개념은 처음 본 내용이라 꽤나 흥미로웠다. 


가장 도움이 된 부분은 Dispatchers에 대한 설명과 Deferred에 대한 내용이었다. 실제 업무에서 많은 도움이 되었다. 


코루틴은 참 흥미로운 기술이라는 생각이 든다. 스레드에 붙이고 뗄 수 있도록 만들어 스레드보다 싸게 먹힐 수 있으며 새로운 개념적 단위를 통해 물리적 자원을 아낄 수 있게 되는 것이다. 

코루틴이라는 기술이 크게보면 쉬워보이지만 그렇다고 막 쓰게되면 꽤나 구덩이에 빠질 수 있는 기술이라고 느껴졌다. 내 경우에는 경량 스레드라는 생각 때문에 작업으로 나눌만한 구획이 있으면 일단 코루틴으로 구조화해버리곤 했는데 나중엔 이 점 때문에 코드 사이즈가 꽤나 증가했기 때문이다. 

필요한 곳에만 한정적으로 적용시키는 것이 좋다는 생각을 했다. 그럼에도 성능 개션에는 아주 탁월했다. 수십개의 작업을 처리하는 로직을 코루틴을 통해 구조화했고 덕분에 한 개의 작업을 처리하는 시간만큼 단축했다. 스스로 꽤나 만족했던 경험이다.  


근래 읽었던 책 중에 가장 재밌게 읽었고 실제로 눈에 띄는 도움을 준 책이다. 코루틴에 좀 더 알고 싶은 분이 계시다면 강력하게 추천한다. 깔끔하게 코루틴에 대해서만 이야기하는 친절하고 부담없는 좋은 책이다. 


책은 아래 링크에서 구매할 수 있다. 


좋은 책을 제공해주신 에이콘 출판사와 조세영 저자님께 감사합니다. 


재밌게 잘읽었습니다. 


https://product.kyobobook.co.kr/detail/S000212376884



매거진의 이전글 [책리뷰] 만들면서 배우는 러스트 프로그래밍
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari