Synchronous Programming vs Reactive Programming

2023-09-18

동기(주로 명령형 프로그래밍)에서는 각 요청마다 별도의 스레드를 할당(thread per request)하여 요청을 처리한다. 이 방법에서는 스레드 풀(Tomcat: 200 thread pool)이 모두 사용되고 있을 때와 같이 스레드가 차단되고 있을 때 요청을 처리하지 못 하여 작업이 쌓여 idle 상태가 된다. 이렇게 요청이 많은 서비스(예) 광고 서비스)에서는 idle 상태가 길게 유지되면 매우 비효율적이라고 볼 수 있다.

그래도 엄청 큰 규모(트래픽)가 아닌 이상 동기식이여도 상관없다.

이러한 많은 요청(높은 트래픽)을 서버에서 빠르게 응답하고 반응하기 위해 존재하는 프로그래밍 패러다임이 반응형 프로그래밍(Reactive Programming)이다.