Lambda 함수를 운영해본 사람이라면 한 번쯤 이런 질문을 해봤을 것이다. "함수 코드를 새로 배포했는데, 진행 중이던 invocation은 어느 버전으로 끝나는 거지?" 또는 "API Gateway가 호출하는 함수 코드를 5초 안에 어떻게 바꾸지?" 또는 "Canary 배포 중에 갑자기 5xx가 치솟으면 어떻게 즉시 롤백되지?" 이 질문들의 답은 모두 한 곳을 가리킨다. Lambda Version과 Alias라는 두 개의 추상화.
이 모델의 설계 철학은 단순하다. Version은 불변(immutable) 스냅샷, Alias는 그 스냅샷을 가리키는 가변 포인터다. Git의 commit hash와 branch 관계, 또는 Docker image의 tag와 sha256 digest 관계와 본질적으로 동일하다. 코드가 한 번 게시되면(publish-version) 그 Version은 영구히 변하지 않는다. 배포는 "새 Version을 만들고 Alias가 가리키는 대상을 바꾸는" 작업으로 정의된다. 이 구조 덕분에 weighted routing, 즉각 롤백, 멀티 환경 운영이 자연스럽게 가능해진다.
오늘은 이 두 개념의 내부 동작과 시험에서 자주 함정으로 나오는 가장자리 케이스들을 본다