Spring webflux


회의 결과 카카오 로그인과 네이버 로그인을 사용하여 회원 인증을 하기로 했다.
나의 담당은 카카오 로그인이고 아직 프론트 개발자분들과 회의를 하기 전이라 자세한건 변경될 수 있지만
access token으로 사용자 정보를 가져오는 kakao api를 사용하는걸 미리 구현해봤다.


Spring webflux

Spring MVC는 기본적으로 블로킹이고 동기방식을 사용한다. 비동기 처리 기능이 스프링 프레임워크3에서 추가되었지만
서블릿은 응답을 기다리는 동안 pool의 스레드들은 여전히 지연시킬 수 있기 때문에 전체 stack이 reactive 해야 하는 요구를 충족시킬 수 없다.
이러한 문제를 해결할 수 있도록 스프링 프레임워크5에 도입된 대안적인 모듈이 webflux이다.
웹 요청을 reactive하게 다루는데에 초점이 맞춰져있다.

기존의 서블릿 기반의 spring boot는 tomcat을 기반으로 동작한다.
반면 spring boot webflux는 여러가지 고를 수 있는데 디폴트로 netty를 사용한다.

위 내용은 webflux에 대해 알아보면서 메모한 것이고 다음 포스팅들을 참고했다.

라인 테크 블로그 - Reactive Streams와 놀자!
spring.io - webflux


구현

KakaoTalk_Photo_2020-10-15-11-58-28

kakao api 중 사용자 정보 요청 (/v2/user/me)을 사용했는데 response가 조금 복잡해보인다.
우선 error response는 static inner class로 작성했고, kakao_account는 따로 클래스를 만들어주고 inner class로 Profile을 정의했다.