1 minute read

요청과 응답, 쿼리와 결과라는 데이터 처리 방식은 많은 현대의 데이터 시스템에서 가정하는 방식이다. 사용자가 무언가를 요청하거나 지시를 보내면 얼마 후 시스템이 답변을 준다. 데이터베이스, 캐시, 검색 인덱스, 웹 서버 및 기타 많은 시스템이 이러한 방식으로 작동한다.

이러한 온라인 시스템에서는 웹 브라우저가 페이지를 요청하든 서비스가 원격 API를 호출하든 일반적으로 요청이 인간 사용자에 의해 트리거되고 사용자가 응답을 기다린다고 가정한다. 사용자가 너무 오래 기다릴 필요가 없어야 하므로 이러한 시스템의 응답 시간이 주요 관심 사항이다.

웹과 HTTP/REST 기반 API의 증가로 인해 요청/응답 방식의 상호 작용이 매우 일반화되어 당연한 것으로 받아들이기 쉽다. 하지만 이 방식만이 시스템을 구축하는 유일한 방법은 아니며 다른 접근 방식에도 장점이 있다는 점을 기억해야 한다. 정리하자면, 다음의 세 가지 유형의 시스템이 있다.

서비스(온라인 시스템)

서비스는 클라이언트의 요청이나 지시가 도착할 때까지 기다린다. 요청이 수신되면 서비스는 가능한 한 빨리 처리하고 응답을 다시 보낸다. 응답 시간은 일반적으로 서비스 성능의 주요 척도이며, 가용성은 종종 매우 중요하다. 클라이언트가 서비스에 연결할 수 없는 경우 사용자에게 오류 메시지가 표시된다.

배치 처리 시스템(오프라인 시스템)

일괄 처리 시스템은 대량의 입력 데이터를 받아 작업을 실행하여 처리한 후 출력 데이터를 생성한다. 작업은 종종 몇 분에서 며칠까지 시간이 걸리므로 일반적으로 사용자가 작업이 완료될 때까지 기다리지 않는다. 대신 배치 작업은 하루에 한번과 같이 주기적으로 실행되도록 예약한다. 배치 작업의 주요 성능 지표는 처리량이다.

스트림 처리 시스템(실시간에 가까운 시스템)

스트림 처리는 온라인 처리와 오프라인/배치 처리의 중간 정도에 해당한다. 배치 처리 시스템과 마찬가지로 스트림 프로세서는 요청에 응답하는 대신 입력을 소비하고 출력을 생성한다. 그러나 스트림 작업은 이벤트가 발생한 직후에 작동하는 반면, 배치 작업은 고정된 입력 데이터 세트에서 작동한다. 이러한 차이로 인해 스트림 처리 시스템은 배치 시스템보다 지연 시간이 짧다.