You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Code를 실행하는 worker들끼리 data를 효율적으로 전달하거나, 최종 결과물을 확인할 수 있도록 result cache라는 일종의 shared storage를 마련해둔다.
Why?
세 가지 data 교환 방식 후보
(1) API로 big data 전달을 하게 되면, 전송 중 연결이 해제되는 등 오류가 발생했을 때 데이터 유실 및 복구 문제 등을 처리하기가 까다롭다.
(2) Kafka를 사용할 경우 (1)의 문제는 보완할 수 있지만, data size가 얼마나 클지 예측할 수 없다는 점에서 message max size가 비교적 작은 Kafka message를 통해 대용량 데이터를 전송하는 것에는 문제가 있다. 데이터를 잘게 쪼개어 보내는 등의 방법이 있긴 하지만, 순서 보장 문제 등 부가적으로 고려해야 할 부분이 많아서 개발이 까다롭다.
(3) Shared storage를 활용하면, (1)과 (2)의 문제를 보완할 수 있다. 대신, 하나의 record의 max size가 매우 큰 storage를 사용해야 한다는 제약이 있다. (AWS S3같은 object storage의 경우 하나의 object에 5TiB까지 저장을 할 수 있으므로 적합해보인다. 이에 비해 MySQL, MongoDB 등은 record 하나에 수 GB까지만 지원하므로, 쪼개서 저장하는 방법도 고려해야 한다. MongoDB의 경우 GridFS라는 것을 사용하면 큰 사이즈의 파일도 분할 저장해준다.)
※ 참고 자료: https://www.conduktor.io/kafka/how-to-send-large-messages-in-apache-kafka
선택하는 storage에 따라 용량 제약이 존재할 수 있으므로, 최대한 data size를 줄이기 위해 압축 기능도 제공한다.
Activity