Config는 로봇 조작 데이터를 처리하기 위해 Amazon EKS, EC2 Spot Instances, RabbitMQ, KEDA, Karpenter를 활용한 데이터 파이프라인을 구축
기존 SQS + Lambda 기반의 단일 큐(Single Queue) 방식에서 Job별 동적 큐(Dynamic Queue)를 도입하여 병렬 처리 성능을 향상시킴
EC2 Spot Instances 활용 및 아키텍처 개선을 통해 처리 비용을 70~90% 절감하고 처리 시간을 단축
Karpenter를 활용하여 워크로드 특성에 맞는 다양한 Spot Instance를 프로비저닝하고, Spot 중단에 대한 다층 보호 전략을 구현
이 아키텍처는 로봇 데이터 전처리뿐 아니라 영상 인코딩, ML 추론 파이프라인, 대규모 ETL 등 다양한 워크로드에 적용 가능
기존 SQS + Lambda 기반 아키텍처는 단일 큐(Single Queue) 구조로 인해 다수의 작업 요청 시 순차적인 대기열(Queue) 발생이 불가피했다. 특히, 대규모 배치 작업이 큐를 점유하면 다른 소규모 작업까지 지연되는 문제가 발생했다.
AWS Lambda의 기본 제약: 계정 수준의 동시 실행 할당량 및 최대 실행 시간 제한(15분) 존재
높은 비용: 온디맨드(On-Demand) 가격으로 인해 Spot Instance 대비 높은 비용 발생
제한된 운영 가시성: 개별 작업의 진행 상태를 실시간으로 파악하기 어려움
새로운 아키텍처는 RabbitMQ 기반의 Job별 동적 큐(Dynamic Queue) 생성 패턴을 도입하여 단일 큐 병목 문제를 해결했다. 각 배치 작업 시작 시 해당 Job 전용 큐와 워커가 동적으로 생성되고, 작업 완료 시 자동 정리된다.
독립적인 병렬 처리: 여러 사용자가 동시에 독립적인 작업을 병렬로 실행 가능
독립적인 스케일링: 각 작업별 독립적인 스케일링 및 진행률 모니터링 가능
Quorum Queue: RabbitMQ의 Quorum Queue를 사용하여 메시지 유실 방지
이러한 구조는 대규모 데이터 처리(Large-scale Data Processing) 환경에서 높은 효율성을 제공한다.
Config는 Karpenter를 활용하여 워크로드 특성에 맞는 다양한 종류의 노드 풀(NodePool)을 구성했다. 특히, Spot 인스턴스(Spot Instance)의 가용성을 높이기 위해 인스턴스 패밀리 다양성에 주목했다.
On-Demand 노드: RabbitMQ 클러스터, KEDA 등 안정성이 중요한 인프라 컴포넌트 배치
CPU Spot 노드: 영상 전처리, 후처리 등 CPU 기반 워커 실행
GPU Spot 노드: 액션 라벨링 추론 등 GPU 워커 실행
Karpenter**는 price-capacity-optimized 할당 전략을 사용하여 가격과 중단 가능성을 함께 고려하여 최적의 인스턴스를 선택한다.
Spot Instance는 최대 90%의 비용 절감 효과를 제공하지만, 언제든지 회수될 수 있다는 단점이 있다. Config는 이러한 Spot 중단 상황에서도 데이터 손실 없이 작업을 완료하기 위해 다층 보호 전략을 설계했다.
인프라 레이어(Karpenter + EventBridge): Karpenter가 Amazon EventBridge와 Amazon SQS를 통해 EC2 Spot 중단 경고를 수신
애플리케이션 레이어(SIGTERM 핸들러): 워커 Pod의 terminationGracePeriodSeconds를 충분히 길게 설정하여 SIGTERM 수신 후 현재 처리 중인 작업을 안전하게 NACK
메시지 큐 레이어(Quorum Queue): 메시지는 여러 노드에 복제되어 유실되지 않으며, 워커가 비정상 종료 시 consumer timeout(20분) 이후 자동 재분배
이러한 다층 보호를 통해 데이터 손실(Data Loss) 없이 작업 완료를 보장한다.
Config는 KEDA(Kubernetes Event-Driven Autoscaling)를 사용하여 RabbitMQ 큐의 메시지 수에 따라 워커 Pod의 replica 수를 자동으로 조절한다. 큐에 메시지가 쌓이면 Pod를 늘리고, 큐가 비면 Pod를 0개까지 줄여 컴퓨팅 비용을 절감한다.
자동 스케일링 시퀀스: KEDA가 Pod 수를 늘리면 Karpenter가 Pending 상태의 Pod를 감지하고 Spot 노드를 자동 프로비저닝
minReplicaCount: 0: 큐가 비어 있으면 워커 Pod가 0개로 스케일다운되어 컴퓨팅 비용 절감
10초 내 스케일업: 메시지가 들어오면 10초 내에 스케일업 시작
이러한 자동 스케일링은 리소스 효율성(Resource Efficiency)을 극대화한다.