T
TechInsights
목록으로
BackEnd•2025. 07. 08.

Kotlin Coroutine으로 구현한 비동기 제휴 연동 시스템 구축기

SSG TECH
SSG TECH Engineering Team
Kotlin Coroutine으로 구현한 비동기 제휴 연동 시스템 구축기

핵심요약

원문 보기

SSG.COM은 Spring Batch 기반 동기 처리 방식의 제휴 연동 시스템 문제를 해결하기 위해 Kotlin Coroutine 기반 비동기 시스템을 구축했습니다. 이 시스템은 경량 스레드 모델을 활용하여 API 호출 처리 시간을 대폭 단축하고 리소스 효율성을 개선했습니다.

Kotlin Coroutine 기반 비동기 제휴 연동 시스템 구축

기존 시스템의 문제점 및 Coroutine 도입 배경

  • SSG.COM의 제휴 연동 시스템은 초기 Spring Batch 기반 동기 처리 방식으로 구현되어, 15개 이상의 외부 API를 순차 호출하여 처리 속도가 느리고 배치 서버 기동 시간이 발생했습니다.
  • 이러한 비효율성을 해결하기 위해 Kotlin Coroutine을 활용한 비동기 처리 시스템 도입을 추진했습니다.
  • 완전한 실시간 Kafka 기반 전환 대신, 배치 역할은 메시지 발행으로 축소하고 핵심 병목인 다건 API 호출을 Coroutine으로 비동기화하는 절충안을 채택했습니다.

Kotlin Coroutine의 동작 원리 및 주요 기능

  • Coroutine은 OS 스레드 대신 애플리케이션 레벨에서 관리되는 경량 스레드로, 하나의 스레드 위에서 여러 코루틴을 실행하여 자원 소모와 Context Switching 비용을 최소화합니다.
  • suspend 키워드는 함수가 실행을 중단(suspend)하고 재개(resume)할 수 있도록 하며, 컴파일 시 Continuation 객체가 생성되어 힙(Heap)에 상태를 저장하고 CPS(Continuation Passing Style) 방식으로 비동기 처리를 가능하게 합니다.
  • Dispatchers는 코루틴이 실행될 스레드를 제어하며, Dispatchers.Default는 CPU 바운드 작업에, Dispatchers.IO는 블로킹 I/O 작업에 최적화된 스레드 풀을 제공합니다.
  • coroutineScope는 여러 코루틴을 그룹화하여 **구조적 동시성(Structured Concurrency)**을 보장하며, async-await는 비동기적으로 값을 계산하고 그 결과를 기다리는 데 사용됩니다.

Coroutine 도입 후 시스템 개선 효과

  • 15개 이상의 외부 API 호출 처리 시간이 대폭 감소하여 대부분 0.5초 이내로 단축되었습니다.
  • 경량 스레드 모델인 코루틴을 통해 JVM Thread 대비 리소스 사용량이 절약되고 시스템 비용이 감소했으며, 안정적인 힙 메모리 사용량과 낮은 GC 빈도를 보입니다.
  • 기존 배치 서버를 제거하고 실시간성 API로 전환하여 서버 기동 시간 없이 CPU 사용량이 균등하게 분산되어 시스템 안정성과 효율성이 확보되었습니다.
  • 코루틴은 러닝 커브가 존재하지만, 복잡한 비동기 흐름을 간결하고 효율적으로 구현할 수 있는 강력한 도구임을 입증했습니다.
#BackEnd#Architecture
SSG TECH
SSG TECH

SSG TECH Engineering Team

기술 인사이트를 전달하는 공식 채널

You might also like

View all
토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기