R2DBC
1 R2DBC
The Reactive Relational Database Connectivity (R2DBC) project brings reactive programming APIs to relational databases.
1.1 리액티브 프로그래밍
- 리액티브 프로그래밍을 사용하려면 모든 과정이 리액티브여야 한다
- 웹 컨트롤러를 리액티브 방식으로 동작하게 만들고 서비스 계층도 리액티브 방식으로 동작하게 만들었는데 블로킹 방식으로 연결되는 데이터베이스를 호출하면 리액티브는 무너진다
- 리액터 기반 애플리케이션은 많은 수의 스레드를 가지고 있지 않으므로 데이터베이스 호출 후 블로킹되는 스레드가 많아지면 스레드가 모두 고갈돼서 결국 전체 애플리케이션이 데이터베이스로부터 결과를 기다리면서 아무런 일도 할 수 없는 상태가 된다
- 따라서 리액티브 프로그래밍에서 데이터베이스와의 물리적인 연결과 상호작용 과정에 비동기 논블로킹 개념을 적용할 수 있는 데이터베이스 드라이버가 필요한데 그것이 바로 R2DBC다