Kotlin Coroutine으로 비동기 시스템 구축, 성능 UP!
by DD
11개월 전
조회수 14
Spring Batch 기반 동기 처리의 확장성 한계를 극복하기 위해 Kotlin Coroutine 도입
코루틴을 활용하여 15개 이상의 외부 API를 비동기+동시성 방식으로 호출, 처리 시간 단축
JVM Thread 대비 코루틴의 자원 효율성 및 GC 부담 감소를 확인, 시스템 안정성 확보
코루틴의 핵심 원리: suspend와 Continuation
suspend 함수는 Continuation 객체를 활용하여 실행 상태를 저장하고, 필요 시 재개한다. 구체적으로, Continuation은 중단 시점의 변수, 실행 위치 등의 정보를 Heap에 저장한다. 따라서, JVM Stack에 의존하지 않고 비동기 처리를 가능하게 한다.
스레드 vs 코루틴: 성능 비교 및 트레이드오프
자바 Thread 기반의 동기 처리 방식은 잦은 Context Switching으로 인한 오버헤드가 발생한다. 반면, 코루틴은 Thread 수를 유지하면서도 여러 실행 단위를 처리하여 자원 효율성을 높인다. 따라서, I/O 작업이 많은 환경에서 성능 향상을 기대할 수 있다.
실전 적용 가이드: async-await와 Dispatchers
async-await는 비동기 작업의 결과를 기다리는 데 사용되며, Dispatchers는 코루틴을 실행할 스레드를 제어한다. 구체적으로, Dispatchers.IO는 I/O 작업에, Dispatchers.Default는 CPU bound 작업에 적합하다. 따라서, 작업 특성에 맞는 Dispatcher 선택이 중요하다.
댓글 0
첫 번째 댓글을 남겨보세요!