ShopEasy AWS 배포 & 보안 실습
이커머스 웹 애플리케이션을 AWS에 배포하고, 보안 서비스를 적용하는 실습 과정
인프라 구축 → 서비스 연결 → 배포 완성 → 보안 강화 → 모니터링 & 정리
ShopEasy 이커머스 - 최종 배포 아키텍처
사용자
웹 브라우저
↓
S3 정적 웹 호스팅
React 프론트엔드
(HTML/CSS/JS)
(HTML/CSS/JS)
↓ API 요청
ShopEasy-VPC (10.0.0.0/16)
Public Subnet (10.0.1.0/24, 10.0.2.0/24)
Internet Gateway
인터넷 연결
→
EC2
Node.js API 서버
포트 5000
포트 5000
NAT Gateway
프라이빗 → 외부
Private Subnet (10.0.100.0/24, 10.0.101.0/24)
RDS MySQL
상품 / 주문 / 회원
IAM Role
EC2 인스턴스 프로파일
→
S3
리뷰 이미지
DynamoDB
리뷰 데이터
CloudWatch
모니터링
ShopEasy 아키텍처 구성 요소
- VPC - 퍼블릭/프라이빗 서브넷으로 분리된 전용 네트워크 (NAT Gateway 포함)
- EC2 (Node.js Express) - 퍼블릭 서브넷에서 포트 5000으로 API 요청 수신
- RDS MySQL - 프라이빗 서브넷, 상품/주문/회원 데이터 저장
- IAM Role - EC2에 AWS 서비스 접근 권한 부여 (Access Key 없이)
- S3 (리뷰 이미지) - 사용자가 업로드한 리뷰 사진 저장
- DynamoDB - 리뷰 데이터 저장 (NoSQL)
- S3 정적 웹 호스팅 - React 프론트엔드 배포
- CloudWatch - EC2, RDS 모니터링 및 경보
실습 환경 안내
- 리전: ap-northeast-2 (서울) 고정
- 도메인 없이 HTTP만 사용 (HTTPS/인증서 불필요)
- AWS Access Key를 코드에 넣지 않음 - IAM Role 사용
- 실습 후 반드시 리소스 정리 (과금 주의!)
인프라 구축
Chapter 01
VPC 네트워크 구축
ShopEasy 전용 네트워크를 만들자 - VPC, 서브넷, IGW, NAT Gateway, 라우트 테이블
Chapter 02EC2 서버 배포
ShopEasy API 서버를 클라우드에 올리자 - EC2 인스턴스, 보안 그룹, Node.js 설치
서비스 연결
Chapter 03
RDS 데이터베이스
SQLite를 진짜 데이터베이스로 교체하자 - RDS MySQL, DB 서브넷 그룹, 보안 그룹
Chapter 04IAM 역할 & 접근 제어
서버에 AWS 서비스 사용 권한을 안전하게 부여하자 - IAM 정책, 역할, 인스턴스 프로파일
배포 완성
Chapter 05
S3 스토리지 + DynamoDB
리뷰 사진은 S3에, 리뷰 데이터는 DynamoDB에 저장하자
Chapter 06프론트엔드 S3 배포
쇼핑몰 화면을 S3에 배포하고 전체 서비스를 테스트하자
보안 강화
Chapter 07
보안 그룹 최적화
SSH 접근을 제한하고 보안 그룹 규칙을 최적화하자
Chapter 08IAM 최소 권한
FullAccess를 제거하고 꼭 필요한 권한만 부여하자
Chapter 09S3 버킷 보안
S3 버킷의 퍼블릭 접근을 최소화하고 안전하게 관리하자
Chapter 10KMS 데이터 암호화
RDS, S3, DynamoDB의 데이터를 KMS로 암호화하자
Chapter 11Secrets Manager 비밀 관리
.env의 DB 비밀번호를 Secrets Manager로 안전하게 관리하자
Chapter 12CloudTrail 감사 로깅
누가 언제 무엇을 했는지 API 호출을 기록하자
Chapter 13GuardDuty 위협 탐지
AWS 계정의 보안 위협을 자동으로 탐지하자