대부분의 AI는 실시간일 때 큰 효과를 발휘한다. 고객이 상품을 클릭했을 때 바로 추천하지 못하면 예측이 아니라 사후 분석이 되어버린다. 따라서 데이터는 생성되는 즉시 판단에 활용할 수 있어야 한다.
다만, 모든 업무가 실시간 처리가 필요한 것은 아니므로 일정 간격으로 처리해도 되는 영역은 배치 처리로 충분하다.
배치와 실시간은 서로 대립하는 개념이 아니다. 대부분의 시스템은 두 방식을 혼합하여 사용한다. 실시간 처리는 빠른 반응을, 배치 처리는 깊이 있는 분석을 담당한다.
배치 처리(Batch Processing)는 일정 간격으로 데이터를 모아 처리한다. 안정적이고 비용 효율적이지만 실시간 대응은 불가능하다. 회계 정산, 성과 분석, 장기 계획은 배치 처리가 더 적합하다.
실시간 처리(Real-time Processing)는 이벤트 발생 시 즉시 데이터를 수집하고 처리한다. 금융 거래, 실시간 추천, 이상 감지, 고객 응대는 실시간 처리가 필수일 때가 대부분이다. 이 방식은 인프라 비용이 크게 증가하므로 꼭 필요한 영역 위주로 적용한다.
실시간 처리는 고객의 행동을 이벤트로 감지하고, 카프카(Kafka) 같은 메시지 큐를 통해 데이터를 전달한다. 그런 다음, 이 데이터를 아파치 플링크(Apache Flink)나 스파크 스트리밍(Spark Streaming)이 처리하여 AI 모델을 호출한다.
생성된 결과는 API를 통해 시스템에 전달되어 사용자 화면에 반영된다. 이 흐름이 원활히 작동하려면 데이터 파이프라인도 실시간성을 고려하여 다음과 같이 설계되어야 한다.
- 데이터 수집 계층은 클릭, 로그 같은 실시간 이벤트를 수집하고 전달한다.
- 처리 계층은 데이터를 분류하고 판단한다.
- 출력 계층은 즉시 보여줄 데이터를 레디스(Redis) 같은 고속 캐시에 저장한다.
- 저장 계층은 분석할 데이터를 데이터 레이크나 데이터 웨어하우스에 저장한다.
- 연동 계층은 실시간 판단 결과를 사용자 인터페이스(User Interface)나 외부 시스템에 전달한다.
실시간 처리의 성과 측정은 처리량, 정확도, 가용성 등 다양한 기준으로 평가되며, 특히 응답 시간은 사용자 경험을 고려하여 설정하는데, 추천 시스템은 100ms 이내, 분석 시스템은 1초 이내, 복합 판단 시스템은 5초 이내와 같은 기준을 적용한다.