[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는 연산자를 통해 데이터를 변환하고 조작할 수 있는 다양한 기능을 제공합니다.
가장 많이 사용되는 연산자 중 일부를 살펴보면 다음과 같습니다.
map
: 각 요소에 대해 지정된 함수를 적용하여 새로운 값을 만듭니다.filter
: 주어진 조건에 맞는 요소만을 선택합니다.reduce
: 모든 요소를 하나로 줄이는 연산을 수행합니다.
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를 참고하여 작성되었습니다.