lhywk 님의 블로그

Guidance for Building a Containerized and Scalable Web Application on AWS 아키텍처 분석 본문

AWS

Guidance for Building a Containerized and Scalable Web Application on AWS 아키텍처 분석

lhywk 2026. 3. 11. 20:00

개요

이 아키텍처의 공식 명칭은 "AWS 기반의 컨테이너화된 확장 가능한 3계층 웹 애플리케이션 가이드"이다.

이 가이드는 중소기업을 위한 컨테이너 기반 3계층 웹 애플리케이션을 구축, 배포 및 관리하는 간소화된 방법을 제공한다. 아키텍처 설정부터 컨테이너 배포 및 시스템 성능 모니터링에 이르기까지 애플리케이션의 전체 수명 주기를 다룬다. 컨테이너화에 중점을 두면 수요에 따라 리소스를 동적으로 조정할 수 있으므로 웹 애플리케이션은 성능이나 사용자 경험 저하 없이 트래픽 증가 및 갑작스러운 트래픽 급증을 처리할 수 있다. 컨테이너화된 웹 애플리케이션은 애플리케이션 리소스를 최적화하고 웹 애플리케이션 개발을 개선하는 데 도움이 된다. 

 

구성 요소 분석

Edge 영역

  • Amazon Route 53: DNS를 통해 요청 경로에 따라 트래픽을 정적/동적 콘텐츠로 라우팅.
  • Amazon Cognito: 웹 애플리케이션의 액세스를 보호하고 제어.
  • Amazon CloudFront (CDN): 정적 콘텐츠 전달 지연 시간을 줄이기 위한 콘텐츠 전송 네트워크.
  • Amazon S3 (Storage): 정적 콘텐츠와 백업 데이터를 저장.

Control 영역

  • Amazon API Gateway: 모든 수신 API 호출을 처리하며 권한 부여, 액세스 제어 및 트래픽 제한을 관리.
  • Application Load Balancer (ALB): 인터넷 연결형으로 구성되어 가용 영역(AZ) 전반의 애플리케이션에 트래픽을 분산.

Compute 영역

  • Amazon ECS & AWS Fargate: Amazon ECS에서 애플리케이션을 실행하고 서버리스 컴퓨팅을 위해 Fargate를 사용하여 동적 콘텐츠 요청을 처리.
    • Fargate를 사용함으로써 가상 머신(EC2) 수준의 관리 부담을 없애고, Task 단위의 보안 격리를 구현.
  • Amazon Elastic Container Registry (ECR): 애플리케이션을 실행하는 컨테이너 이미지를 저장하고 ECS가 이를 가져와 실행.

Data/Ops 영역

  • Amazon DynamoDB (NoSQL): API 호출이 있을 때마다 애플리케이션 데이터와 콘텐츠를 검색.
  • Amazon CloudWatch (Monitoring): 애플리케이션과 모든 리소스를 모니터링하고 관찰.

 

트래픽 흐름

1. 요청 시작 및 인증

인프라의 최전방에서 사용자를 맞이하고 신원을 확인하는 단계.

  • Amazon Route 53: 사용자가 도메인 주소를 입력하면 DNS 쿼리를 통해 최적의 접속 엔드포인트(CloudFront)로 트래픽을 안내.
    • 허가되지 않은 도메인 접근을 차단하고 정상적인 경로(CloudFront)로만 트래픽을 유도
  • Amazon Cognito: 사용자 인증을 담당. 로그인이 필요한 서비스의 경우, 유효한 토큰(JWT)을 발급하거나 확인하여 비즈니스 로직에 접근할 수 있는 '자격 증명'을 관리.

2. 콘텐츠 경로 분기

전면에 배치된 Amazon CloudFront가 요청의 성격에 따라 다음 두 갈래로 트래픽을 분산.

  • 정적 요청 -> Amazon S3: 이미지, HTML, JS 등 정적 파일 요청은 서버를 거치지 않고 S3에서 즉시 응답하여 처리 속도를 높이고 서버 부하를 줄임.
  • 동적 요청 -> Amazon API Gateway: 데이터 조회나 연산이 필요한 API 호출은 보안 검증을 위해 내부망의 관문인 API Gateway로 전달.

 

3. 동적 데이터 처리

VPC 내부로 들어온 동적 요청이 실제 비즈니스 로직으로 변환되어 처리되는 구간.

  • Amazon API Gateway: 요청의 안전성을 최종 확인. 허가되지 않은 접근을 차단하고 설정된 트래픽 제한을 통해 내부 시스템이 과부하되지 않도록 보호.
  • Application Load Balancer: VPC 내부로 들어온 요청을 수용하여 가동 중인 여러 개의 컨테이너 중 여유 있는 대상에 부하를 분산.
  • Amazon ECS / AWS Fargate: 실제 애플리케이션 코드가 컨테이너 단위로 실행되는 영역. ECS가 관리하는 컨테이너 환경 위에서 Fargate의 연산 자원을 사용하여 비즈니스 로직을 실행하고 데이터를 가공.
    • 각 작업(Task)이 독립된 환경에서 실행. 한 컨테이너가 뚫려도 다른 컨테이너나 실제 서버 인프라로 공격이 퍼지지 않게 물리적으로 격리된 연산 자원을 사용.
  • Amazon DynamoDB: 서버리스 NoSQL 데이터베이스. 애플리케이션에 필요한 데이터를 낮은 지연 시간으로 읽고 기록.

4. 인프라 운영 및 모니터링

  • Amazon ECR: ECS가 실행될 때 필요한 최신 컨테이너 이미지를 보관하고 공급하는 역할.
  • Amazon CloudWatch: 시스템 전 구간에서 발생하는 로그, 에러, 성능 지표를 중앙에서 수집하고 실시간으로 감시.

 

개선안

보안을 좀 더 강화

  • 현재 구조에는 AWS WAF(Web Application Firewall)가 명시되어 있지 않다. CloudFront나 API Gateway가 입구 역할을 하지만 SQL Injection이나 XSS 같은 애플리케이션 계층의 공격을 정교하게 필터링하기에는 부족.
  • 개선: CloudFront 혹은 API Gateway 전면에 AWS WAF를 배치하여 OWASP Top 10 위협을 차단하는 규칙을 적용.