WebFlux 알아보기

WebFlux???

  • Spring 5가 나오면서 추가된 request 비동기 처리 방식.
  • functional programming에 관심을 가지게되어 자연스럽게 Reactive programming에도 관심을 가지게되었고 Spring stack으로 먹고 살다보니 결국 WebFux에 왔다. WebFlux가 어떤 방식으로 동작하는 것이고 기존의 Servlet 방식보다 좋은 점은 무엇인지 공부할거다.
  • 그 기초 지식을 학습하기위해 찾아보면서 자료들을 정리한다.

공부하면서 본 것들

Blogs

Youtube

Github

  • AoJ: ADBA over JDBC : Oracle이 JavaOne에서 발표했던 New Asynchronous DB Connections에 대한 샘플 코드 - first commit이 2012년 부터. 처음시작때는 kotlin이 아니고 scala네 ㅋ

  • jasync sql : Kotlin!으로 작성된 Async Mysql driver. Kotlin 코드 샘플을 구경할겸. 겸사겸사. 실제 이걸로 작업을 안해봐서 동작이나 성능이 어떤지는 모름.

  • MiXiT : Spring Boot 2 + WebFlux + Kotlin 데모 사이트 코드!

  • Lite Rx API Hands-on : Reactor Java 연습용 코드 예제

  • Lite Reactor API and Reactor Kotlin Extensions Hands-on : Reactor Kotlin 연습용 코드 예제

stack overflow

stack overflow를 뒤져보면 내가 궁금해했던 것들이 많아서 이것들이 정답일지 아닌지는 모르지만 참고용.

  • Spring MVC (async) vs Spring WebFlux : 이것이 WebFlux 공부한다면 찾아보는 제일 첫번째 질문 ㅋ 뭐가 다른거야? 뭐가 좋은거야?

  • Is asynchronous jdbc call possible : 2011년에 질문한 자료. 현재 상황과는 다르게 절망적인 상황을 자체 라이브러리로 해결하겠다는 작성자의 이야기와 달려있는 댓글들을 보면 이 모든 것들이 신규 개념이 아닌 오래된 것들이 근래에 구체화되어 나오고 있다는 것이란 것을 다시 깨닫게함.

인간레퍼런스

  • WebFlux 뽐뿌를 넣어준 사람 : Thanks to 김기현

공부하면서 궁금해진 것들. (답을 찾으면 업데이트)

  • DB Connection 숫자는 어떻게 되는지? Event loop안에서 사용하는 Worker 별로 생기는 것인지 해당 Worker들도 DB Connection Pool로 한번 더 감싸진 것인지?

  • repository async로 인해서 request의 thread 점유 시간이 줄어든다면 서버 운용 측면에서 thread 자원을 아낄 수 있게 되어 서버 instance 숫자를 줄 일 수 있을 것 같은데, thread 자원을 아끼는 대신 추가로 cpu 사용률이 높아져서 scale out이 되지는 않을지?

  • 설명들을 보면 아직 aync rdb jdbc가 없다는데, 우린 적용하기 힘든건가?

    • async JDBC spec은 발표되었는데, 아직 지원되는 상용드라이버는 안보인다. 하지만 몇몇 github driver들이 찾아지긴함.