CS

Batch and Stream Processing [CS]

PON_Z 2022. 12. 22. 17:52

- 배치 프로세싱(Batch Processing)이란 한정된 대량의 데이터정해진 시간 한번에 처리하는 것이다.

  주로 다음과 같은 상황에 많이 쓰인다.

(1) 데이터 처리가 실시간을 보장하지 않아도 될 때

(2) 데이터를 한번에 처리할 수 있을 때

(3) 무거운 처리를 할 때

ex) 매일 마다 웹 크롤링, 매달 1일의 생산량 소비량 예측, 매주 고객들에게 마케팅 이메일 전송

 

- 배치당 처리하는 데이터 수가 다르기 때문에 리소스가 비효율적으로 사용될 수 있다.

 

 

- 스트림 프로세싱(Stream Processing)이란 이벤트가 생길 때 마다, 데이터가 들어올 때 마다 실시간으로 데이터를 처리하는 것이다.

  주로 다음과 같은 상황에 많이 쓰인다.

(1) 실시간을 보장해야할 때

(2) 데이터가 여러 소스로부터 들어올 때

(3) 데이터가 가끔 들어오거나 지속적으로 들어올 때

(4) 가벼운 처리를 할 때

(5) 이상 탐지 (Anomaly Detection)

(6) 비즈니스 모니터링

 

- 데이터가 생성되어 요청이 들어올 때 마다 처리할 수 있으므로 리소스가 효율적으로 사용될 수 있다.

 

 

- 일반적인 배치 처리 플로우는 아래와 같이 동작한다.

1. 데이터 모으기

2. DB에서 read 후 쿼리 처리

3. 다시 DB에 write

- 반면에 스트림 처리 플로우는 아래와 같이 동작한다.

1. 데이터가 들어올 때 마다 흡수(ingest)

2. 쿼리 처리 후 State를 업데이트

3. DB에 write

 

- 실제 서비스에서 활용을 할 때 온라인에서는 실시간 데이터를 스트림 엔진을 통해 DB에 저장하고, 오프라인에서는 과거의 데이터를 한꺼번에 처리하는 배치 파이프라인을 통해 데이터를 DB에 저장하는 것이 좋다,

 

- 배치 파이프라인과 스트림 파이프라인의 예시이다.

 

 

cf) 마이크로 배치란?

- 데이터를 조금씩 모아서 프로세싱 하는 방식으로 배치 프로세싱을 잘게 쪼개서 스트리밍 방식을 흉내내는 것이다.

ex) Spark streaming

 

 

ref) 

https://flink.apache.org/usecases.html

 

728x90

'CS' 카테고리의 다른 글

컴파일, 링크, 빌드 [CS]  (0) 2024.07.03
데이터 웨어하우스 [CS]  (0) 2023.06.11
Data Governance [CS]  (0) 2022.12.19
Index & B-Tree [CS]  (0) 2022.12.14
Process & Thread[CS]  (0) 2022.12.14