읽는 흐름 차이로 선호를 푸는 결
둘의 핵심 차이를 저는 비동기를 어떻게 읽게 하느냐로 봅니다. RxJava는 데이터가 흐르는 파이프를 엮는 쪽이고, Coroutine은 비동기인데도 위에서 아래로 읽히게 쓰는 쪽입니다. 학부 프로젝트에서 같은 네트워크 호출 흐름을 둘로 짜 봤는데, RxJava는 연산자가 길어질수록 흐름을 눈으로 따라가기 어려웠고, Coroutine은 동기 코드처럼 읽혀 디버깅이 수월했습니다. 그래서 단순한 호출·취소 위주면 Coroutine을 선호합니다. 다만 대가가 있습니다.
여러 스트림을 실시간으로 합치고 변환하는 복잡한 데이터 흐름은 RxJava의 연산자가 더 깔끔합니다. 그래서 늘 Coroutine은 아닙니다. 흐름이 단순하고 읽힘이 중요하면 Coroutine, 스트림 합성이 핵심이면 RxJava 쪽으로 가릅니다. 지금도 비동기를 짤 땐 이게 호출 흐름인지 스트림 합성인지를 먼저 봅니다.