AWS 리소스를 활용한 Batch 작업 : AWS Batch(EC2) vs Lambda & Eventbridge(구 Cloudwatch)

AWS에서 배치 프로세싱을 구현하는 방법은
  • batch를 이용하는 방법
  • lambda를 이용하는 방법
이 있다.


Batch를 이용하는 방법

AWS Batch -> AWS EC2 Instance를 의미한다.

이 방법은 ec2를 사용하기 때문에 완전한 Serverless는 아니다.

AWS Batch가 Batch 작업을 돌리기 위해
EC2 인스턴스를 Spin up 한다.
* live 상태로 만듬을 뜻함

문제는 배치 작업을 하지 않을 때에도
EC2의 최소 공간을 live 상태로 유지해야한다.

이는 배치 작업을 하지 않을 때에도
돈이 나간다는 것을 의미하고


때문에 다음의 방법이 보다 효율적이다.


Lambda를 이용하는 방법

Cloudwatch( -> EventBridge )가 스케줄링 엔진으로서 작동한다.
AWS Lambda를 Trigger한다. ( cron trigger )


1. AWS EventBridge console pannel에서 스케줄링 엔진 rule을 추가한다.

2. lambda function을 구현한다.



견고한 배치 작업을 만드는 방법

testing worker chain

- 어떤 에러가 발생하는지

- worker chain이 끝까지 도달하는지

- edge 케이스 테스팅을 통해
  끝나지 않는 무한 루프를 도는 runaway worker chain,
  시작되지 않는 worker chain 방지한다.

   무한 루프를 돌 경우 높은 aws bill이 나올 수 있음.




retry attempt 조정

asynchronous invocation에서 retry attempt를 0으로 세팅하기.
기본값은 2이다.
-> batch lambda가 fail 하더라도 2번 더 실행됨.
-> 같은 유저에게 메일이 3번 갈 수도 있음.



unprocessed items 처리

가장 요청이 많이 들어오는, 바쁜 production환경에서도
성공적으로 배치 작업이 수행할 수 있게
concurent worker chains 튜닝




댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

Blogger 커스터마이징 : CSS 수정 (sticky-header)

Intel 14th gen CPU의 칩 충돌 사태와 해결 방법