⚠
Problem
문서상 다이어그램과 실제 운영 구조가 달랐고, 옵저버빌리티가 없어 장애·에러가 표면화되지 않았다. release용 EC2가 퍼블릭 서브넷에 공인 IP로 직접 노출돼 공격 표면이 컸고, AZ 1a의 NAT Gateway는 아무도 쓰지 않으면서 과금되고 있었다. main Redis는 트래픽 대비 과한 다중 노드였고, NAT를 통한 불필요한 외부 LLM 호출로 데이터 처리 비용이 새고 있었다.

Project Detail
운영 중이던 AWS 아키텍처를 처음부터 재분석해 다이어그램과 실제 리소스의 불일치를 드러내고, 옵저버빌리티(CloudWatch+알람)·보안·가용성·비용 문제를 단계적으로 개선했다. 모니터링 부재로 묻혀 있던 누적 에러 22.6만 건을 표면화하고, 유휴 NAT·중복 Redis·불필요한 외부(LLM) 호출로 새던 비용을 차단했다.
Headline Result
표면화한 누적 에러 건
문서상 다이어그램과 실제 운영 구조가 달랐고, 옵저버빌리티가 없어 장애·에러가 표면화되지 않았다. release용 EC2가 퍼블릭 서브넷에 공인 IP로 직접 노출돼 공격 표면이 컸고, AZ 1a의 NAT Gateway는 아무도 쓰지 않으면서 과금되고 있었다. main Redis는 트래픽 대비 과한 다중 노드였고, NAT를 통한 불필요한 외부 LLM 호출로 데이터 처리 비용이 새고 있었다.
DB / Infra
Etc
다이어그램과 실제 리소스를 대조해 다시 그린 운영 구조. main/release 환경, AZ 1a·1c, NAT·RDS·Redis 구성과 egress 경로를 실측.
환경 분리 후 드러난 문제: release EC2의 공인 IP 직접 노출, 아무도 쓰지 않는 idle NAT-a, 트래픽 대비 과한 main Redis 2노드.
idle NAT·중복 Redis 제거, release egress를 NAT-c로 통합, CloudWatch 대시보드/알람→SNS 구성. ALB 2AZ·RDS Multi-AZ failover는 유지.