TIL - 20251019

juni·2025년 10월 18일

TIL

목록 보기
157/316

1019 AWS 핵심 개념 요약 (Part 2/2): 고가용성 및 배포 아키텍처


✅ 1. 고가용성 및 탄력성 아키텍처

  • 장애와 트래픽 변동에 자동으로 대응하여 안정적인 서비스를 제공하기 위한 핵심 서비스 조합입니다.
  1. ELB (Elastic Load Balancing):

    • 역할: 들어오는 트래픽을 여러 EC2 인스턴스에 자동으로 분산하고, 헬스 체크(Health Check)를 통해 장애가 발생한 인스턴스를 격리하여 고가용성을 확보합니다.
    • SSL Offloading: HTTPS 통신에 필요한 SSL 암호화/복호화 작업을 ELB가 대신 처리하여 EC2 인스턴스의 부하를 줄여줍니다.
  2. EC2 Auto Scaling:

    • 역할: CPU 사용률과 같은 지표를 모니터링하여, 정의된 조정 정책에 따라 EC2 인스턴스의 수를 자동으로 늘리거나(Scale-out) 줄여(Scale-in) 탄력성을 제공합니다.
    • 시너지: ELB와 Auto Scaling을 함께 사용하면, 트래픽 변화에 자동으로 대응하는 자가 치유(Self-healing) 아키텍처가 완성됩니다.

✅ 2. 관리형 데이터베이스: RDS (Relational Database Service)

  • RDS: AWS가 설치, 패치, 백업, 장애 조치 등 복잡한 관리 작업을 대신 처리해주는 완전 관리형 관계형 데이터베이스 서비스입니다.

  • 주요 기능:

    1. 고가용성 (Multi-AZ):
      • 주(Primary) DB를 다른 AZ의 예비(Standby) DB에 실시간으로 동기 복제합니다.
      • 주 DB 장애 시, AWS가 자동으로 예비 DB로 장애 조치(Failover)하여 서비스 중단을 최소화합니다.
    2. 읽기 성능 확장 (Read Replicas):
      • 읽기 전용 복제본을 여러 개 생성하여 읽기(SELECT) 트래픽을 분산시킬 수 있습니다. 이를 통해 원본 DB의 부하를 줄이고 애플리케이션의 전체 읽기 성능을 크게 향상시킬 수 있습니다.

✅ 3. Full-Stack 배포 아키텍처

  • 백엔드(API 서버)와 프론트엔드(React 앱)를 독립적으로 배포하고, 도메인을 통해 서비스를 제공하는 표준 아키텍처입니다.

➕ DNS 및 HTTPS

  • Route 53: 구매한 도메인의 DNS를 관리하는 서비스. 도메인 요청을 적절한 AWS 리소스(ALB, CloudFront)로 연결해주는 교통경찰 역할을 합니다.
  • ACM (AWS Certificate Manager): HTTPS 통신에 필수적인 무료 SSL/TLS 인증서를 발급합니다. (ALB/CloudFront용은 us-east-1 리전에서 발급)

➕ 백엔드 배포 (Spring API)

  • 아키텍처: 사용자Route 53 (api.mydomain.com)ALB (HTTPS 처리)EC2 Auto Scaling GroupEC2 인스턴스RDS
  • 핵심:
    • EC2프라이빗 서브넷에 배치하여 보안을 강화합니다.
    • ALB퍼블릭 서브넷에 배치되어 외부 요청을 받아 EC2로 전달합니다.
    • EC2와 RDS보안 그룹을 통해 안전하게 통신합니다.

➕ 프론트엔드 배포 (React App)

  • 아키텍처: 사용자Route 53 (mydomain.com)CloudFront (CDN 캐시 & HTTPS)S3 버킷
  • 핵심:
    • 빌드된 정적 파일은 S3에 저장합니다.
    • CloudFront(CDN)는 전 세계 사용자에게 S3의 콘텐츠를 빠르고 안전하게 전달하는 역할을 합니다.
    • SPA의 클라이언트 사이드 라우팅을 위해, CloudFront에서 에러 발생 시 index.html로 리다이렉트하는 설정이 필수적입니다.

✅ 4. 컨테이너화 및 자동 배포

  • Docker: 애플리케이션과 그 실행 환경을 컨테이너에 담아, 어디서든 동일하게 실행할 수 있도록 하는 기술.

    • Dockerfile: 이미지를 만들기 위한 설계도.
    • Docker Compose: 여러 컨테이너(e.g., 웹 서버 + DB)를 하나의 yml 파일로 정의하고 관리하는 도구.
  • CI/CD (지속적 통합/배포): 개발부터 배포까지의 과정을 자동화하는 것.

    • GitHub Actions: Git 푸시와 같은 이벤트를 감지하여, [빌드 → 테스트 → Docker 이미지 생성 → Docker Hub 푸시 → EC2 접속 → 컨테이너 실행]으로 이어지는 전체 배포 과정을 자동화합니다.
  • Kubernetes (EKS): 대규모 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하기 위한 컨테이너 오케스트레이션 플랫폼.

    • Pod: 가장 작은 배포 단위.
    • Deployment: Pod의 개수와 버전을 관리하며 자동 복구, 무중단 업데이트를 지원.
    • Service: 변하기 쉬운 Pod들에게 고정된 IP와 로드 밸런싱을 제공.
    • EKS: AWS에서 제공하는 관리형 쿠버네티스 서비스.

📌 요약

  • ELB와 Auto Scaling은 장애와 트래픽 변동에 자동으로 대응하는 고가용성 및 탄력성 아키텍처의 핵심입니다.
  • RDSMulti-AZ로 고가용성을, Read Replica로 읽기 성능 확장을 손쉽게 구현할 수 있는 관리형 데이터베이스입니다.
  • 현대적인 Full-Stack 배포백엔드(EC2/ALB)프론트엔드(S3/CloudFront)를 분리하여 독립적으로 관리합니다.
  • DockerGitHub Actions를 이용한 CI/CD 파이프라인은 배포 과정을 자동화하여 개발 생산성을 극대화하며, Kubernetes(EKS)는 이를 더 큰 규모에서 안정적으로 운영할 수 있게 해줍니다.

0개의 댓글