코드 저장소.

프로젝트 배포1 - 수동 인프라 세팅 본문

포폴/일정관리앱

프로젝트 배포1 - 수동 인프라 세팅

slown 2025. 5. 17. 15:36

목차

1. 들어가며

2. 가비아 연결 도메인(A레코드 설정)

3. AWS Lightsail 인스턴스 설정

4.RDS(MySQL 설정)

5.회고

 

1. 들어가며

 

현재 진행 중인 일정 관리 프로젝트의 첫 번째 배포 환경을 구성하면서 겪은 과정을 기록합니다. 프론트엔드는 Next.js, 백엔드는 Spring Boot 멀티모듈 구조이며, AWS Lightsail, RDS(MySQL), S3, 가비아 도메인을 활용해 실서비스 환경을 구축했습니다.

왜 이렇게 인프라를 구성했는가?

이번 인프라 설계의 핵심 기준은 "비용 효율성, 학습 난이도, 기능별 분리"였습니다.

  • 도메인(GABIA): 국내 도메인 업체 중 가장 직관적이고 저렴한 가격. DNS 설정 UI가 단순해 초보자에게 적합했습니다.
  • Lightsail: EC2보다 저렴하면서도 고정 IP, 빠른 부트스트랩, SSH 및 방화벽 설정을 간편하게 제공하여 소규모 서비스에 최적.
  • RDS(MySQL): 직접 DB를 인스턴스에 설치하는 것보다 백업, 모니터링, 확장 측면에서 유리하며 실무에서도 가장 많이 쓰이는 조합이기 때문에 채택.
  • S3 + Presigned URL: 이미지 업로드 기능이 있는 일정 서비스의 특성상, 파일 보안 및 비용, 확장성을 고려하여 로컬 스토리지가 아닌 S3 기반으로 전환.

이러한 인프라 구성을 통해 실제 운영 환경과 유사한 조건을 학습하고, 확장 및 고도화에도 대비할 수 있는 구조를 설계하는 것이 목표였습니다.

2. 가비아 연결 도메인(A레코드 설정)

가비아에서 도메인을 구입하고, AWS Lightsail에서 발급받은 고정 IP와 연결하는 과정을 진행했습니다. 도메인을 실제 운영 서비스에 연결하는 것은 프로젝트 배포의 첫 관문이며, 아래와 같은 순서로 설정을 마쳤습니다.

도메인 구매 및 DNS 설정 절차

  1. 가비아 홈페이지에 접속 후 회원가입
  2. 원하는 도메인 검색 → 결제 후 도메인 소유 ( schedulemanagement.site)
  3. "내 도메인 관리" > "DNS 관리" 메뉴로 이동
  4. A 레코드 추가
    • 호스트: @ → 값: Lightsail 고정 IP
    • 호스트: www → 값: 동일한 Lightsail 고정 IP
  5.  TTL(Time to Live)은 기본값 유 지
  6. 저장 후 반영까지 5분 ~ 최대 수시간 소요됨

3. AWS Lightsail 인스턴스 설정

LightSail 인스턴스 설정은  아래와 같이 합니다. 

  1. AWS Lightsail 콘솔 접속
  2. "인스턴스 생성" 클릭
  3. 플랫폼: "Linux/Unix", 블루프린트: "OS Only" > Ubuntu 24.04 선택
  4. 인스턴스 이름 지정 후 생성
  5. 생성 후 "네트워킹" 탭으로 이동하여 고정 IP 생성 및 연결
  6. "네트워킹" 탭에서 방화벽 포트 설정
    • 포트: TCP 22 (SSH), 80 (HTTP), 443 (HTTPS), 8080 (SpringBoot용), 3306(Aurora/MySQL전용) 추가.

💡 고정 IP는 변경되지 않기 때문에 도메인 연결 시 필수로 사용해야 함

 

 

4.RDS(MySQL 설정)

  • MySQL 8.0 버전 선택
  • 퍼블릭 액세스 허용 ON
  • 보안 그룹 설정: Lightsail 인스턴스 IP 허용

5.회고

이번 1차 배포는 "실제로 돌아가는 서버"를 만들기 위한 최소 단위의 구성 작업이었습니다. 초기 목표였던 도메인 연결, 애플리케이션 서버 배포, DB 연동, 파일 저장소 구성까지 손수 구축하면서, 단순히 코드를 작성하는 것보다 훨씬 복잡한 인프라 환경에 대해 감을 잡을 수 있었다.

가장 어려웠던 점

  • 도메인 연결: 가비아 DNS 설정 반영이 느려서 문제 원인 파악에 시간 낭비
  • RDS 연결: 퍼블릭 액세스 및 보안 그룹 설정 누락 → DB 접근 실패

얻은 인사이트

  • 실서버 운영은 코드보다 인프라가 더 중요할 수 있다는 사실
  • AWS 리소스 간 연결 구조(도메인 → IP → 서버 → DB → 파일저장소)의 흐름 체득

다음 개선 과제

  • 자동화 도입: 매번 SSH 접속해서 배포하지 않도록 GitHub Actions + Jib 도입
  • 모니터링 강화: 애플리케이션 상태를 시각화하고 이상 징후를 빠르게 포착할 수 있는 구조 필요
  • 보안 및 정리: HTTP 포트 차단 및 인증서 갱신 자동화 스크립트 필요