클라우드 호스팅 설정 - 100-hours-a-week/16-Hot6-wiki GitHub Wiki

클라우드 호스팅 설정

1. 개요

onthe-top.com 도메인을 기반으로 한 Dev 환경(dev.onthe-top.com) 클라우드 호스팅 설정 과정을 설명합니다.
AWS와 GCP를 연동하여 도메인 관리, 웹서버(Nginx), 백엔드(Spring Boot), AI API 서버, MySQL 데이터베이스를 통합 운영하는 구조로 구성되었습니다.


2. 도메인(DNS) 설정

  • 관리 플랫폼: 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에 위치함.

3. 클라우드 인프라 구조

다이어그램

alt text

3.1. 전체 흐름

  1. 개발자는 GitHub에 코드를 푸시합니다.
  2. 클라우드 엔지니어는 GitHub에 푸시된 코드를 빌드 및 배포합니다.
  3. 빌드 결과물은 GCP Compute Engine VM 서버에 배포됩니다.
  4. Nginx 서버는 도메인 요청을 받아, 내부 프론트엔드, 백엔드, AI 서버로 라우팅합니다.

3.2. 주요 구성 요소

구성요소 설명
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에 배치된 데이터베이스 서버

4. 서버 내 포트 매핑

서비스 포트 설명
Nginx 80 (HTTP), 443 (HTTPS 예정) 외부 요청 수신
  • Nginx가 외부 HTTPS 요청을 처리하고, 내부 백엔드/프런트엔드 서버로 라우팅합니다.

5. 운영 흐름 요약

  1. dev.onthe-top.com으로 접속 시 AWS Route 53이 GCP VM의 퍼블릭 IP로 포워딩합니다.
  2. GCP VM의 Nginx 서버가 요청을 수신하고, 요청 경로에 따라 Frontend(React), Backend(Spring Boot) 서버로 분배합니다.
  3. Backend 서버는 필요 시 Private Subnet에 위치한 MySQL 데이터베이스에 직접 연결하여 데이터를 조회/저장합니다.
  4. 모든 트래픽은 퍼블릭 네트워크를 통해 들어오지만, 민감한 데이터베이스 서버는 퍼블릭 접근 없이 Private Subnet에만 존재합니다.

6. 향후 계획

  • ACM + SSL 적용: Nginx에 AWS ACM 인증서를 적용하여 HTTPS 보안 연결 강화(example.onthe-top.com) alt text

  • CI/CD 자동화: GitHub Actions, Cloud Build, Jenkins 등을 활용하여 코드 푸시 → 자동 빌드 및 배포까지 연결

  • 모니터링 도입: Cloud Monitoring, Prometheus, Grafana 등을 활용해 인프라 및 애플리케이션 상태 모니터링

  • Auto Scaling 검토: 트래픽 증가 시 자동 확장을 위한 GCP Instance Group 활용 검토

⚠️ **GitHub.com Fallback** ⚠️