반응형

flow 7

[Kotlin 공식 문서 정리] 22. 코루틴과 Flow 테스트하기

지금까지 코루틴과 Flow의 개념, 그리고 실무에서 어떻게 사용하는지를 살펴봤습니다.이제 남은 마지막 질문은 이것입니다. “이 코드를 어떻게 테스트해야 할까?” Kotlin 공식 문서에서는 코루틴 테스트를 위해 별도의 테스트 도구를 제공합니다. 이 글에서는 공식 문서 기준 테스트 방법을 실무에서 바로 쓸 수 있는 형태로 정리합니다.1. 왜 코루틴 테스트는 특별할까?코루틴 코드는 시간(delay), 스케줄러, Dispatcher에 강하게 의존합니다.그대로 테스트하면:테스트가 느려지고타이밍에 따라 flaky해지고실제 시간에 의존하게 됩니다이를 해결하기 위해 Kotlin은 가상 시간(virtual time) 기반의 테스트 도구를 제공합니다.2. runBlocking 대신 runTest과거에는 테스트에서 run..

Backend Core/Kotlin 2026.01.13

[Kotlin 공식 문서 정리] 21. callbackFlow와 channelFlow

이전 글에서는 Channel을 이용해 코루틴 간에 메시지를 전달하는 방식을 살펴봤습니다.그런데 실제 코드에서는 Channel을 직접 사용하는 경우보다, 콜백 기반 API를 Flow로 감싸야 하는 상황을 훨씬 더 자주 마주하게 됩니다.Kotlin 공식 문서에서는 이런 문제를 해결하기 위해 callbackFlow와 channelFlow를 제공합니다.1. 왜 callbackFlow가 필요할까?많은 라이브러리는 여전히 콜백 기반 API를 제공합니다.fun listen(callback: (Int) -> Unit) { callback(1) callback(2) callback(3)}이 함수는 callback을 세 번 호출합니다. 즉, 값 1, 2, 3은 이 함수가 직접 만들어낸 값입니다.이 값을 F..

Backend Core/Kotlin 2026.01.12

[Kotlin 공식 문서 정리] 18. Flow 실전 사용 패턴 (상태와 이벤트 분리)

이전 글에서는 Cold Flow와 Hot Flow의 차이, 그리고 StateFlow, SharedFlow의 개념을 살펴봤습니다.이제 자연스럽게 이런 질문이 남습니다. “그래서 실무에서는 이걸 어떻게 써야 하지?” 이 글에서는 Kotlin 공식 문서에서 소개한 개념을 바탕으로, 실무에서 가장 널리 쓰이는 상태(State)와 이벤트(Event)를 분리하는 패턴을 하나의 예제로 정리합니다.1. 실무에서 가장 흔한 문제UI나 API 응답을 Flow로 표현하다 보면 다음 두 종류의 데이터가 섞이기 쉽습니다.현재 화면이 어떤 상태인지한 번만 처리되어야 하는 이벤트이 둘을 같은 Flow로 처리하면 다음과 같은 문제가 발생합니다.화면 회전이나 재구독 시 이벤트가 다시 발생상태 변경과 이벤트 처리 로직이 뒤섞임colle..

Backend Core/Kotlin 2026.01.06

[Kotlin 공식 문서 정리] 17. Hot Flow와 StateFlow, SharedFlow

이전 글에서는 Flow 연산자와 예외 처리를 통해 값과 예외가 어떻게 흐르는지를 살펴봤습니다.지금까지 다룬 Flow에는 한 가지 중요한 공통점이 있었습니다.collect가 호출될 때마다 Flow가 새로 실행된다이런 Flow를 Kotlin 공식 문서에서는 Cold Flow라고 부릅니다.이번 글에서는 Cold Flow와 다른 개념인 Hot Flow를 소개하고, 그 대표 구현인 StateFlow와 SharedFlow를 공식 문서 기준으로 정리합니다.1. Cold Flow 다시 짚어보기Cold Flow의 가장 큰 특징은 collect 시점에 실행이 시작된다는 점입니다.val flow = flow { println("start") emit(1)}flow.collect { println(it) }flow..

Backend Core/Kotlin 2026.01.06

[Kotlin 공식 문서 정리] Flow에서 값은 어떻게 생기고 전달될까?

Flow를 공부하다 보면 자연스럽게 이런 질문이 생깁니다.“Flow에서 값은 무조건 emit으로만 생기는 걸까?”결론부터 말하면, 이 질문은 절반은 맞고, 절반은 틀립니다. 이 글에서는 Kotlin 공식 문서의 Flow 개념을 기준으로, 이 오해를 정확히 정리해봅니다.1. Flow에서 말하는 “값”이란 무엇인가?Flow에서 말하는 값은 collect까지 흘러가는 데이터를 의미합니다.flow { emit(1) emit(2)}.collect { value -> println(value)}여기서 collect가 받는 value는 Flow 관점에서의 “값”입니다.그리고 이 값은 방출(emit)된 값입니다.2. 그렇다면 값은 항상 emit으로만 만들어질까?여기서 중요한 구분이 하나 필요합니다.값을..

Backend Core/Kotlin 2026.01.06

[Kotlin 공식 문서 정리] 16. Flow 연산자와 예외 처리

[Kotlin 공식 문서 정리] 16. Flow 연산자와 예외 처리이전 글에서는 Flow가 무엇인지와 기본적인 생성·수집 방식을 살펴봤습니다.Flow를 실제로 사용하기 시작하면 “값을 어떻게 변환할 것인가”보다 더 중요한 질문이 생깁니다.예외는 어디서 발생하고, 어디서 잡아야 하는가?이 글에서는 Kotlin 공식 문서의 Flow operators, Exception handling을 기준으로, 이 질문에 답할 수 있도록 정리합니다.1. Flow는 위에서 아래로 읽는다Flow를 이해할 때 가장 중요한 기준은 단 하나입니다.값은 위에서 만들어지고, 아래로 흘러가며, collect에서 소비된다flow { emit(1) // (1) 값 생성}.map { it * 2 } //..

Backend Core/Kotlin 2026.01.06

[Kotlin 공식 문서 정리] 15. Flow 기본 개념

지금까지 코루틴을 통해 비동기 작업을 하나의 결과로 다루는 방법을 살펴봤습니다.하지만 실제 서비스에서는 하나의 값이 아니라 여러 값이 시간에 따라 도착하는 경우가 많습니다. 이때 사용하는 개념이 바로 Flow입니다.이 글에서는 Kotlin 공식 문서의 Asynchronous Flow를 기준으로, Flow가 무엇인지와 기본 사용법을 정리합니다.1. Flow란 무엇인가?Flow는 비동기적으로 여러 값을 순차적으로 방출하는 스트림입니다.suspend 함수가 “값 하나를 비동기로 반환”한다면, Flow는 “값 여러 개를 비동기로 흘려보낸다”라고 이해하면 됩니다.2. Sequence vs Flow8번 글에서 다뤘던 Sequence와 Flow는 개념적으로 닮아 있지만, 실행 환경이 다릅니다.구분SequenceFlo..

Backend Core/Kotlin 2026.01.06
반응형