Language/kotlin(2)
-
[Kotlin] 코루틴으로 외부 API 병렬 호출 (Dispatchers.IO+MDCContext)
이번 글에서는 코루틴을 활용해서 API를 병렬로 호출함으로써 스레드를 절약해 성능을 개선하고, 코루틴을 사용함에 따른 로그 개선 필요성을 MDCContext로 해결한 과정에 대해서 공유 하려고 합니다. 왜 코루틴으로 외부 API를 병렬 호출하면 성능이 개선되는가? 외부 API를 호출하는 방식을 기존의 전통적인 방식 (Spring MVC의 동기 방식)과 코루틴을 활용해서 병렬로 호출하는 방식의 차이는 크게 두 가지 개선점을 갖습니다. 1. 하드웨어 자원 효율 극대화 (스레드 절약) 전통적인 방식에서는 API 3개를 호출하면, 호출자가 결과를 받을 때까지 스레드는 아무것도 못하고 기다려야하는데 이를 "Blocking"이라고 합니다. 기존 (Thread-per-request): 100개의 요청이 오면 10..
2026.04.22 -
코루틴(Coroutine)이란?
코루틴은 비동기 프로그래밍을 위한 (1) 경량 스레드 개념으로 일반적인 함수와는 달리 (2)중간에 실행을 멈췄다가 다시 시작할 수 있는 함수를 의미합니다. chat gpt를 통해 '코루틴에 대해 설명해 줘'라는 질문을 작성하면 얻을 수 있는 답입니다. 저는 해당 답변에서 두 가지에 대한 추가 질문을 했습니다. 경량 스레드란?중간에 실행을 멈췄다가 다시 시작할 수 있는 함수의 동작 방식은?먼저 경량 스레드는 (1)운영체제 수준의 스레드가 아니라, 애플리케이션 또는 (2) 런타임 수준에서 실행되는 단위를 의미합니다. 간단한 코드를 통해서 일반적인 멀티 스레드 방식과 경량 스레드 방식(코루틴 사용)의 차이를 보겠습니다. 먼저 일반적인 멀티 스레드 방식에서는 아래 코드를 실행하면 Thread {... }. ..
2025.05.15