Batching, Fan Out and scheduling in System Design
- 여러 작업을 모아 한 번에 처리하여 시스템 효율성을 극대화하는 기법으로, 개별 처리 시 발생하는 부하를 줄입니다. 📦
- 데이터베이스 쓰기, ML 추론, 분석 이벤트 처리 등 대량의 비실시간 작업에 특히 유용합니다. 📊
- 처리량(throughput)은 높이지만, 즉각적인 응답이 필요한 경우 지연 시간(latency)이 발생할 수 있어 트레이드오프를 고려해야 합니다. ⏳
- 하나의 큰 작업을 여러 개의 작은 독립적인 하위 작업으로 분할하여 병렬로 처리하는 방식입니다. 🚀
- 작업 부하를 분산하고, 병렬 처리를 통해 전체 완료 시간을 단축할 수 있습니다. ⚡
- 하위 작업 중 하나가 실패하더라도 다른 작업에는 영향을 미치지 않아 '실패 격리(failure isolation)'가 가능하며, 실패한 부분만 재시도할 수 있습니다. 🛡️
- 이벤트 기반 아키텍처, 비디오 처리(썸네일 생성, 트랜스크립션, 바이러스 스캔) 등 복잡한 워크플로우에 적합합니다. 🎬
- 미래의 특정 시점이나 주기적으로 작업을 실행하도록 예약하는 기능입니다. ⏰
- 구글 미팅 알림, 결제 실패 시 재시도, 정기적인 데이터 백업 등 시간 기반 자동화에 활용됩니다. 🗓️
- 실패한 작업을 일정 시간 후 자동으로 재시도하거나, 복잡한 워크플로우의 특정 단계를 예약하는 데 매우 효과적입니다. 🔄
- 크론 잡(cron jobs)이 가장 일반적인 구현 방법이며, 지연된 작업(delayed jobs) 및 큐 시스템과 함께 사용됩니다. ⚙️
데브허브 | DEVHUB | Batching, Fan Out and scheduling in System Design