[SpringBoot] CloudType으로 간단하게 SpringBoot 서버 배포하기

2024. 11. 12. 22:14·SpringBoot

`2024/11/12 현재 프리티어로 CloudType 배포 시 하루에 한 번 무조건 서버가 종료되도록 바뀌었습니다!! 이 점 유의해주세요.`

 

프로젝트를 하면서 내가 짠 코드를 프론트와 통합하게 되었다.

 

나는 내 로컬 주소가 프론트에서 접속이 될 거라 생각했고 그 주소로 통신을 시도했다.

 

하지만 로컬 주소는 특별한 설정이나 터널링 같은 방법을 사용해야 외부에서 내 주소로 접속을 할 수 있다.

 

그래서 프론트에서 내 로컬로 접속을 시도했을 때 에러가 떴다.

 

막막하던 와중 클라우드 컴퓨팅 에 대해 알게 되었고, AWS와 네이버 클라우드 플랫폼을 찾을 수 있었다.

 

그런데 클라우드 서비스를 처음 접해본지라 진입장벽이 높아 서버를 배포하는데 어려움이 있었다.

 

그러다 주위에서 간단하게 배포할 수 있는 CloudType에 대해 알게 되었다.


이제 내가 짠 코드를 CloudType에 배포하는 과정을 작성해보겠다. 

 

그 전 클라우드 컴퓨팅에 대해 알아보자.

클라우드 컴퓨팅 서비스

`클라우드 컴퓨팅 서비스`는 인터넷을 통해 컴퓨팅 리소스와 데이터를 제공하는 서비스이다. 

 

사용자가 컴퓨터 하드웨어, 소프트웨어 등의 리소스를 직접 구입, 관리, 유지할 필요 없이 필요한 만큼의 컴퓨팅 리소스를 요금제 형태로 이용할 수 있게 한다.


클라우드 컴퓨팅 서비스는 세 가지로 나눠진다.


`Infrastructure as a Service (IaaS)`: 가상화된 하드웨어 리소스를 제공하는 서비스로, 서버, 스토리지, 네트워크 등의 기본적인 컴퓨팅 자원을 제공한다. 사용자는 이 위에 운영체제, 미들웨어 등을 올려 운영할 수 있다. 대표적인 예로는 Amazon의 AWS EC2, Google Compute Engine 등이 있다.

`Platform as a Service (PaaS)`: 하드웨어와 운영체제를 포함한 플랫폼을 제공하는 서비스로, 사용자는 개발에 필요한 라이브러리, 도구 등을 제공받아 애플리케이션 개발에 집중할 수 있다. 대표적인 예로는 Google App Engine, Microsoft Azure 등이 있다.

`Software as a Service (SaaS)`: 사용자가 인터넷을 통해 소프트웨어를 이용하는 서비스로, 사용자는 소프트웨어의 설치, 업데이트, 유지보수 등을 신경 쓸 필요 없이 해당 소프트웨어를 이용할 수 있다. 대표적인 예로는 Google Docs, Dropbox, Salesforce 등이 있다.

우리가 사용할 `클라우드타입`은 각종 언어로 작성된 어플리케이션 및 SaaS 서비스를 빠르고 편리하게 배포할 수 있는 컨테이너 기반 PaaS 클라우드 서비스이다. 

 

VM 및 VPS 기반의 클라우드와는 다른 특성을 가지고 있다.

클라우드 타입 배포

https://cloudtype.io/

 

모두의 플랫폼팀, 클라우드타입

복잡한 클라우드 설정 없이 10분 만에 서비스를 배포하고 운영하는 방법, 클라우드타입

cloudtype.io

프로젝트 생성

먼저 클라우드 타입 홈페이지로 들어가 시작하기를 눌러준다. 

 

나는 깃허브 계정으로 회원가입을 했다. 

 

로그인을 했다면 새 프로젝트를 만들어주자. 

 

프로젝트에서 + 버튼을 누르면 된다.

mariadb 서버 배포

프로젝트가 만들어졌다면 프로젝트 내의 파란색 + 버튼을 눌러서 배포를 시작하자.

 

먼저 mariadb 서버를 열어주자.

 

로컬 db를 쓰면 글 첫 문단의 이유로 통신을 할 수 없다.

설정해줘야 될 건 Root Password와 Database Name이다.

 

 Root Password에는 접속할 때 비밀번호를 입력해주고, Database Name에는 생성할 스키마의 이름을 입력해준다.

mariadb 배포가 성공적으로 완료되었다.

TCP 설정

이제 TCP 외부 접속을 허용해보자.

 

프로젝트 우측 상단의 설정 버튼을 눌러 하단의 방화벽 항목에서 TCP 외부 접속을 허용해준다.

mariadb 연결설정

스프링부트 서버를 배포하기 전에 application.properties 설정을 변경해줘야 한다. 

 

기존에는 자기 로컬 데이터베이스의 주소로 연결되어 있었을 것이다.

spring.datasource.url=jdbc:mariadb://svc.sel5.cloudtype.app:31838/User?characterEncoding=UTF-8?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password={password}
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.hibernate.ddl-auto = update
spring.jpa.show-sql=true

- datasource의 url을 배포했던 마리아디비의 도메인으로 변경해준다.


- `createDatabaseIfNotExist=true` 설정으로 스키마를 자동생성해준다.


- password는 mariadb를 배포할 때 설정했던 비밀번호다. 자신이 배포한 비밀번호에 맞게 작성하면 된다.

스프링부트 서버 배포

이제 개발한 스프링부트 코드를 배포해보자.

 

 나는 깃허브 레포지토리에 코드를 커밋해놓은 상태라서 내 Github 저장소 배포하기를 했다.

개별 브랜치를 적용해서 배포를 할 수도 있다. 

 

언어/프레임웍을 Spring Boot로 설정해주고 자바의 버전도 설정해준다.

 

자신이 개발하고 있는 스프링부트의 java 버전과 맞게 해주면 된다.

TimeZone 설정

Environment Variables(환경변수)에 TZ 와 설정을 희망하는 시간대 값을 입력하여 배포를 진행하면 환경변수로 설정된 값은 JVM 구동 시 주입되어 Spring 어플리케이션에 적용된다.

 

TZ : Asia/Seoul 을 하게 되면 우리나라의 시간으로 설정이된다.

배포 성공

실행 중이 뜨면 성공이다.

실행 로그도 볼 수 있다.

이제 로컬 주소로 보냈던 요청들을 스프링 부트로 배포한 도메인 주소로 변경하여 요청을 보내면 똑같이 요청이 가능하다. 

 

프론트에서도 도메인 주소로 적용하여 요청을 보내면 된다.

잘못된 부분이 있으면 댓글 부탁드립니다!

참고자료 : https://azure.microsoft.com/ko-kr/resources/cloud-computing-dictionary/what-is-cloud-computing

 

'SpringBoot' 카테고리의 다른 글

[SpringBoot] AWS EC2, Jenkins를 사용해 깃허브 웹훅 연결하기  (0) 2024.11.12
[SpringBoot] AWS EC2 Amazon Linux 인스턴스에 젠킨스 설치하기  (0) 2024.11.12
[Spring Boot] WebSocket을 활용한 실시간 쪽지 기능 구현(2)  (2) 2024.11.12
[Spring Boot] WebSocket을 활용한 실시간 쪽지 기능 구현(1)  (0) 2024.11.12
[Spring Boot] DB 데이터가 생성될 때 칼럼의 초깃값 설정  (0) 2024.11.12
'SpringBoot' 카테고리의 다른 글
  • [SpringBoot] AWS EC2, Jenkins를 사용해 깃허브 웹훅 연결하기
  • [SpringBoot] AWS EC2 Amazon Linux 인스턴스에 젠킨스 설치하기
  • [Spring Boot] WebSocket을 활용한 실시간 쪽지 기능 구현(2)
  • [Spring Boot] WebSocket을 활용한 실시간 쪽지 기능 구현(1)
l0o0lv(한동근)
l0o0lv(한동근)
  • l0o0lv(한동근)
    개발하는 와플대조교
    l0o0lv(한동근)
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • SpringBoot (10)
      • 잡다한 개발지식 (1)
      • 코딩테스트 (47)
        • SWEA (43)
        • 프로그래머스 (0)
        • 백준 (4)
      • 알고리즘 (1)
      • 회고 (0)
      • 운동 (0)
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • 태그

    합 배열
    ec2
    실시간 쪽지
    jenkins
    리버스 프록시
    websocket
    알고리즘
    구간 합
    cloudtype
    webhook
    springboot
    어려웠던 문제
    gitlab
    SWEA
    무중단 배포
    백준
    prepersist
    EUREKA
    MSA
    coolsms
  • hELLO· Designed By정상우.v4.10.0
l0o0lv(한동근)
[SpringBoot] CloudType으로 간단하게 SpringBoot 서버 배포하기
상단으로

티스토리툴바