AWS Lambda로 MVP 만들 땐 몰랐지… API Gateway로 뒤늦게 DEV/PROD 구분한 썰

석현·2025년 6월 17일

Insight

목록 보기
42/43

요즘 서버리스 구조로 빠르게 배포하고 검증하는 일이 많아졌죠. 하지만... 개발자라면 한 번쯤 이런 아찔한 경험이 있을 겁니다:

"DEV에서 테스트한 코드가 운영에 그대로 반영되었어요... 🫠"

이런 사고를 막기 위해 저는 AWS Lambda 버저닝API Gateway Stage 분리를 도입했습니다. 운영 환경을 깨뜨리지 않고, 안전하게 개발과 검증을 병행할 수 있는 방법! 오늘은 이걸 블로그로 정리해봅니다.


✅ 문제 배경: MVP에서 출발한 구조, 이제는 고쳐야 할 때

MVP를 빠르게 만들던 그때는 Lambda + API Gateway를 하나로 묶어서 쓰는 게 효율적이었어요. 일단 기능만 돌아가면 됐으니까요.

그런데 점점 기능이 늘어나고 사용자도 많아지니까, 운영 중 실수로 코드가 덮이는 위험이 현실로 다가왔습니다. 그래서 이번 확장 개발을 하면서, 이 잔재를 정리하고 확실하게 운영/검증 환경을 분리하기로 결심했어요.


🧱 해결 전략 요약: Stage + Alias + 버저닝

이 과정을 안전하게 적용하려면 순서를 꼭 지켜야 합니다. 실수 한 번이면 운영 서버에 영향 줄 수 있으니 신중하게요!

1. Lambda 버전 생성 및 Alias 매핑 (가장 먼저 해야 합니다!)

  • Lambda 코드를 배포한 후, Publish new version으로 고정 버전을 생성합니다.

  • 이후, 해당 버전에 대해 alias를 만들어서 운영과 개발을 명확하게 분리합니다:

Alias연결 버전설명
dev$LATEST or 최신버전개발 & 검증용
prod안정된 고정버전운영 환경에만 적용됨

이 alias는 이후 API Gateway에서 직접 호출하게 되므로, Lambda 함수에 반드시 alias별로 Invoke 권한을 확인해야 합니다!

{
  "Effect": "Allow",
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:region:account-id:function:functionName:prod"
}

2. API Gateway에서 Stage 및 Variable 구성

  • API Gateway에 dev, prod Stage를 생성합니다.
  • 각 Stage에는 다음과 같이 Variable을 설정:
StageVariable KeyValue
devaliasdev
prodaliasprod


업로드중..

  • Integration 설정에서 Lambda ARN을 다음처럼 작성합니다:
arn:aws:lambda:region:account-id:function:functionName:${stageVariables.alias}

→ 이걸로 Stage에 따라 자동으로 dev 또는 prod alias를 호출하게 됩니다.


✅ 도입 효과 요약

항목효과
개발/운영 환경 분리실수로 운영에 영향을 주는 일 없음
안정성배포 후에도 prod alias는 고정 버전을 유지
유연성dev alias로 자유로운 테스트 가능
추적 가능성버전 기반으로 롤백이나 상태 확인이 용이
권한 제어운영 접근 권한 제한으로 보안 강화

🔒 정리: 안전하게 적용하려면 꼭 기억할 것

  1. Lambda 먼저 → 버전 생성 & Alias 설정
  2. Alias마다 IAM 권한 명확히 나누기 (dev/prod 분리)
  3. API Gateway는 Stage Variable로 Lambda alias 호출
  4. 테스트는 dev로, 운영은 prod alias만!

💬 마무리: $LATEST만 쓰는 구조, 이제는 졸업할 때!

Lambda 버저닝과 Alias, 그리고 API Gateway Stage 분리는 단순한 구조 개선이 아닙니다.

이건 실수를 줄이고, 팀 전체의 배포 품질을 높이며, 보안까지 강화하는 운영 안정성의 최소 조건입니다.

혹시 아직 $LATEST로 운영 중이시라면?
오늘 당장 Publish version, Alias, Stage Variables를 꺼내보시는 걸 추천드립니다 😉


#AWS #Lambda #APIgateway #Serverless #운영팁 #DevOps #버저닝전략 #배포실수방지 #백엔드안정성

profile
Learner

0개의 댓글