AWS/PROJECT

[ 요구사항 분석, 아키텍처 설계 ]

zhuxiclover 2024. 10. 23. 16:22

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 GatewayLambda
    • 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