pile·
인프라 / DevOps·카카오 스타일 (지그재그)카카오 스타일 (지그재그)·

크로키의 스택 - AWS Batch

크로키닷컴(지그재그)이 주기적 작업 실행 방식을 EC2 cron → Lambda + CloudWatch Events 를 거쳐 AWS Batch 로 옮긴 기록이다. CloudFormation 으로 환경·대기열·작업 정의를 어떻게 짰는지, 중복 실행은 어떻게 막았는지까지 구성 그대로 공개한다.

핵심 포인트
  • 서비스 서버가 EC2 → Lambda → ECS Fargate 로 옮겨질 때마다 반복 작업 실행 방식도 따라 바뀌어야 했다.
  • Lambda + CloudWatch Events 는 실행 시간 제한이 있고 동시 실행을 막을 방법이 없었다.
  • Fargate 로 옮긴 뒤 Scheduled Tasks 를 검토했으나 진도가 안 나가, 빠르게 전환할 수 있는 AWS Batch 를 택했다.
  • 장점은 이미 ECR 에 올라간 Docker 이미지의 CMD 만 바꾸면 된다는 점, 작업 로그를 모아 보기 편하다는 점, 실패 알림을 받기 쉽다는 점이다.
  • 단점은 ECS 와 달리 CPU 를 1 vCPU 단위로만 지정할 수 있어 실제 필요보다 리소스를 많이 쓴다는 점이다.
상세 정리
  • 초기: EC2 위에서 서비스가 돌 때는 작업 전용 EC2 인스턴스를 두고 리눅스 cron 으로 일정을 관리했다.
  • 중간: Lambda 로 옮기며 CloudWatch Events 를 람다에 연결해 반복 작업을 실행했다.
  • 도구 선택의 눈높이: 나중에 Airflow 같은 기능이 풍부한 해결책이 필요해질 수 있지만 현재 상황에는 AWS Batch 로 충분하다고 명시한다.
  • 인프라는 CloudFormation 으로 구성하며 CDK 도 검토 중이다.
  • 컴퓨트 환경: 주어진 VPC 의 서브넷 위에 상황에 맞는 인스턴스가 생성되도록 하고, 관리형을 선택해 자동으로 늘고 줄게 했다. 작업이 중단되는 것을 원치 않아 스팟 인스턴스는 쓰지 않았다.
  • 대기열: 대부분의 작업은 default 대기열에서 돌린다. 다만 10분 이하 간격으로 실행되는 작업은 목록이 너무 길어져 별도 대기열로 분리하고 우선순위도 조금 낮췄다.
  • 실패 알림: 작업 실패를 감지하면 CloudWatch Events 가 람다를 호출하고, 그 람다가 실패 메시지를 분석해 슬랙으로 보낸다. 람다 역할에는 `SendToSlack` 함수를 호출할 권한을 준다.
  • 정의한 Batch 리소스는 다른 CloudFormation 스택에서 쓸 수 있도록 export 한다.
  • 작업 정의 예시 ①: 20분 정도 걸리는 작업에 넉넉하게 30분 타임아웃을 두고 재시도는 하지 않으며, 매일 아침 9시(UTC 0시)에 실행되도록 CloudWatch Events 를 만든다.
  • 작업 정의 예시 ②: 10분마다 실행되는 잦은 작업을 별도로 정의한다.
  • 중복 실행 방지: 짧게 도는 작업이 겹치지 않도록 현재 구동 중인 작업을 검사하는 방식을 썼고, `batch:ListJobs` 권한이 필요하다. 이미 돌고 있으면 종료 코드 0 으로 끝내 실패로 잡히지 않게 한다.
  • 순차 실행: 작업 정의만으로 여러 단계를 순서대로 제어하기는 어렵고, 이전 작업 마지막에서 `submitJob` 을 직접 호출하면 될 것으로 보고 있다.
  • 미사용 기능: 노드를 여러 개 띄워 동시에 실행하는 기능은 아직 쓰지 않는다.
왜 읽나서버리스·컨테이너로 옮기면서 배치 잡을 어디서 돌릴지 정해야 하는 백엔드·인프라 담당자에게 AWS Batch 의 실제 구성과 한계를 같이 보여준다.
카카오 스타일 (지그재그)
카카오 스타일 (지그재그) 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    엔터프라이즈 보안 요구사항을 충족하는 프라이빗 Amazon Bedrock AgentCore 구축하기

    Amazon Bedrock AgentCore의 VPC egress 기능(2026년 4월 추가)을 활용해 온프레미스 LLM·사내 IdP·사내 MCP 서버에 인터넷 노출 없이 연결하는 방법을 다룬다. 규제 산업 엔터프라이즈가 기존 사내 자산을 그대로 유지하면서 Bedrock AgentCore를 안전하게 구축하기 위한 구성 가이드다.

    요약 이어보기
    #mcp#amazon-bedrock#vpc+2
  2. 인프라 / DevOps·gitlab-engGitLab Blog·

    OpenTofu와 Argo CD로 구성하는 GitLab 기반 AWS 제어 플레인

    GitLab을 단일 제어 플레인으로 삼아 OpenTofu로 AWS 인프라를 프로비저닝하고, Argo CD로 GitOps 기반 애플리케이션 배포까지 자동화하는 엔드투엔드 튜토리얼이다. VPC·EKS 클러스터 구성부터 Helm 기반 툴 설치, 샘플 앱 배포까지 모든 과정이 GitLab CI/CD 파이프라인으로 연결된다.

    요약 이어보기
    #kubernetes#aws-eks#gitops+2
  3. 인프라 / DevOps·AWS KoreaAWS Korea Tech·

    Amazon Bedrock 기반 사내 LLM, 키 발급부터 비용 차단까지: F&F의 LiteLLM 게이트웨이 운영 사례

    패션 기업 F&F가 Amazon Bedrock과 LiteLLM 프록시를 결합해 구축한 사내 LLM 플랫폼 운영 사례다. API 키 셀프서비스 발급, 모델별 접근 승인 워크플로, 사용자·프로젝트별 예산 자동 차단까지 전 과정을 직접 구현한 아키텍처 결정과 운영 교훈을 공유한다.

    요약 이어보기
    #kubernetes#amazon-bedrock#litellm+2