본문 바로가기
Mogatshoo Project

Spring Boot 프로젝트 클라우드 환경배포: Render + Railway 조합 성공

by Developer_TaeJong 2025. 6. 13.

최근 파이널 프로젝트를 클라우드 환경에서 운영해보기 위해 RenderRailway를 활용해 배포와 데이터베이스 구성을 완료했다. 여기에는 성공한 부분과, 시행착오를 겪은 부분도 많아 기록으로 남긴다.


☁️ 사용 기술

  • Render: Spring Boot 프로젝트를 Docker 기반으로 배포 (무료)
  • Railway: MySQL 기반의 클라우드 데이터베이스 (무료)
  • 배포한 사이트: https://mogatshoo.onrender.com/

 


 

🌐 Render로 Spring Boot 애플리케이션 배포하기

 

✅ 성공한 구성

  • Dockerfile 기반으로 Spring Boot 프로젝트를 Render에서 빌드 및 배포
  • .render.yaml을 활용한 소스 경로(rootDir) 및 Dockerfile 위치 지정
  • 무료 플랜으로도 도메인 생성 및 무중단 배포 가능
    •  

Dockerfile 예시

FROM eclipse-temurin:21-jdk
WORKDIR /app
COPY . .
RUN ./gradlew build
CMD ["java", "-jar", "build/libs/mogatshoo-0.0.1-SNAPSHOT.jar"]

 

.render.yaml 예시

services:
  - type: web
    name: mogatshoo
    env: docker
    plan: free
    rootDir: mogatshoo
    dockerfilePath: Dockerfile

 

⚠️ 삽질했던 부분

  • 프로젝트 루트(/)에 .render.yaml, Dockerfile을 두고 배포했지만 실패함
  • 이후 root/mogatshoo 폴더 안으로 .render.yaml, Dockerfile, 전체 프로젝트 소스를 옮기고 rootDir: mogatshoo로 설정해 성공
  • ✅ 핵심: 루트에 있어야 한다기보다 .render.yamlrootDir 설정과 실제 디렉토리 경로가 일치해야 한다
  • JavaMailSender 누락으로 이메일 관련 기능 실패 → spring.mail.* 관련 환경변수 등록으로 해결
  • Firebase 설정 초기화 실패 → 환경변수 누락 원인
  • JAVA_HOME 관련 에러 발생 → Render는 Java 런타임을 기본 제공하지 않으므로 Docker로 JDK 설치해야 함

📁 Railway로 MySQL 클라우드 DB 구성하기

 

✅ 성공한 구성

  • Railway에서 MySQL 인스턴스 생성 후 Public Networking으로 접근 경로 확보
  • maglev.proxy.rlwy.net:<port> 형태의 URL을 JDBC에 설정
  • Spring Boot에서 다음과 같이 연동
  • spring.datasource.url=jdbc:mysql://maglev.proxy.rlwy.net:24681/railway?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Seoul spring.datasource.username=mogatshoo-prod spring.datasource.password=비밀번호

 

⚠️ 삽질했던 부분

  • allowPublicKeyRetrieval not allowed 오류 → JDBC URL에 해당 옵션 추가로 해결
  • Access denied for user 오류 반복 → DB 이름 오타 / 사용자 권한 설정 문제
  • Railway 무료 플랜은 DB 이름, 사용자명, 포트번호 커스텀 불가 (제공된 정보 그대로 사용해야 함)
  • 무료 플랜에서는 유저 생성, DB명 변경, 세부 권한 제어 등이 제한됨
  • Render에서 환경변수 누락 → spring.datasource.*, spring.jpa.* 설정까지 환경변수로 입력해야 연동 성공

📑 마무리 후기

  • Render + Railway 조합으로 클라우드 백엔드와 DB 환경을 완전 무료로 구성 가능
  • Render는 Docker 기반 배포 경험이 있다면 매우 쉬움
  • Railway는 DB만 따로 분리해서 운영 가능해서 실무와 유사한 구조 구성에 적합
  • 단, 무료 플랜에서는 리소스/권한 제약이 있음

 

😓 불편했던 점

  • .properties 파일을 직접 업로드하거나 사용하지 못하고, 모든 설정을 환경변수로 일일이 등록해야 하는 점이 번거로움

 

😍 좋았던 점

  • AWS에서 수동 배포 시 EC2, Route53, HTTPS 인증 등 별도 설정이 필요했지만, Render는 GitHub와 연동해 푸시만 하면 자동 배포 + HTTPS 도메인 제공
  • Render는 서버리스처럼 동작하여 정말 간단하게 운영 가능

📍 정리 요약

항목 Render Railway
역할 Spring 애플리케이션 배포 클라우드 DB 구성
장점 쉬운 설정, Docker 지원, 무료 도메인 제공 URL 기반 접속, 즉시 사용 가능
단점 JAVA_HOME 문제 → Docker 필요 유저 생성 불가, DB명 변경 불가(무료 플랜)
핵심 포인트 .render.yaml, Dockerfile 설정 일치 JDBC URL, 포트번호