개발

Kafka를 이용해 '실시간' 데이터 처리가 가능한가?

오렌지색 귤 2022. 12. 11. 20:24
반응형

궁금증

 

IT 관련 글을 보다보면 '실시간 데이터 처리' 라는 단어를 자주 맞이하게 됩니다.

 

MMORPG나 MO FPG등 실시간성이 중요시되는 게임 업계에서는 소켓 서버를 구축하여 이를 가능케합니다.

 

TCP/IP, UDP/IP의 소켓을 직접 다루거나, 그것을 직접 다루는 엔진을 통해 OS의 기능을 직접 다루게 됩니다.

 

반면, 웹 서버에서는 모든 요청을 웹 리퀘스트로 받으며, 별도로 커넥션을 맺고 끊는 방식이라 성능이 상대적으로 느릴 수 밖에 없습니다.

 

그렇기에 높은 성능을 가진 것처럼, 실시간으로 보이는 처리를 위해 각종 미들웨어를 사용합니다.

 

그리고 Kafka는 ActiveMQ, RabbitMQ와 함께 대표적인 메시지 지향 미들웨어 중 하나입니다.

 

 

 

그럼 질문에 대한 대답이 끝나게 되었군요.

 

웹 서버에서 Kafka를 사용한다 한들 실시간 데이터 처리는 불가능하다.

 

그런데 구글링을 해보면 Kafka와 실시간이라는 용어를 함께 사용하는 개발자분들이 꽤나 있으시고, 몇몇 기업은 실시간으로 데이터가 처리된다고 홍보하기도 합니다.

 

'준실시간'이 아니라 '실시간'이 실제로 가능한 걸까요?

 

 

해결

 

위의 질문에 대한 해답을 제공해주는 아티클을 찾을 수 있었습니다.

 

 

Apache Kafka is NOT Hard Real Time BUT Used Everywhere in Automotive and Industrial IoT - Kai Waehner

Blog about architectures, best practices and use cases for data streaming, analytics, hybrid cloud infrastructure, internet of things, crypto, and more

www.kai-waehner.de

 

요약하자면 "Apache Kafka를 쓴다고 해서 절대 Hard Real Time은 불가능하지만, 실시간성을 요구하는 자동화 및 IoT 산업 전반에 사용된다"는 내용입니다.

 

필자는 실시간의 기준 자체를 세가지, 즉 Hard, Soft, Near Real Time으로 나누어서 설명합니다.

 

그리고 정의는 아래와 같이 내립니다.

 

  • Real-time : 그냥 마케팅 용어다. Zero latency & Zero Spikes가 요구된다.
  • Hard real-time : 기준 Deadline 이후에 응답이 오면 모든 시스템이 fail하는 환경이다. 지연이나 spikes는 허용되지 않는다.
  • Soft real-time : Deadline를 최대한 맞추기 위해 최적화하는 것이 목표인 시스템 환경이다.
  • Near real-time : 자동화 데이터 처리, 이벤트의 네트워크 전송 및 후처리 등을 통해 지연이 발생하는 환경이다. microseconds에서 수일까지 지연이 발생하기도 한다.

 

그리고 Kafka는 세번째인 Soft real-time에 해당하는 시스템을 구축하도록 도와주는 미들웨어라고 정의합니다.

 

 

한줄 요약

 

'실시간'은 마케팅 용어일 뿐, 실시간에 준하는 시스템을 만들기 위해서는 Kafka를 도입하면 된다.

\
반응형