1. 핵심 설계 원칙
- 확장성 (Scalability)
- 마이크로서비스 아키텍처 채택
- 서비스별 독립적 스케일링
- 멀티 AZ 구성으로 고가용성 확보
- 신뢰성 (Reliability)
- 무중단 배포 아키텍처
- 자동 장애 복구
- 데이터 지속성 보장
- 실시간성 (Real-time)
- 이벤트 기반 아키텍처
- Redis Pub/Sub 기반 실시간 메시징
- WebSocket 연결 풀링
2. AWS 서비스 구성
2.1 컴퓨팅 서비스
- Amazon ECS (EC2 기반)
- 클러스터 구성: ChatAppCluster
- 인스턴스 타입: t3.small
- 오토스케일링 구성 (min: 2, max: 4)
- CPU 사용률 70% 기준 스케일링
2.2 컨테이너 관리
- Amazon ECR
- chat-chat-http: API 서버 이미지
- chat-chat-ws: 채팅 서버 이미지
- chat-chat-notification: 알림 서버 이미지
- 이미지 라이프사이클 관리 (최근 3개 유지)
2.3 데이터베이스
- Amazon DocumentDB
- 엔진 버전: 5.0.0
- 인스턴스 클래스: db.t3.medium
- 스토리지 암호화 활성화
- 자동 백업 구성
- Amazon ElastiCache for Redis
- 노드 타입: cache.t2.micro
- 실시간 데이터 처리
- Pub/Sub 메시징
2.4 스토리지 및 미디어 서비스
2.5 네트워킹
- Amazon VPC
- CIDR: 10.0.0.0/16
- 가용영역: 2개
- 퍼블릭 서브넷: 10.0.1.0/24, 10.0.2.0/24
- 프라이빗 서브넷: 10.0.3.0/24, 10.0.4.0/24
- NAT Gateway 구성
- Application Load Balancer
- HTTPS 리스너 (포트 443)
- HTTP → HTTPS 리다이렉션
- 호스트 기반 라우팅
- SSL/TLS 인증서 통합
- Route 53
- DNS 호스팅 영역 관리
- 서브도메인 구성:
- api.streetcoder.club
- chat.streetcoder.club
- notification.streetcoder.club
2.5 보안 및 인증
- AWS Secrets Manager
- MongoDB 접속 정보 관리
- 자동 비밀번호 로테이션
- URI 자동 구성
- AWS Systems Manager Parameter Store
- AWS Certificate Manager
- SSL/TLS 인증서 관리
- ALB HTTPS 리스너 연동
2.6 모니터링 및 로깅
- Amazon CloudWatch
- ECS 서비스 로그 수집
- 컨테이너 로그 관리 (보존기간 14일)
- CPU 사용률 모니터링
- 알람 설정
2.7 IAM 및 권한 관리
- IAM Role
- ECS Task Execution Role
- Lambda Execution Role
- ECS Instance Role