AWS EventBridge는 주로 이벤트 기반 시스템에서 이벤트 흐름을 관리하는 데 사용됩니다. EventBridge는 이벤트를 처리할 수 있지만, 분산된 환경에서 여러 노드나 서버 간의 작업 처리에는 적합하지 않을 수 있습니다.
Quartz + Spring Batch + AWS SQS는 분산 환경에서 배치를 효율적으로 처리하는 데 더 유리한 구조를 제공합니다. 특히, Spring Batch는 대규모 배치 작업을 분산하여 여러 서버에서 병렬 처리할 수 있게 하여 성능과 처리 속도를 개선할 수 있습니다. AWS SQS는 메시지 큐 시스템을 통해 분산 처리된 작업들을 큐로 관리하여, 시스템의 부하를 분산시키고 처리량을 높일 수 있습니다.
EventBridge는 이벤트 중심의 아키텍처를 지원하지만, 배치 처리나 대규모 데이터 처리의 로직을 구현하는 데 필요한 세밀한 제어는 제공하지 않습니다.
Spring Batch는 대규모 데이터 처리를 위한 프레임워크로, 배치 작업을 단계별로 나누어 처리하고, 실패한 작업을 재시도하거나 롤백할 수 있는 기능을 제공합니다. 이로 인해 배치 처리 시스템에서 발생할 수 있는 다양한 오류를 효과적으로 관리할 수 있습니다.
AWS EventBridge는 기본적으로 이벤트가 발생할 때마다 즉시 처리가 이루어지므로 실시간성에 적합하지만, 확장성과 신뢰성을 제공하는 데는 제한이 있을 수 있습니다.
AWS SQS는 높은 확장성과 내구성을 제공하여, 메시지를 큐에 안전하게 저장하고 여러 처리 시스템에서 분산 처리할 수 있도록 돕습니다. 이를 통해, 대규모 시스템에서도 안정적으로 배치 작업을 수행할 수 있습니다.
EventBridge는 이벤트 처리 후 그 자체로 로그를 제공하지만, 세부적인 배치 작업의 진행 상태나 오류에 대한 추적이 어려울 수 있습니다.
Quartz, Spring Batch, AWS SQS를 사용하면 배치 작업의 각 단계에 대해 로그를 세밀하게 추적하고, 실패한 작업이나 경고를 쉽게 모니터링할 수 있습니다. Spring Batch는 배치 작업에 대한 로그를 자동으로 기록할 수 있는 기능을 제공하며, AWS SQS는 실패한 메시지를 DLQ(Dead Letter Queue)에 보관하여 나중에 문제를 진단할 수 있도록 합니다.
AWS EventBridge는 이벤트 기반 처리가 중심이므로, 배치 처리에 필요한 성능 최적화를 위해서는 추가적인 설정이 필요할 수 있습니다.
Spring Batch + AWS SQS를 활용하면, 배치 작업을 분할하여 병렬로 처리하거나, 큐에서 메시지를 처리하는 시스템을 병렬화하여 성능을 최적화할 수 있습니다. 또한, 배치 작업에 대한 모니터링과 트래킹을 통해 성능 이슈를 빠르게 파악하고 해결할 수 있습니다.
AWS EventBridge에서 Quartz, Spring Batch, AWS SQS로 변경하는 주된 이유는 분산 처리 능력, 배치 작업 관리 및 로그 추적, 확장성 및 신뢰성, 성능 최적화 등을 통해 배치 시스템의 효율성과 안정성을 높이기 위해서입니다. 이 조합은 배치 처리 시스템에서 발생할 수 있는 문제를 보다 체계적으로 관리할 수 있는 장점을 제공합니다.