📌 개념 정리
이번 실습은 AWS의 EC2, S3, CloudFront, PM2, 로드 밸런서(ELB), 오토 스케일링을 활용하여 이미지 갤러리 웹사이트를 구축하는 전 과정을 담고 있습니다.
- S3(Simple Storage Service): 객체 스토리지 서비스로 데이터를 저장
- CloudFront: CDN 서비스로 빠르게 콘텐츠 전달 및 캐싱
- EC2: 가상 서버 인스턴스로 웹사이트 및 서버 운영
- PM2: Node.js 서버를 백그라운드에서 관리하는 프로세스 매니저
- 로드 밸런서(ELB): 트래픽을 여러 서버로 분산하여 안정성 확보
- 오토 스케일링(Auto Scaling): 사용량에 따라 서버 개수를 자동으로 조정
🚦 동작 원리 및 구조
- 사용자가 이미지를 업로드하면 EC2를 통해 S3에 저장됩니다.
- 저장된 이미지는 CloudFront를 통해 빠르게 제공됩니다.
- 최초 접근 시 CloudFront는 S3에서 콘텐츠를 가져와 캐싱한 후 제공하며, 이후 요청 시 캐시에서 제공됩니다.
- PM2를 통해 EC2의 Node.js 서버가 자동으로 관리 및 재실행됩니다.
- 로드 밸런서를 통해 트래픽이 다수의 EC2 인스턴스로 분산됩니다.
- 오토 스케일링은 트래픽 증가 시 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 |