reactor-core
최근 Spring MVC 프레임 워크에서 Reactor Core를 사용한 코드를 보게 되었다.
새로운 기술을 도입하는 것은 좋으나 원래의 목적에 맞게 잘 사용되고 있는지가 의문이었고
코드 리뷰시 어떤 목적과 의도로 사용된 것인지 확인하고자 하였으나
깊게 의논할 겨를 없이 코드는 머지가 되고 말았다.
코드를 작성한 당사자의 의도는
성능 향상을 위함이라고 했지만
AWS DynamoDB와 통신하기 위한 클라이언트 모듈은
Non-Blocking I/O를 지원하지 않는 라이브러리 였다.
결국 또 다른 Thread를 Blocking I/O를 위해서 할당하게 될것이고
Event Loop을 이용한 Non-blocking 을 지향하는 Reactive Programming 모델의 장점을 사용하지 못한채 원래 메소드를 실행하던 메인 Thread와 DDB와 통신하기 위한 또 다른 Thread간 데이터를 동기화 하는
오버헤드가 발생하기 때문에 성능 측면에서는 오히려 손실이 있고
Spring MVC 기반의 코드에서 Reactor Core를 사용함으로 코드 가독성을 떨어뜨린다는
생각이 들었다.
나의 이해가 짧을 수도 있기 때문에
사용된 코드가 어떻게 성능향상을 이루어 낼 수 있는지
혹은 그렇지 못하다면 그 이유는 무엇인지 파악하기 위해
Project Reactor의 핵심 모듈인 reactor-core에 대해서 파악 해보고자 한다.
여기에서 말하는 Project Reactor는 https://projectreactor.io/ 웹사이트를 따라가보면
지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.