2024.07.03 - [Spring/대용량 트래픽] - Spring Webflux에서 WebClient 사용하기
이전 포스팅은 Spring Webflux에서 제공하는 WebClient를 사용해서 다른 서버와 네트워크 통신을 하는 API를 연습했다.
이번에는 Spring Webflux에서 다루는 RDB에 대해서 알아보겠다.
먼저 우리가 아는 Spring Webflux는 비동기 기반이다. 그런데 위 그림과 같은 상황을 생각해보자.
기껏 비동기로 API를 설계했더니, 결국 데이터베이스에서 데이터통신을 할때는 동기적으로 처리를 하게되면 전체적인 성능이 동기적인 방식과 다를바가 없어진다. 무슨말이냐고 하면은..
- 전체 흐름도에서 모든것이 비동기로 처리가 되어야 Webflux를 제대로 활용할수 있다는 뜻이다.
이런 문제를 해결하기 위해 등장한것이 R2DBC(Reactive Relational DataBase Connectivity)이다.
이것이 DB에 접근할때 비동기적 방식을 지원해준다.
여러 DB(H2,l MariaDB, MySQL, Oracle, PostgreSQL)에 맞는 오픈소스 라이브러리로 제공되고 있다. 이를 SPI(Service Provider Interface) 라고 하고, 해당 인터페이스를 준수하는 Driver를 제공한다.
참고로 이는 공식적인 것이 아니므로 https://start.spring.io/ 에서 의존성 추가 할수가 없고, 직접 SPI를 제공하는 곳을 찾아서 각자의 스프링 버전에 맞는 라이브러리를 추가해줘야한다.
기존 MVC와 비교하자면 이런 느낌으로 해석하면 된다. 무슨 말이냐면 MVC와 Webflux간의 전환이 쉽지 않기 때문에 이미 짜여진 코드라면은 전환하기 위해서 처음부터 새로 짜야한다는 말이다.
이를 사용하기 쉽게 스프링에서는 기능을 제공해준다.
자세히 알고싶으면 공식문서를 방문해서 읽어보기를 추천한다.
https://spring.io/projects/spring-data-r2dbc#overview
사용법을 쉽게 설명하자면 ReactiveCrudRepository를 상속받아서 사용한다. 그리고 이를 사용하기 위해서는 @EnableR2dbcRepositories 어노테이션을 사용해야 한다.
** 주의할 사항으로는 delete_By와 같이 변경되는 쿼리에 대해서는 @Modifying 어노테이션을 사용해야 함을 숙지해야한다.
이렇게 Spring Webflux의 R2DBC overview를 알아봤고, 다음 포스팅에서는 실제로 스프링에서 어떻게 사용하고 다뤄지는지 API를 통한 연습을 진행할것이다.
2024.07.06 - [Spring/대용량 트래픽] - Spring Webflux R2DBC 사용해보기
'Spring > 대용량 트래픽' 카테고리의 다른 글
Spring Webflux R2DBC 여러가지 기능들 (0) | 2024.07.07 |
---|---|
Spring Webflux R2DBC 사용해보기 (0) | 2024.07.06 |
Spring Webflux에서 WebClient 사용하기 (0) | 2024.07.03 |
Spring Webflux 사용해보기 (0) | 2024.05.29 |
Spring Webflux Reactor와 다양한 연산자 (0) | 2024.05.22 |