16강 미니 프로젝트(사진 공유 웹사이트)_4 (AWS)

2025. 4. 11. 18:02·프로젝트

📌 개념 정리

이번 실습은 AWS의 EC2, S3, CloudFront, PM2, 로드 밸런서(ELB), 오토 스케일링을 활용하여 이미지 갤러리 웹사이트를 구축하는 전 과정을 담고 있습니다.

  • S3(Simple Storage Service): 객체 스토리지 서비스로 데이터를 저장
  • CloudFront: CDN 서비스로 빠르게 콘텐츠 전달 및 캐싱
  • EC2: 가상 서버 인스턴스로 웹사이트 및 서버 운영
  • PM2: Node.js 서버를 백그라운드에서 관리하는 프로세스 매니저
  • 로드 밸런서(ELB): 트래픽을 여러 서버로 분산하여 안정성 확보
  • 오토 스케일링(Auto Scaling): 사용량에 따라 서버 개수를 자동으로 조정

🚦 동작 원리 및 구조

  1. 사용자가 이미지를 업로드하면 EC2를 통해 S3에 저장됩니다.
  2. 저장된 이미지는 CloudFront를 통해 빠르게 제공됩니다.
  3. 최초 접근 시 CloudFront는 S3에서 콘텐츠를 가져와 캐싱한 후 제공하며, 이후 요청 시 캐시에서 제공됩니다.
  4. PM2를 통해 EC2의 Node.js 서버가 자동으로 관리 및 재실행됩니다.
  5. 로드 밸런서를 통해 트래픽이 다수의 EC2 인스턴스로 분산됩니다.
  6. 오토 스케일링은 트래픽 증가 시 EC2 인스턴스를 자동으로 추가하여 부하를 분산합니다.

💻 코드 예시 및 흐름 분석

  • 이미지 업로드 흐름:
    • 사용자가 이미지를 업로드하면 EC2 서버가 S3 버킷에 저장합니다.
  • 이미지 제공 흐름:
    • 사용자가 CloudFront URL을 통해 이미지를 요청하면 CloudFront가 S3로부터 캐싱한 이미지를 제공합니다.
https://{CloudFront 배포 주소}/{S3 키값}

🧪 실전 사례 및 단계별 진행

  • 개발자 도구에서 확인:
    • 최초 이미지 요청 시: X-Cache: Miss from cloudfront
    • 이후 이미지 요청 시: X-Cache: Hit from cloudfront
  • CloudFront 설정:
    • S3를 Origin으로 설정하고 버킷 정책 설정을 통해 접근 권한 관리
  • PM2 사용법:
    • EC2 인스턴스에 PM2를 설치해 Node.js 서버를 백그라운드에서 데몬 형태로 운영
    • EC2 재부팅 시 자동으로 서버 시작 설정 가능
  • 로드 밸런서(ELB) 설정:
    • Application Load Balancer를 설정하여 EC2 인스턴스 간 트래픽 균형 유지
    • 가용 영역 설정으로 특정 영역의 EC2 인스턴스에만 부하 분산
  • 오토 스케일링 설정:
    • 오토 스케일링 그룹을 설정하여 부하가 증가할 경우 자동으로 EC2 인스턴스를 추가
    • 미리 설정된 AMI를 기반으로 자동 확장

🧠 고급 팁 및 자주 하는 실수

✅ 고급 팁:

  • EC2 서버를 PM2로 관리하면 안정적인 서비스 운영 가능
  • 로드 밸런서와 오토 스케일링을 조합하면 급격한 트래픽 증가에도 안정적으로 서비스 운영 가능
  • DNS 및 Route 53을 사용하여 도메인을 설정하고 로드 밸런서와 연결해 실제 서비스 배포 가능

❌ 자주 하는 실수:

  • URL 끝 슬래시(/) 누락으로 접근 오류 발생
  • CloudFront의 ARN과 S3 버킷 이름 오타 발생
  • PM2 설정 시 자동 실행 설정을 빠뜨리는 경우가 많음

✅ 마무리 요약 및 복습 포인트

  • 이미지 업로드 ➡️ S3 저장 ➡️ CloudFront 제공
  • EC2 서버는 PM2를 사용하여 안정적으로 관리
  • 로드 밸런서를 통해 트래픽 분산 및 안정성 향상
  • 오토 스케일링을 설정하여 트래픽 증가 시 자동으로 서버 확장
  • 정확한 설정 및 URL 관리가 필수

이번 실습 내용을 숙지하여 실제 웹 서비스 구축에 적용해 보시기 바랍니다!

'프로젝트' 카테고리의 다른 글

프로젝트 준비(네이버 API와 부동산 관련 데이터)  (0) 2025.04.15
Chapter 1 네이버 정적 스크랩핑,크롤러 프로젝트  (0) 2025.04.14
16강 미니 프로젝트(사진 공유 웹사이트)_3 (AWS)  (0) 2025.04.11
16강 미니 프로젝트(사진 공유 웹사이트)_2 (AWS)  (0) 2025.04.11
16강 미니 프로젝트(사진 공유 웹사이트)_1 (AWS)  (0) 2025.04.11
'프로젝트' 카테고리의 다른 글
  • 프로젝트 준비(네이버 API와 부동산 관련 데이터)
  • Chapter 1 네이버 정적 스크랩핑,크롤러 프로젝트
  • 16강 미니 프로젝트(사진 공유 웹사이트)_3 (AWS)
  • 16강 미니 프로젝트(사진 공유 웹사이트)_2 (AWS)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (597) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (10)
      • 특강 (29)
      • 기술블로그 (32)
      • 기술블로그-Django편 (136) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4) N
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (61)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
16강 미니 프로젝트(사진 공유 웹사이트)_4 (AWS)
상단으로

티스토리툴바