본문 바로가기

IT105

Reactor flatmap vs map 비교 Webflux에서 자주 사용하는 flatmap과 map을 비교해보려고 한다. flatmap public final Mono flatMap(Function 2020. 11. 28.
[번역] Concurrency in Spring WebFlux WebFlux에 대해 알아볼겸 아래 페이지를 번역해 보려고 한다. 개인적으로 이해하면서 쓰기 때문에 생략 및 의역이 많이 포함되어 있으므로 자세한 내용은 원문 참조 www.baeldung.com/spring-webflux-concurrency The Motivation for Reactive Programming 일반적인 웹 어플리케이션은 복잡한 부분들로 구성되어 있다. 특히 데이터베이스 호출과 같이 대부분의 Interaction은 Block되어 있다. 그러나 몇몇은 병렬적으로 작업을 처리하려 한다. 예를 들어, 2 명의 사용자가 웹 서버에 요청할 때 각기 다른 스레드로 핸들링된다. 멀티 코어 플랫폼에서는 이런 처리 방법이 전체 응답 시간 측면에서 효과가 있다. 또한 이렇게 처리 하는 방식은 thread.. 2020. 11. 28.
Reactive Web Application은 언제 subscribe를 할까? Webflux를 사용하다보면, 궁금함이 생긴다. 아래 Controller를 보면, @RestController class CustomerController { @Autowired private lateinit var customerService: CustomerService @GetMapping(value = ["/customer/{id}"]) fun getCustomer(@PathVariable id: Int): Mono { return customerService.getCustomer(id) } getCustomer의 리턴 타입이 Mono이다. 즉, 리턴으로 Reactor를 반환하는데 여기서 궁금증이 생긴다. 도대체 누가? 언제? subscribe를 하는 것일까? 일반적으로 Mono를 사용하게 되면,.. 2020. 11. 27.
Coroutine Async 코루틴에서 기본인 것 같지만 놓치는 부분이 있을 수도 있기에 정리해보려고 한다. Async async는 자주 사용해왔던 launch와 거의 흡사하다. 그러나 차이점이라면 launch는 job을 반환하는데에 비해 async는 Deferred라는 값을 반환한다. (아래 참조) fun CoroutineScope.async( context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, block: suspend CoroutineScope.() -> T ): Deferred (source) 그렇다면 Deferred가 무엇이길래 조금 다른 것일까? 엄밀히 말하면 Deferred도 job의 종류 중 하.. 2020. 11. 22.