클라우드 호스팅 설정 - 100-hours-a-week/16-Hot6-wiki GitHub Wiki
onthe-top.com
도메인을 기반으로 한 Dev 환경(dev.onthe-top.com
) 클라우드 호스팅 설정 과정을 설명합니다.
AWS와 GCP를 연동하여 도메인 관리, 웹서버(Nginx), 백엔드(Spring Boot), AI API 서버, MySQL 데이터베이스를 통합 운영하는 구조로 구성되었습니다.
- 관리 플랫폼: AWS Route 53
-
등록 도메인:
onthe-top.com
-
레코드 구성:
- NS (Name Server): 도메인 기본 네임서버 설정
- SOA (Start of Authority): DNS 시작점 정보
- CNAME: 인증서 발급 및 기타 설정용으로 사용
-
A 레코드 (dev.onthe-top.com):
- 타입: A 레코드
- 값: GCP Compute Engine의 퍼블릭 IP(
34.47.9.x
)를 직접 가리킴
-
A 레코드 (example.onthe-top.com):
- 테스트용으로 별도 생성됨
-
dev.onthe-top.com
→ GCP VM(Nginx 서버)로 연결 - DNS를 AWS Route 53에서 관리하지만, 실제 서버는 GCP Compute Engine에 위치함.
- 개발자는 GitHub에 코드를 푸시합니다.
- 클라우드 엔지니어는 GitHub에 푸시된 코드를 빌드 및 배포합니다.
- 빌드 결과물은 GCP Compute Engine VM 서버에 배포됩니다.
- Nginx 서버는 도메인 요청을 받아, 내부 프론트엔드, 백엔드, AI 서버로 라우팅합니다.
구성요소 | 설명 |
---|---|
Route53 | AWS 상의 도메인(DNS) 관리 |
S3 | 정적 파일 저장소 (업로드용) |
GCP VPC | 네트워크 분리 (Public, Private Subnet) |
Compute Engine (OntheTop-Server) | Nginx, Frontend(React), Backend(SpringBoot), AI 서버 통합 운영 |
Nginx | 리버스 프록시: 클라이언트 요청을 백엔드 및 프론트로 분배 |
MySQL Compute Engine | 별도의 Private Subnet에 배치된 데이터베이스 서버 |
서비스 | 포트 | 설명 |
---|---|---|
Nginx | 80 (HTTP), 443 (HTTPS 예정) | 외부 요청 수신 |
- Nginx가 외부 HTTPS 요청을 처리하고, 내부 백엔드/프런트엔드 서버로 라우팅합니다.
-
dev.onthe-top.com
으로 접속 시 AWS Route 53이 GCP VM의 퍼블릭 IP로 포워딩합니다. - GCP VM의 Nginx 서버가 요청을 수신하고, 요청 경로에 따라 Frontend(React), Backend(Spring Boot) 서버로 분배합니다.
- Backend 서버는 필요 시 Private Subnet에 위치한 MySQL 데이터베이스에 직접 연결하여 데이터를 조회/저장합니다.
- 모든 트래픽은 퍼블릭 네트워크를 통해 들어오지만, 민감한 데이터베이스 서버는 퍼블릭 접근 없이 Private Subnet에만 존재합니다.
-
ACM + SSL 적용: Nginx에 AWS ACM 인증서를 적용하여 HTTPS 보안 연결 강화(example.onthe-top.com)
-
CI/CD 자동화: GitHub Actions, Cloud Build, Jenkins 등을 활용하여 코드 푸시 → 자동 빌드 및 배포까지 연결
-
모니터링 도입: Cloud Monitoring, Prometheus, Grafana 등을 활용해 인프라 및 애플리케이션 상태 모니터링
-
Auto Scaling 검토: 트래픽 증가 시 자동 확장을 위한 GCP Instance Group 활용 검토