클라우드
[CLOUD] 3-Tier Architecture 배포하기 (1)
예림밈
2025. 5. 4. 18:21
이번 포스팅은 실제로 내가 만든 블로그를 3-Tier Architecture 로 배포하려고 한다.
프론트엔드 배포 위주로 담아보겠다.
1. Presentation Tier - (프론트엔드) ✅
역할 : 사용자와 상호작용하는 부분 (웹페이지 UI)
구성 요소 :
- React로 빌드한 정적 파일
- CDN 또는 정적 호스팅 서비스
배포 방식 :
- AWS S3 + CloudFront
- Nginx 서버에서 정적 파일 서빙
- 도메인 연결 및 HTTPS 인증서 적용 (추후 적용 예정)
2. Application Tier - (서버)
역할 : API 처리, 인증, 비즈니스 로직 수행
구성 요소 :
- Springboot 애플리케이션
- 실행 환경 : EC2, ECS, EKS 등
배포 방식 예시 :
- EC2 인스턴스에 Springboot Jar 실행
- Docker 컨테이너 기반 배포 (ECS or EKS)
- Load Balancer 앞단 구성 (ALB 사용 가능)
3. Data Tier - (데이터)
역할: 데이터 저장, 조회 갱신
구성 요소 :
- RDS - MySQL , PostgreSQL 등
배포 과정
✅ 1. React 애플리케이션 정적 파일로 빌드
npm run build
- build/ 폴더에 정적 파일들이 생성됨(index.html, main.js, CSS 등).
- 추후 이 폴더의 내용을 S3에 업로드
✅ 2. S3 버킷 생성 및 설정
S3 버킷 만들기
- AWS 콘솔 > S3 > [버킷 생성]
- 버킷 이름 입력 (예: my-blog)
- 나머지는 기본 설정으로
정적 웹 호스팅 활성화
- S3 버킷 > [속성] 탭 > 정적 웹 사이트 호스팅 > 활성화
- index document: index.html
- (선택) error document: index.html → SPA 라우팅 오류 방지용
✅ 3. 정적 파일 업로드
aws s3 sync build/ s3://myblog
- AWS CLI 설치되어 있어야 함
- S3 콘솔에서도 수동으로 업로드 가능
- --acl public-read는 모든 사용자에게 파일을 읽을 수 있게 해줌 (보안상 CloudFront 사용 시 제거해도 됨)
✅ 4. CloudFront 배포 생성
CloudFront 설정
- AWS 콘솔 > CloudFront > [배포 생성]
- Origin 도메인: S3 버킷 선택 (my-blog.s3.amazonaws.com)
- Viewer Protocol Policy: Redirect HTTP to HTTPS
- Default Root Object: index.html
- (선택) SSL 인증서 연결 → 도메인 연결 시 필요
- 캐시 설정 조정 (정적 리소스 캐싱, index.html은 낮은 TTL 등)
✅ 5. 배포 완료 후 테스트
- CloudFront 도메인: dxxxxxxx.cloudfront.net
- 도메인 주소로 접속하면 React 앱이 뜨는지 확인
- ⚠️ 하지만 해당 도메인 주소로 접속하니 AccessDenied 에러 발생..ㅠ 해결 방법은 https://yerim110324.tistory.com/40 에서 참고하면 된다!
✅ 6. 사용자 도메인 연결 (선택 사항)
- Route53에서 도메인 구입 또는 등록
- CloudFront 배포에 해당 도메인 연결
- AWS Certificate Manager에서 SSL 인증서 발급
- HTTPS 지원 가능
다음 포스팅은 Application Tier 배포 과정을 소개하겠다.