[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만이 자연스럽게 웹 취약점 발생, 웹소켓 유지 등 처리 가능
