[kotlin] 코틀린(Kotlin) Flow를 활용한 데이터 스트리밍

코틀린에서 Flow는 비동기로 데이터 스트림을 처리하기 위한 라이브러리입니다. Flow를 사용하면 데이터를 연속적으로 처리하고, 비동기적으로 반환할 수 있습니다. 이 글에서는 Flow를 사용하여 데이터 스트리밍을 구현하는 방법에 대해 알아보겠습니다.

목차


Flow란?

Flow는 코틀린 표준 라이브러리의 일부로, 비동기적인 데이터 스트림을 처리하기 위한 기능을 제공합니다. 이를 통해 데이터를 한 개씩 또는 여러 개씩 처리하고, 연속적으로 반환할 수 있습니다.

Flow 사용하기

Flow를 사용하기 위해서는 kotlinx-coroutines-core 라이브러리를 의존성에 추가해야 합니다.

implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2"

Flow를 생성하는 가장 간단한 방법은 flow 빌더 함수를 통해 데이터 스트림을 정의하는 것입니다.

import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.delay

fun simpleFlow() = flow {
    for (i in 1..3) {
        delay(1000)
        emit(i)
    }
}

위 예제에서는 1부터 3까지의 값을 1초씩 지연시키며 Flow로 emit하는 간단한 데이터 스트림이 정의되어 있습니다.

Flow 연산자

Flow는 연산자를 통해 데이터를 변환하고 조작할 수 있는 다양한 기능을 제공합니다.

가장 많이 사용되는 연산자 중 일부를 살펴보면 다음과 같습니다.

Flow 예제

아래 예제는 Flow를 사용하여 1부터 5까지의 값을 1초 간격으로 출력하는 간단한 코드입니다.

import kotlinx.coroutines.flow.*
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    simpleFlow()
        .onEach { value -> println(value) }
        .collect()
}

fun simpleFlow() = flow {
    for (i in 1..5) {
        delay(1000)
        emit(i)
    }
}

위 예제를 실행하면 1부터 5까지의 값이 1초 간격으로 출력됩니다.

Flow를 통해 데이터 스트리밍을 처리하는 방법에 대해 간단히 알아보았습니다. Flow를 활용하여 비동기 데이터 처리를 보다 유연하고 효율적으로 구현할 수 있습니다.


이 글은 Kotlin 공식 문서Coroutine Flow Guide를 참고하여 작성되었습니다.