Spring

[Spring] Spring Boot + Oracle Cloud 연동하여 배포하기 [1] - 인스턴스 할당받기

PlatinumeOlive 2024. 4. 3. 23:08

서론

이번 포스팅에서는 스프링 부트와 오라클 클라우드를 연동하여 프로젝트를 진행했던 경험을 작성해보려고 합니다.

 

아직 오라클 클라우드를 연결 할 때 참고할 자료도 많이 없고 아마존과도 방식이 달라서 엄청난 삽질을 해댔고, 중간에 아마존으로 지금이라도 바꿀까? 라는 고민도 많이 했지만 결국 이렇게 마쳐서 글을 쓰게 되었습니다ㅎㅎ

 

가장 불편했던 점을 생각하면, 저처럼 스프링 부트 + 오라클 클라우드 인스턴스 + 버킷 + 데이터 베이스 네개를 동시에 알려주는 자료가 없었고, Gradle 프로젝트에 적용하는 참고할만 한 블로그가 없었다는것 같습니다. 그래서 직접 이렇게 글을 작성하게 되었습니다.

 

먼저, 저는 스프링 부트 3.x 버전을 사용하여 프로젝트를 진행하였습니다. 보니까 Maven 방식으로도 많이 하시는거 같은데, 저는 그냥 편하게 gradle로 했습니다..

 

이렇게 처음부터 끝까지 진행과정을 남겨본 경험이 많지 않아, 글이 두서 없어도 이해하고 봐주시면 감사하겠습니다. 혹시 이해가 안되는 내용이나 질문은 댓글 남겨주시면 성심성의껏 답변 남길게요 ㅎㅎ

아마존 프리티어도 완전 무료는 아니다 

저는 기존에 AWS 프리티어를 이용하여 프로젝트를 진행하였습니다. 참고자료도 많고 라이브러리도 잘 되어있어 훨씬 수월하게 진행하였지만, 오라클 클라우드로 이민가게된 이유가 있습니다.

 

처음에 프리티어라고 해서, 돈이 안나가는줄 알았는데 갑자기 카드가 결제되어서 후다닥 달려가보니 요금이 생겼습니다.

제가 잘못설정해서 그럴 수도 있어요

 

2024년 2월 1일부로, Public Ipv4에 대해 요금을 부과한다고 합니다. 대략 한달에 3.65$정도 나온다고 합니다. 나름 잘 쓰고 있었는데 당황스럽기도 하고, 프로젝트를 하지 않을때 유지하고 있기도 부담스러워 하던 차에, 지인으로 부터 오라클 클라우드에는 평생 무료 요금제가 있다는 말을 듣고 이민을 결심하게 되었습니다.

 

혹시 다른 서비스는 어떤지도 찾아보았으나, 역시 평생 소장할 수 있는 오라클 클라우드가 제일 매력적인 선택지였습니다. 프로젝트 별로 배포는 다르게 할 지언정, 작은 토이프로젝트를 진행할 때 평생 써먹을 수 있기 때문이죠ㅎㅎ

 

클라우드 비교 표

 

기존 제가 사용한 AWS 방식에서 오라클로 이민을 간다면, 아래 그림처럼 대응 관계가 생깁니다.

 

저는 이번 포스팅에 아래 네개를 모두 설정해 사용하는 방법을 작성하려고 합니다.

기존의 EC2 컴퓨터는 오라클 클라우드 컴퓨트가 대신하게 될 것이고, 오브젝트 업로드를 위한 S3 Bucket은 오라클 버킷으로 대신합니다. 또한 RDS 서비스는 오라클 자율운영 데이터베이스를 사용합니다.

 

아무래도 자사 DB를 사용하게 하는게 당연하겠죠? (한번도 안써보긴 했는데..)

어떤 글을 보니 오라클 인스턴스 내부에 Mysql을 다운로드 시켜서 사용하게 하던데, 그렇게 하면 저의 경우에는 서버가 자꾸 죽어버리더라구요... 정확히 Mysql을 사용해서 그런진 모르겠지만 아마 영향이 없진 않을 듯 합니다.

 

서버 로그에 찍힌 Mysql 에러

그래서 ! 그냥 오라클 DB를 사용한 자율운영 데이터 베이스를 사용하려고 합니다. 막상 해보니 별로 차이 있지는 않은거 같았습니다. 이제 본격적으로 설정을 시작해보겠습니다.

오라클 클라우드 서버 할당 받기

오라클 클라우드 가입

오라클 클라우드 가입 방법은 따로 다루진 않겠습니다. JDK를 받는 오라클과는 별개로 가입을 해야하며, 카드 인증시 싱가폴 달러가 잠깐 결제 되었다가 취소되는데, 확인용 절차이기 때문에 실제 결제로 이어지진 않습니다.

나중에 비용이 초과되는 상황이 생기면 알림이 가기 때문에, 꼭 자주 사용하는 이메일로 가입하는걸 추천합니다.

 

이제 구획을 생성해야합니다. 쉽게 말하면 디렉토리와 같은 개념인데, ROOT 아래 프로젝트 별 구획을 만들어 인스턴스 등을 관리하는게 깔끔합니다.

 

왼쪽 상단 메뉴 클릭 -> ID & 보안 -> ID -> 구획 으로 이동합니다. 참고로 왼쪽 위를 보면, 저는 지역을 대한민국 북부 춘천으로 미리 설정해두었습니다.

 

 

구획 생성을 마쳤으면, 다시 홈에 들어가서 아래로 스크롤을 내리면 아래와 같은 화면이 있습니다.

VM 인스턴스 생성을 누르고, 원하는 이름을 지정하고 원하는 컴파트먼트(구획)을 선택합니다.

 

 

이미지 및 구성 편집을 누르고, 위 이미지 변경 버튼을 클릭해 원하는 이미지를 선택합니다. 기본으로 Oracle 8이 되어있는데, 저는 로컬에서도 우분투 22.04를 사용하고 있어 익숙한 우분투를 골랐습니다. 나머지도 많으니 원하시는걸 선택하면 될 것 같습니다. 아래 Shape은 기본 설정대로 사용해도 괜찮습니다.

 

 

이어서 위 VNIC이름과 서브넷 이름을 원하는대로 작성합니다. 꼭 같은 구획에 지정해주어야 합니다.

 

이제 서버에 접속할 때 필요한 인증 SSH키를 받아줍니다.

직접 생성해서 사용할 수 있지만, 저는 편의상 그냥 오라클에서 생성해주는 키를 사용하겠습니다. 오라클이 들고 있는 public 키에 맞는 private 키입니다. private 키와 public 키를 모두 다운받아도 되고, 아니면 private만 받아도 되는데, 아무튼 private는 포함하여 받아서, 원하는 위치에 저장하도록 합니다. 이 private 키는 절대 잃어버려서도, 외부에 노출되어서도 안됩니다.

생서 완료 화면

이제 인스턴스 할당을 완료했습니다. 다음으로 해야할 일은, 우리가 할당받은 인스턴스에 접속할 수 있도록 수신 규칙을 설정해주어야 합니다.

 

수신 규칙 설정

수신 규칙은 간단하게 말해서, 외부에서 현재 web server에 있는 서비스로 접속할 때, 지켜야 하는 규칙입니다. 이것을 설정하기 위해서는 내 인스턴스 세부정보 -> 서브넷 링크를 클릭하여 서브넷 세부정보로 이동해야 합니다.

 

서브넷 -> 보안 목록을 클릭하여 위와 같이 설정해줍니다. 작은 프로젝트용이기 때문에, 여러가지 포트를 열어주도록 하겠습니다.

  • 80 : HTTP
  • 8080 : HTTP
  • 443 : HTTPS
  • 22 : SSH
  • 3306 : Mysql

저희는 MySql을 사용하지 않기 때문에 열지 않아도 되지만, 습관적으로 열어버렸습니다. 만약 Mysql을 사용하는 분이 있다면 열면 됩니다.

고정 Ipv4 할당 받기

인스턴스를 생성하면 공용 IP를 할당받아 이것을 통해 외부에서 서버로 접속하게 됩니다. 이때 할당 받는 공용 IP는 인스턴스 재부팅시에 아이피가 변경되게 됩니다. 

 

때문에 우리는 이 아이피를 고정해주어야 합니다. 다행히 오라클에서는 AWS 프리티어와는 다르게, 고정IP 하나를 무료로 제공합니다.

 

아래 빨간 밑줄 메뉴를 따라서, IPv4 편집을 누르면 아래와 같은 화면에서, 예약된 공용 IP를 생성하여 사용하면 됩니다.

 

저 편집 창은 위 그림에 점 3개를 누른뒤 편집으로 이동하시면 나옵니다.

 

자 이제, 공용된 Ip도 할당 받았겠다, 서버를 사용할 준비는 어느정도 마쳤습니다. 마지막으로 저희가 할당받은 서버에 접속해보겠습니다.

 

서버에 SSH 접속

다른 분들은 Putty를 많이 사용하시는거 같은데 저는 스프링을 사용하기에 인텔리 제이를 애용하는 터라, 그냥 따로 안깔고 인텔리제이로 할당받은 오라클 클라우드에 연결해보겠습니다. (스프링 공부하신다면 이게 젤 빠름)

 

먼저, 인텔리제이의 RemoteHost버튼을 클릭합니다.

 

저 버튼이 안보이신다면 아래 그림을 따라 버튼을 하나 눌러주세요.(윈도우 기준, 맥도 비슷한 곳에 있지 않을까요? ㅎㅎ)

 

자, 이제 생겨난 RemoteHost 버튼을 클릭해보겠습니다.

 

저기 저 버튼을 클릭!

 

눌러서 나온 창에, 왼쪽 위 + 버튼을 누르고 SFTP를 고른뒤, 마음에 드는 이름을 작성해주세요.

저 점 세개를 또 누르면? 마찬가지로 왼쪽 위에 + 버튼을 클릭해서 생성해줍니다.

 

Host는 우리가 할당받은 고정 IP입니다. Username에는 Ubuntu를 입력하고, Authentication Type은 Key pair을 골라줍니다. private Key file은 당연히? 저희가 아까 인스턴스 생성시에 받아놓은 private 키 파일을 설정해주면 됩니다.

 

다 입력했다면, Test Connection 버튼 눌러서 Success가 뜨면 SSH연결에 성공한 것 입니다.

 

OK를 누르고 나오면 아까 봤던 SFTP 연결 설정이 나오는데, SSH configuration에 방금 만든 SSH 설정을 넣어주면 끝!

마찬가지로 Test Connection을 눌러서 성공 표시가 나오면 끝입니다.

 

Terminal을 열고 우리가 만든 서버를 골라주면, 이제 서버의 콘솔을 조작할 수 있습니다!

 

 

여기까지 오시느라 고생많으셨습니다. 이미 만들어 놓고 기억에 의존해서 글을 작성하는거라 부족한 부분이 많음에도 끝까지 읽어주셔서 감사합니다.

 

혹시 잘 모르겠다거나 잘 안되는 부분이 있다면, 역시 구글링을 추천드립니다. 오라클 클라우드 검색 하면 다 나오는 내용입니다.

 

다음 편에서는 DB 연동 후, build된 jar 파일을 돌려보도록 하겠습니다.