AWS Lambda에서 15분 타임아웃 해결 방법
AWS Lambda로 배치 작업을 돌리는데, 15분 제한에 걸려서 큰 파일을 처리하지 못하고 있어요. 스테핑 펑션으로 연결하거나, ECS Fargate로 전환하는 걸 고려 중인데 어떤 게 더 효율적일까요? 비용도 고려해야 해서 결정을 못 내리겠네요. 실제로 비슷한 문제 겪어보신 분들 조언 부탁드려요.
8 개의 답변
저도 비슷한 고민을 했었는데, 작업이 단순하다면 스테핑 펑션보다는 Fargate로 가는 게 더 깔끔했어요. Lambda는 근본적으로 짧은 처리에 최적화되어 있어서요. 비용은 Fargate가 유휴 시간에도 과금되지만, 작업 시간이 길면 오히려 Lambda보다 저렴할 때도 있습니다.
저는 스테핑 펑션으로 15분짜리 Lambda 여러 개를 체인처럼 연결해서 해결했어요. 파일을 분할 처리하니까 타임아웃 문제는 없었고, Lambda의 무료 티어를 활용할 수 있어서 초기 비용 부담이 적었습니다. 다만 작업이 복잡하면 관리가 번거로울 수 있어요.
Fargate 추천합니다. Lambda는 15분이 한계라서 큰 파일 처리에는 애초에 부적합해요. Fargate는 컨테이너 기반이라 메모리나 CPU도 유연하게 조정 가능하고, 비용도 예측 가능한 편입니다. 다만 콜드 스타트가 없는 대신 상시 실행 비용을 고려하셔야 해요.
혹시 작업이 정말 주기적인 배치인가요? 아니면 이벤트 기반으로 트리거되나요? 전자라면 Fargate가 낫고, 후자라면 스테핑 펑션으로 Lambda를 묶는 게 더 이벤트 드리븐 아키텍처에 잘 맞을 거예요. 비용은 둘 다 비슷비슷하니 설계 패턴에 따라 선택하세요.
저는 Fargate로 전환했는데, Lambda의 15분 제한에서 벗어나니 속이 시원했어요. 근데 생각보다 비용이 좀 나와서, 작업이 하루에 한 번 정도라면 스테핑 펑션으로 타임아웃을 우회하는 게 더 경제적일 수도 있어요. 파일 크기가 얼마나 되나요?
스테핑 펑션 써보세요. AWS 공식 문서에도 긴 배치 작업은 이걸로 해결하라고 나와 있어요. Lambda를 여러 개 연결하면 각각 15분씩 쓸 수 있으니 사실상 무제한이고, 실패 시 재시도 로직도 쉽게 넣을 수 있습니다. 비용은 상태 전환당 과금이라 저렴해요.
저는 둘 다 써봤는데, Fargate가 더 안정적이었어요. 스테핑 펑션은 상태 관리가 복잡해지면 디버깅이 지옥이더라고요. Fargate는 그냥 도커 이미지 하나로 끝이고, CloudWatch로 로그 보기도 편해요. 비용은 작업 시간이 길수록 Fargate가 유리합니다.
저도 요즘 같은 고민 중이에요 ㅋㅋ 일단 저는 스테핑 펑션으로 가볍게 테스트해보려고요. Fargate는 설정이 좀 무거워 보여서요. 혹시 파일을 S3에서 읽어오는 거라면 Lambda에 S3 배치 작업을 고려해보셨나요? 그건 15분 제한이 없을 수도 있어요.