1. 요구사항 분석
- 안정적이고 확장 가능한 웹 애플리케이션 배포
- 확장성과 비용 최적화 고려
- 24시간 중단 없는 서비스 제공
- 사용자 정보 보호 및 암호화된 통신
- 비용 효율적인 클라우드 인프라 사용
2. 아키텍처 설계
- 시스템 구성도 : VPC, 서브넷, EC2, RDS, ELB, S3 등 포함한 클라우드 인프라 다이어그램
- 서비스 상호작용 : 각 AWS 서비스가 어떻게 상호작용하는지 설명
- 보안 설정 : IAM 역할, 보안 그룹, VPC 네트워크 구조
- 확장성 계획 : Auto Scaling과 ELB 설정 계획
- 비용 최적화 전략 : 사용하지 않는 리소스 자동 종료 등
(1) 시스템 구성도 (System Architecture)
- VPC : 애플리케이션의 보안 및 네트워크 격리를 위해 VPC를 설정
- 서브넷 : 퍼블릭 서브넷과 프라이빗 서브넷으로 구분
- 퍼블릭 서브넷 : ELB 및 EC2 인스턴스 배치
- 프라이빗 서브넷 : RDS 및 비공개 데이터 처리 시스템 배치
- 인터넷 게이트웨이 : 퍼블릭 서브넷에서 외부 네트워크와 통신할 수 있도록 인터넷 게이트웨이를 설정
- NAT 게이트웨이 : 프라이빗 서브넷에 있는 인스턴스가 인터넷에 접근할 수 있도록 NAT 게이트웨이를 사용
- 서브넷 : 퍼블릭 서브넷과 프라이빗 서브넷으로 구분
- EC2 인스턴스
- 웹 애플리케이션의 API 서버를 실행할 EC2 인스턴스를 배포합니다. 이 인스턴스는 Auto Scaling 그룹에 포함
- 필요한 경우 Lambda 함수와 같이 서버리스 컴퓨팅을 일부 활용할 수 있음
- RDS (Relational Database Service)
- RDS를 사용하여 사용자 데이터를 관리하고, Multi-AZ 배포로 고가용성을 확보
- 프라이빗 서브넷에 배치하여 보안을 강화
- S3
- 정적 콘텐츠(사용자 대시보드, 이미지 등)를 호스팅하는 데 사용
- 클라우드 저장소 및 백업으로도 사용 가능
- ELB (Elastic Load Balancer)
- 여러 EC2 인스턴스에 트래픽을 분산하여 고가용성을 유지
- HTTPS를 설정하여 외부 통신을 암호화
(2) 서비스 상호작용 (Service Interactions)
- API Gateway와 Lambda
- API 요청을 처리하기 위해 API Gateway를 사용하고, 특정 요청은 Lambda 함수로 처리하여 서버리스 아키텍처를 구성할 수 있음
- CloudFront
- S3에 저장된 정적 파일을 전 세계 사용자에게 빠르게 전송하기 위해 CloudFront CDN을 설정
- EC2 - RDS 상호작용
- EC2 인스턴스에서 RDS와 통신할 때 SSL 암호화를 사용하여 보안 통신을 보장
- S3
- 사용자가 업로드한 파일은 S3에 저장되며, 백엔드 서비스가 해당 파일을 처리하도록 설정
(3) 보안 설정 (Security Configuration)
- IAM 역할
- 각 서비스가 최소 권한 원칙을 따르도록 IAM 역할을 설정
- EC2, Lambda, RDS에 필요한 권한만 부여하여 과도한 권한을 제한
- 보안 그룹
- EC2 인스턴스는 HTTP(80) 및 HTTPS(443) 포트를 통해 접근 가능하게 설정
- RDS는 EC2 인스턴스에서만 접근할 수 있도록 프라이빗 서브넷 내에서만 접근 허용
- VPC 네트워크 구조
- VPC 내에서 퍼블릭 서브넷과 프라이빗 서브넷을 나누어 데이터베이스는 외부 노출이 되지 않도록 설정
- 프라이빗 서브넷에는 RDS와 같은 중요한 자원들을 배치하고, 퍼블릭 서브넷에는 웹 서버 및 로드 밸런서를 배치
- 암호화
- S3 버킷 및 RDS 데이터를 모두 암호화(SSE-S3 또는 SSE-KMS)
- SSL을 통한 웹 애플리케이션 및 데이터베이스 간의 암호화 통신을 설정
(4) 확장성 계획 (Scalability Planning)
- Auto Scaling
- 트래픽이 증가할 때 EC2 인스턴스를 자동으로 추가하고, 트래픽이 줄어들면 인스턴스를 줄이는 Auto Scaling 정책을 설정
- CPU 사용률, 메모리 사용량 등을 기준으로 트리거를 설정
- Elastic Load Balancer (ELB)
- ELB를 통해 다수의 EC2 인스턴스에 트래픽을 자동으로 분산하여 높은 가용성을 유지
- 헬스 체크를 통해 비정상적인 인스턴스를 자동으로 제외하고 교체하는 설정을 추가
(5) 비용 최적화 전략 (Cost Optimization Strategies)
- EC2 스팟 인스턴스 활용
- 비정기적인 작업에 대해 EC2 스팟 인스턴스를 사용하여 비용을 절감.
- S3 비용 절감
- S3 버킷에 저장된 데이터를 분석하여 자주 사용되지 않는 파일은 Glacier로 이동하여 스토리지 비용 절감
- Auto Scaling으로 리소스 절약
- Auto Scaling을 통해 트래픽이 적을 때는 EC2 인스턴스를 줄여 비용 절감
- Unused Resources
- CloudWatch 및 Trusted Advisor를 활용해 사용하지 않는 리소스(예: 미사용 인스턴스, 비활성 EBS 볼륨 등)를 주기적으로 확인하고 정리
'AWS > PROJECT' 카테고리의 다른 글
| [ 배포 자동화 ] (0) | 2024.10.23 |
|---|---|
| [ 네트워킹 및 로깅 ] (0) | 2024.10.23 |
| [ 개요 ] (0) | 2024.10.23 |