들어가며
Kotlin Coroutines는 Kotlin을 위한 강력한 비동기 솔루션이다. 안드로이드 실무에서 한동안 높은 점유율을 자랑한 RxJava가 Coroutines로 대체 되었고, 새로 시작하는 안드로이드 프로젝트들은 대부분 Coroutines를 사용하고 있다.
안드로이드의 공식언어가 Kotlin인데, Kotlin의 비동기 솔루션으로 Coroutines가 채택되었으므로 이후의 동시성 프로그래밍은 Coroutines를 기반으로 만들어질 것임을 알 수 있다.
Coroutines의 강점
Coroutines가 Kotlin의 주요한 비동기 솔루션이 될 수 있던 이유는 Coroutines의 성능, 안정성 때문이다.
Coroutines는 기존 비동기 라이브러리들이 채택한 스레드와 스레드풀 기반 비동기 프로그래밍에서 벗어나 새로운 컨셉인 경량 스레드 기반 비동기 모델을 구축했다. 경량 스레드를 통해 기존 스레드 기반 프로그래밍에서 발생한 주요 문제점인 스레드 블로킹 문제를 해결했고, 스레드 블로킹으로 인해 성능에 문제가 생기던 것을 해결했다. 또한 Coroutines는 구조화된 동시성의 원칙을 통해 안정성을 증가시켰다. 스레드는 잘못 사용하게 되면 메모리가 누수되기 쉬운데, Coroutines를 사용하면 각 Coroutine들이 구조화되어 특정한 범위의 Coroutine이 살아있는 범위를 정할 수 있고 이를 잘 사용하면 메모리 누수를 방지할 수 있도록 설계되었다.
또한 Kotlin Coroutines는 Kotlin의 간결하고 가독성 좋은 코드 위에 만들어져 가독성도 좋다. 기존 스레드 기반 프로그래밍에서 다른 스레드 위에서 동작하게 하기 위해 복잡하게 코드를 만들어야 했던 것과 달리 Kotlin Coroutines를 사용하면 간결하게 비동기 코드를 만들 수 있다.
즉, Kotlin Coroutines는 성능과 안정성 그리고 가독성이 모두 뛰어난 비동기 솔루션이다. 이로 인해 Kotlin에서 지금도 중요한 위치를 차지하고 있지만, 오랜 기간 매우 중요한 위치를 차지하게 될 것임이 명백하다.
이 책의 목적
하지만, Kotlin Coroutines는 아직 자료가 많지 않다. 특히 Kotlin Coroutines의 경우 참고할 만한 문서는 공식 문서를 제외하고는 거의 없다. 또한 한국어로 된 자료는 거의 전무하다.
나는 안드로이드 개발자로써 문제를 느끼고 안드로이드 개발자들이 Coroutines에 더욱 편안하게 다가갈 수 있도록 하기 위해 책을 집필하게 되었다. 이 책을 통해 개발자들의 Kotlin Coroutines 진입 장벽을 낮추고자 한다. 더욱 많은 프로젝트들에서 Kotlin Coroutines를 사용할 수 있는 자양분이 되었으면 좋겠다.
이 책의 대상 독자
이 책의 대상 독자는 안드로이드 개발자이지만, Kotlin을 사용하고 Coroutines를 사용하는 개발자에게도 도움이 된다. 특히 프로세스의 시작과 끝은 메인 스레드에 종속되면서 멀티 스레드를 사용하는 안드로이드 애플리케이션은 다양한 다른 어플리케이션들(Spring 등)의 동작 방식들과 비슷하기 때문에 이 책에서 공부한 내용으로 다른 애플리케이션의 동시성 개발도 문제 없이 할 수 있다.
이 책에서 다루는 내용
이 책에서는 Coroutines의 기초부터 심화까지 안드로이드 개발자의 실무에 필요한 Coroutines에 대한 모든 내용을 다룬다.
1장에서는 스레드와 Coroutines의 관계에 대해 다룬다. 기존 스레드 기반 프로그래밍에서 코드가 동작하던 방식과 Coroutines에서 코드가 동작하는 방식을 확인한다.
2장에서는 안드로이드 환경을 설정한 후 간단한 Coroutine을 만들어본다.
3장에서는 Dispatcher에 대해 알아보고 Dispatcher와 Coroutine의 관계에 대해 알아본다.
4장에서는 Coroutine의 Job과 Deffered를 만드는 방법을 알아본다.
5장에서는 suspend fun에 대해 알아본다.
6장에서는 Coroutine의 취소에 대해 알아본다. - timeout 포함
7장에서는 예외 처리에 대해 알아본다.
8장에서는 구조화된 동시성에 대해 알아본다.
9장에서는 Coroutines를 사용한 리액티브 프로그래밍에 대해 알아본다. Flow, StateFlow, SharedFlow
이 책은 심플코드 블로그를 통해 무료로 배포되며, 지속적으로 연재되고 업데이트 될 것이다. 잘못된 부분이 있으면 언제든지 댓글을 통해 남겨 주시면 좋겠다.
출판 문의는 : @gmail.com 을 통해 부탁드린다.
'안드로이드를 위한 Coroutines' 카테고리의 다른 글
[안드로이드를 위한 Coroutines] 안드로이드의 멀티스레드 프로그래밍 : 기존의 Thread 기반 멀티스레드 프로그래밍 방식과 한계점 (0) | 2023.01.30 |
---|