💭 Minji's Archive

[s2n] 테스트용 웹 + AWS 아키텍처 구조 설계

November 18, 2025

현재 팀원들이 설계한 웹서비스 요건

  • React 프론트엔드
  • 웹소켓 실시간 채팅
  • Python(Flask/FastAPI) 백엔드
  • 메시지 저장 (DB)
  • XSS 등 기본 보안 처리 -> 클라이언트/서버 구조로 반드시 존재해야 함

운영/보안 요건

  • HTTPS
  • private DB
  • 기본 모니터링
  • 로그 남기기

AWS 스택 조사

1. EC2

  • 커스텀 서버 환경을 구성해야 할 때
  • WebSocket, 지속 연결 서비스에 적합
  • 백엔드 서버 + 웹소켓 서버 + 프론트엔드 호스팅까지 전부 가능

  • 웹소켓 장기 연결 유지가 필요할 때 사용
  • 도커 기반 배포하고 싶을 때

2. ALB (Application Load Balancer)

  • HTTPS/HTTP/WS/WSS 모두 지원
  • SSL 인증서(ACM)를 ALB에서 오프로딩 가능
  • s2n로 공격 테스트 시 ALB 로그가 유용함
  • Websocker은 API Gateway Standard HTTP API보다 ALB가 훨씬 안정적임

  • 서비스가 HTTPS 필요할 때
  • 로드밸런싱 필요할 때

3. VPC (Public + Private Subnet)

  • 보안 영역 분리
  • DB를 Public에 둘 이유가 없음
  • EC2를 pricate로 넣고 ALB만 public에 두면 안전함

  • 웹서비스에 DB가 포함될 때는 기본적으로 사용해야 함
  • Compliance 테스트하고 유리함

4. RDS (MySQL)

  • 관리형 DB -> 백업/모니터링/스탭샷 자동
  • 챗 메시지를 저장하려면 영속성 있는 DB 필요

  • 팀원별로 DB에 접근해야 할 때
  • 비용 최소화할려면 db.t3.micro / db.t4g.micro

5. CloudWatch (Logs + Metrics + Alarms)

  • 웹소켓 연결 로그, 에러 로그, ALB 5xx 등 추적 가능
  • 스캐너 공격할 때 어떤 패턴인지 모니터링 가능

  • 로그를 중앙에서 관리해야 할 때
  • 보안 테스트의 증거를 남길 때

6. S3

  • ALB Access Logs 저장
  • 백업된 채팅 로그 아카이빙
  • 서버 로그 보관

  • 장기 로그 보관이 필요할 때
  • 비용 줄이기 위해 Glacier 자동 이동 활용해야 함

7. Lambda

  • DB 백업/정리 작업을 자동화
  • 로그 압축, 정리 등 정기 작업 수행

  • 서버리스로 정기 관리 작업을 처리하고 싶을 때
  • 작은 운영 작업을 자동화할 때 비용 효율적

8. IAM

  • 인프라 운영 팀원별로 권한을 다르게 줄 수 있음
  • 실수로 RDS 삭제/ALB 삭제같은 위험한 행동 방지 가능

  • 실제 운영 환경처럼 운영하고 싶을 때

최종 설계 초안

[핵심 구성]

  • Route53
  • ALB (HTTPS + WebSocker 지원)
  • Private Subnet의 EC2
  • Private Subnet의 RDS (MySQL)
  • CloudWatch Logs
  • S3 (ALB Access Logs)
  • Secrets Manager (DB Credentials)

  • WebSocket 통신의 안정성 때문에 ALB + EC2 선택

    • WebSocket을 API Gateway로 처리하는 것보다 ALB WebSocker이 훨씬 안정적임
    • EC2에 WebSocket 서버 구동 자연스러움
  • 공격 테스트 목적 -> 서버리스 이벤트 스트림 필요 없음

    • Firehouse -> OpenSearch -> Athena는 운영/분석/SIEM 성능 강화형 아키텍처
    • 목적이 ELK/ES 기반 분석이 아니라 취약점 공격 환경을 재현하는 것이므로 서버 로그는 CloudWatch로 충분하다고 생각됨
    • ALB Access Logs만 S3에 보존하면 s2n 테스트에 충분
  • 비용 고려

    • Lambda + EventBridge + SNS + Firehouse + OpenSearch 등 사용하면 EC2/RDS보다 비용이 훨씬 올라감. OpenSearch는 최소 $75~150
    • EC2 (t3.micro) 1대 + RDS 1대 + ALB 1대 + ClouWatch & S3 Access Logs
  • XSS, SQLi, CSRF, File Upload 등 테스트를 하기 위해서는 Lambda로 하기는 어려움. EC2만이 자연스럽게 웹 취약점 발생, 웹소켓 유지 등 처리 가능