IL-0151 Amazon Web Services · 2023-06-13awskubernetes
AWS Lambda 는 리전의 용량을 셀이라는 독립된 단위로 나누는 셀 구조를 쓴다. 셀마다 Lambda Frontend 와 Lambda Invocation Manager 가 있다. Lambda Frontend 는 함수 호출을 받아 라우팅하고, Lambda Invocation Manager 는 함수와 계정별 트래픽 규모에 맞춰 컴퓨트 용량을 Lambda Execution Environment 형태로 관리한다.
2023년 6월 13일 10:01 AM PDT 에 us-east-1 에서 트래픽이 평소 하루 패턴 범위 안에서 늘어 Lambda Frontend 플릿이 확장하기 시작했다. 11:49 AM 에 셀 하나가 이전에 도달한 적 없는 용량 임계를 넘으면서 잠재된 소프트웨어 결함이 드러났다. Execution Environment 는 들어온 요청에 맞게 할당됐지만 Lambda Frontend 가 이를 끝내 쓰지 못했다. 새 Execution Environment 를 공급하지 못하자 그 셀의 함수 호출에서 오류율과 지연이 늘었다. 다른 셀의 호출은 영향이 없었다.
Lambda 를 쓰는 STS, AWS Sign-in, Management Console, EKS, Connect, EventBridge, Support Center 가 함께 영향을 받았다. EKS 는 새 클러스터 생성에서 오류율과 지연이 늘었고 기존 클러스터는 영향이 없었다. EKS 오류율은 1:45 PM 에 Lambda 호출 문제가 풀리면서 정상으로 돌아왔다.
엔지니어들은 12:26 PM 에 결함과 그 결함이 컴퓨트 용량 공급에 준 영향을 찾았다. 트래픽이 줄어든 것을 확인하고 Lambda Frontend 플릿을 결함이 나타나지 않는 규모로 줄였다. 1:30 PM 에 새 호출이 회복하기 시작했고 1:45 PM 에 동기 호출이 완전히 회복했다. 3:37 PM 까지 비동기 이벤트 백로그를 처리했고 모든 서비스가 정상으로 돌아왔다.
2023년 6월 13일 11:49 AM PDT 부터 us-east-1 리전에서 Lambda 함수 호출의 오류율과 지연이 늘었다. Amazon EKS 에서는 새 클러스터를 만들 때 오류율과 지연이 늘었고, 기존 EKS 클러스터는 영향을 받지 않았다.
영향은 Lambda 에 기대는 다른 서비스로 번졌다. STS 는 11:49 AM 부터 2:10 PM 사이 세 차례 오류율이 올라갔다. STS 에 스로틀을 걸자 1:13 PM 부터 2:11 PM 사이 AWS Sign-in 의 SAML 페더레이션 오류가 늘었고, 기존 IAM 세션은 영향이 없었다. EventBridge 에서는 Lambda 로 보내는 이벤트의 전달 지연이 최대 801초까지 늘었다.
us-east-1 의 Management Console 은 11:48 AM 부터 2:02 PM 사이 'AWS Management Console is currently unavailable' 또는 '504 Time-out' 오류 페이지를 보였다. Amazon Connect 에서는 통화가 연결되지 않고 채팅과 작업이 시작되지 않았으며 상담원 로그인에 문제가 생겼다. AWS Support Center 에서는 처음 11분 동안 지원 케이스를 만들거나 보거나 고치는 요청이 실패할 수 있었고, 전화와 채팅 지원은 2:38 PM 까지 쓸 수 없었다.
비동기나 스트리밍 이벤트 소스로 Lambda 를 호출하는 고객은 이벤트가 처리되지 않아 백로그가 쌓였다.
원인 ? 소프트웨어 결함
엔지니어링 팀이 곧바로 투입돼 조사를 시작했고, 12:26 PM 에 잠재 결함과 그 결함이 컴퓨트 용량 공급에 준 영향을 찾았다.
셀 구조여도 셀 하나가 한 번도 겪지 않은 크기로 커지면 잠재 결함이 드러날 수 있다. 이번 장애로 Lambda Frontend 를 확장할 때 셀 구조에 빈틈이 있다는 것이 드러났다. Lambda 함수 호출에 기대는 STS, 콘솔, EKS 같은 서비스도 함께 오류와 지연이 늘었다. EKS 에서는 새 클러스터 생성만 실패했고 이미 돌던 클러스터는 영향이 없었다.
–