IL-0438 ANDPAD · 2026-07-16awsnetworkingkubernetes
CloudFront VPC Origins 장애로 Builder Work 가 504 오류를 내며 거의 모든 접속이 막혔다
2026년 7월 16일 일본 시간 16시 45분쯤부터 20시 20분쯤까지 약 3.5시간 동안 Amazon CloudFront 의 VPC Origins 기능에 장애가 났다. VPC Origins 는 CloudFront 가 VPC 의 Private 서브넷에 있는 ALB, NLB, EC2 인스턴스 같은 애플리케이션의 콘텐츠를 배포하게 하는 기능이다. 나중에 AWS Health 에서 온 알림에 따르면 원인은 VPC Origins 연결을 관리하는 내부 공유 서브시스템의 용량 제약이었다. CloudFront 전체는 정상이었지만 이 서브시스템을 거치는 CloudFront 와 오리진 사이의 통신이 끊겼다.
ANDPAD 에서 영향을 받은 것은 Builder Work 하나였다. Builder Work 는 EKS 위에서 돌고 AWS Load Balancer Controller 가 Ingress 리소스를 ALB 에 반영하며, 주변 인프라는 Terraform 으로 관리한다. 이전에는 Public 서브넷의 ALB 와 CloudFront 로 프런트와 API 도메인을 나눴다. 그런데 CORS 오류와 Cognito 인증 때의 401 오류를 피하려고 만든 복잡한 Ingress 규칙이 부담이 되어, ALB 를 Private 서브넷으로 옮기고 CloudFront VPC Origin 으로 통신 경로를 하나로 묶었다. CloudFront 의 오리진은 VPC Origins 하나뿐이었다.
SRE 팀은 CloudFront 를 거치지 않고 Internet-facing ALB 로만 라우팅하기로 했다. VPC Origins 를 도입할 때 Internet-facing Ingress 와 ALB 를 지웠으므로 Ingress 를 다시 만들어야 했다. Argo Rollouts 의 Rollout 리소스에 묶고 promote 하는 절차까지 있어 시간이 걸렸다. 기존 WAF 는 us-east-1 글로벌 범위의 CloudFront 용이라 ALB 에 연결할 수 없어, 보안 팀과 함께 리전 WAF 를 따로 만들었다. ACM 인증서, WAF, 액세스 로그 설정을 묶은 IngressClass 와 용도별 Ingress 를 더해 라우팅을 되살렸고 Builder Work 가 복구되었다. 그 뒤 ANDPAD 는 VPC Origins 와 CloudFront 구성으로 돌아가되 Internet-facing 으로 바꾸는 수단을 코드에 남겨 두었다.
- 심각도
- –
- 영향 범위
- Builder Work was almost entirely unreachable; other ANDPAD services showed no problems after login
- 영향 사용자
- –
- 지역
- –
- 감지까지
- 15m
- 복구까지
- –
증상
2026년 7월 16일 17시쯤 Datadog 이 알림을 울렸고, 거의 같은 때 CloudFront 에서 VPC Origins 연결을 쓰는 배포에 5xx 오류가 늘기 시작했다. CloudFront 자체는 정상으로 돌았지만 VPC Origins 기능에만 장애가 나서 504 Gateway Time-out 이 잇따랐다.
SRE 팀이 조사하니 VPC Origins 를 설정한 CloudFront 배포는 ANDPAD 제품 가운데 건설업 구인·이직 서비스 Builder Work 하나뿐이었다. Builder Work 는 거의 전면적으로 접속할 수 없었고, 다른 ANDPAD 서비스는 로그인한 뒤의 화면과 기능에 이상이 없었다.
Builder Work 는 Private 서브넷의 ALB 를 CloudFront 의 VPC Origin 으로만 두었기 때문에, AWS 가 회복하기를 기다리거나 ALB 를 Internet-facing 으로 되돌리는 것 말고는 방법이 없었다.
원인
- 촉발
- CloudFront 의 VPC Origins 연결을 관리하는 AWS 내부 공유 서브시스템에서 용량 제약이 생겼다.
감지
17시쯤 Datadog 이 알림을 울렸고, 거의 같은 때 VPC Origins 연결을 쓰는 CloudFront 배포에서 5xx 오류가 늘고 있는 것을 알았다.
조치
- CloudFront 의 오리진이 VPC Origins 하나뿐이었으므로, CloudFront 를 거치지 않고 Internet-facing ALB 로만 라우팅하도록 임시로 바꾸기로 했다.
- VPC Origins 도입 때 지운 Internet-facing Ingress 를 다시 만들고, Argo Rollouts 의 Rollout 리소스에 묶은 뒤 promote 했다.
- 기존 WAF 는 us-east-1 글로벌 범위의 CloudFront 용이라 ALB 에 연결할 수 없어, 보안 팀과 함께 ALB 용 리전 WAF 를 따로 만들었다.
- ACM 인증서, WAF, 액세스 로그 설정을 묶은 IngressClass 를 새로 만들었다.
- 일반 트래픽용, Cognito 인증과 VPN 접근 제한을 건 관리 화면용, 리다이렉트용 Ingress 를 더해 라우팅을 되살렸다.
후속 조치
- VPC Origins 와 CloudFront 구성으로 돌아가면서, 다음 장애에 대비해 Internet-facing 으로 바꾸는 수단을 코드에 넣어 둔다.
- 복구 때 만든 Internet-facing ALB 를 남기고, AWS Load Balancer Controller 의 IngressClassParams spec.inboundCIDRs 로 Security Group 인바운드를 사내 CIDR 과 제한 공개용 CIDR 에만 허용한다. values.yaml 의 securityGroupInboundCidrs 를 주석 처리하면 inboundCIDRs 가 빠져 0.0.0.0/0 으로 열리게 했다.
- Terraform 으로 관리하는 Route53 A 레코드를 CloudFront 로 되돌렸다. ALB 로 가는 별칭 설정 route53_alias_name 은 주석 처리한 채 코드에 남겨, 주석을 풀고 apply 하면 Route53 을 ALB 로 돌릴 수 있게 했다.
교훈
VPC Origins 는 ALB 를 Private 서브넷에 두어 인터넷에서 오는 직접 접근을 막고 통신 경로를 단순하게 해 운영 부담을 줄인다. 그 대신 CloudFront 와 오리진 사이의 통신이 AWS 가 관리하는 공유 서브시스템을 거치므로, 그 서브시스템이 망가지면 CloudFront 전체가 정상이어도 통신이 끊긴다. ANDPAD 는 VPC Origins 의 이점을 버리지 않고 장애 때 쓸 우회 경로를 미리 마련해, 다음에 같은 위험이 드러날 때의 대응 비용을 낮추기로 했다. 상시 켜 둔 ALB 의 유지 비용은 치르지만, 이번에 Ingress 재생성과 Rollout 연결에 시간이 걸린 것을 반성해 주석만 풀면 전환할 수 있게 했다.
출처
관련 사례
같은 원인 · 공통 클라우드 로드 밸런서, 인그레스 컨트롤러
IL-0463Harness Secure Connect 의 내부 로드 밸런서에 닿을 수 없게 되어 Secure Connect 를 쓰는 git 커넥터 검사와 CI 파이프라인이 실패했다Harness · 2026같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 CDN 과 엣지 네트워크
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 CDN 과 엣지 네트워크
같은 원인 · 공통 클라우드 로드 밸런서
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 클라우드 로드 밸런서
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0438
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0438/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.