목록webflux (3)
초보개발자 긍.응.성
지난 글에서는 MDC를 데이터를 리액티브 환경에서 사용할때 생기는 이슈와 해결할 수 있는 방법에 대하여 알아보았습니다.https://ckddn9496.tistory.com/179Reactor With MDC - SpringBoot 2그리고 Reactor도 이러한 이슈가 있다는것을 알고 있었는지, Reactor 3.5 버전부터 자동으로 ThreadLocal의 값을 Context를 통하여 전파할 수 있도록 Automatic Context Propagation을 제공하게 되었습니다.이번 글에서는 SpringBoot 3 버전 WebFlux에서 Automatic Context Propagation를 통해 MDC를 다루는 법에 대하여 알아보겠습니다.1. Reactor With MDC (springboot 3)Spr..
1. 개요 - MDC의 리액티브에서의 한계점MDC(Mapped Diagnositc Context)는 클라이언트 요청에 대한 유니크한 값을 로그 컨텍스트에 담아 어느 위치에서든 해당 데이터에 대한 로깅이 가능하도록 지원합니다.MDC는 내부적으로 ThreadLocal을 통하여 메타데이터를 관리하는데, 이는 SpringMVC와 같이 하나의 요청을 하나의 스레드에서 수행하는(thread-per-request) 구조에서 정상적으로 동작합니다.하지만 Event Loop 방식으로 동작하는 Spring WebFlux에서는 하나의 요청에 대하 여러 스레드에서 수행될 수 있기에, MDC를 통하여 로깅하는것은 불가능합니다.Spring MVC에서의 방식을 명령형 프로그래밍 방식, WebFlux의 방식을 리액티브 프로그래밍 방..
개인적으로 Spring WebFlux를 공부한 적은 있었지만, 실제 프로젝트에 적용해본 경험은 없었다. 그러던 중 사내 레거시로 서버를 재개발할 기회가 생겼고, 상황과 조건이 맞아 SpringMVC로 개발중이었던 프로젝트를 WebFlux로 전환하게 되었다. 또한, 부서 내에서 WebFlux 경험을 공유하는 자리를 가졌었는데 스스로 공부가 많이되었기에, 이렇게 블로그에도 남긴다. WebFlux란? WebFlux는 Spring 5에 새롭게 추가된 Reactive-stack의 웹 프레임워크이다. WebFlux는 클라이언트와 서버에서 리액티브 애플리케이션 개발을 위한 논블로킹 리액티브 스트림을 지원한다. WebFlux 논블로킹으로 동작하는 웹 스택의 필요성 때문에 등장하게 되었다. 기존 SpringMVC의 Se..