리액티브(Reactive)와 논리액티브(Non-Reactive)는 프로그래밍 방식이나 시스템 동작의 차이를 설명하는 개념입니다. 이를 쉽게 설명하자면 "데이터와 요청을 처리하는 방식의 차이"라고 볼 수 있어요.
✅ 리액티브(Reactive)란?
"이벤트(데이터)의 흐름에 따라 반응하며 비동기적으로 처리하는 방식"입니다.
- 비동기: 요청과 응답이 동시에 일어나지 않아도 기다리지 않고 다른 작업을 진행합니다.
- Non-Blocking: 처리 시간이 오래 걸리는 작업이 있어도 멈추지 않고 다른 작업을 처리합니다.
- 데이터 흐름 중심: 데이터나 이벤트가 들어오면 즉시 반응(React)해서 처리합니다.
📌 리액티브 방식 예시
콜센터를 떠올리면 쉬워요.
- 전화가 걸려오면 → 즉시 대기 중인 상담원이 전화를 받습니다.
- 상담원이 없으면? → 전화를 잠시 대기시킵니다.
- 상담원이 다시 비게 되면 대기 중인 전화를 순서대로 받습니다.
리액티브는 이렇게 "들어오는 이벤트에 반응하며 동시에 여러 작업"을 처리하는 방식이에요.
📌 리액티브 코드 예시 (JavaScript - 비동기)
console.log("1");
setTimeout(() => { // 비동기 작업: 2초 뒤 실행
console.log("2");
}, 2000);
console.log("3");
출력 순서:
1
3
2
setTimeout
은 비동기적으로 작동하므로 기다리지 않고 다음 코드(3
)를 실행합니다.- 이후 시간이 지나면 비로소
2
가 출력됩니다.
✅ 논리액티브(Non-Reactive)란?
"요청을 순차적으로 처리하며 결과를 기다리는 방식"입니다.
- 동기: 하나의 작업이 끝나야 다음 작업을 진행합니다.
- Blocking: 작업을 처리할 동안 다른 작업을 멈추고 기다립니다.
📌 논리액티브 방식 예시
식당에서 줄 서서 주문하기를 떠올리면 쉬워요.
- 손님이 줄을 서고 차례대로 주문을 합니다.
- 앞 사람이 주문을 끝낼 때까지 다음 사람은 기다려야 합니다.
- 주문이 끝나면 그 다음 손님이 주문을 시작합니다.
논리액티브는 이렇게 "하나의 작업이 끝나야만 다음 작업"을 처리하는 방식이에요.
📌 논리액티브 코드 예시 (Java - 동기)
System.out.println("1");
try {
Thread.sleep(2000); // 동기 작업: 2초 동안 기다림
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("2");
System.out.println("3");
출력 순서:
1
2
3
Thread.sleep
때문에 코드가 2초 동안 멈추고 그 이후에 다음 코드가 실행됩니다.- 이게 바로 Blocking입니다.
✅ 리액티브와 논리액티브 비교
구분 | 리액티브(Reactive) | 논리액티브(Non-Reactive) |
---|---|---|
작동 방식 | 비동기, Non-Blocking | 동기, Blocking |
동작 흐름 | 데이터의 흐름에 반응 | 순차적으로 하나씩 처리 |
성능 | 효율적, 많은 작업 동시 처리 가능 | 비효율적, 처리 속도가 느림 |
예시 | 콜센터(대기와 동시에 처리) | 식당 줄 서기(순서대로 처리) |
사용 사례 | 실시간 데이터, 대규모 이벤트 처리 | 단순하고 작은 규모의 작업 |
✅ 정리
리액티브
- 비동기적으로 데이터 흐름에 반응하며 여러 작업을 동시에 처리합니다.
- 예: 실시간 채팅, 이벤트 스트림, 대량 데이터 처리.
논리액티브
- 동기적으로 순차적으로 하나의 작업을 끝내고 다음 작업을 처리합니다.
- 예: 작은 규모의 요청, 단순한 데이터 처리.
리액티브는 현대의 대규모 시스템에서 필수적인 방식으로, Spring WebFlux, Node.js, RxJava와 같은 기술에서 많이 사용됩니다.
'Microservices Architecture' 카테고리의 다른 글
Correlation ID (0) | 2024.12.16 |
---|---|
/actuator/gateway/refresh의 refresh (0) | 2024.12.16 |
Spring Cloud Gateway (4) | 2024.12.16 |
서비스 게이트웨이(Service Gateway) (0) | 2024.12.16 |
Netflix Zuul (0) | 2024.12.16 |