실시간 데이터 처리 Flux & SSE
Flux와 SSE 개념으로 이해하기
Flux란
콘텐츠의 실시간 배포시스템 구축을 위해 등장한 Flux는 클라이언트와 서버 사이의 연결을 지속적으로 유지하게 만들어주는 기술이다. 데이터를 한번에 보내는 것이 아닌 여러번에 나누어 보내는 것으로 연결선(Stream)을 유지할 수 있다.
SSE
SSE는 Server Sent Event의 약어로 서버의 데이터를 실시간으로, 지속적으로 Streaming 하는 프로토콜이다. 데이터를 한번에 보내는 것이 아닌 여러번에 나누어 보내는 것으로 연결선(Stream)을 유지할 수 있다.
Flux와 SSE 그림으로 이해하기
http 요청은 응답한 후에 연결선이 끊기기(Stateless) 때문에 클라이언트가 GET 요청한 후에 다른 클라이언트에 의해 데이터가 POST 되면 데이터를 동기화할 수 없다는 문제가 생긴다
여기서 Flux 기술을 사용하여 컨트롤러에 데이터를 한번에 보내는 것이 아닌 여러번에 나누어서 보낸다. 그렇게 하면 클라이언트가 새로운 POST해도 연결이 유지되기 때문에 새로운 데이터를 컨트롤러에 전송할 수 있다.
하지만 여전히 http 요청은 응답이 끝나면 클라이언트와의 연결은 끊기기 때문에 데이터를 보낼 수는 없다. 여기서 클라이언트에게 응답을 할 때 SSE 프로토콜로 하면 클라이언트에게도 데이터를 한번에 보내는 것이 아니라 여러번에 나누어서 보낼 수 있게된다.
이렇게 Flux와 SSE 프로토콜을 활용하면 클라이언트에게 실시간 데이터를 전송할 수 있게된다.
MQ란
MQ는 Message Queue의 약어로 서비스와 클라이언트 사이에서 데이터를 교환해주는 역활을 한다. IBM MQ, Apache ActiveMQ, Rabbit MQ, Kafka 등 다양한 솔루션이 있다. MQ 자료 구조는 위 그림과 같이 양방향으로 입구가 있어 넣은 순서대로 데이터를 꺼낼 수 있다는 장점이 있다. Flux와 SSE 프로토콜과 함께 사용함으로써 실시간 데이터 스트리밍을 할 수 있게 한다.