필자는 학교 동아리에서 받은 크레딧을 사용하기 위해서 우선적으로 네이버 클라우드 플랫폼(NCP)에서 제공하는 Cloud DB for MySQL 을 DB 로 사용했었다. 하지만, NCP 는 가격이 너무 비쌌고, GCP Cloud SQL의 경우 공유 리소스(ex. 0.3 vCPU) 플랜이 추가되어 NCP 보다 가격적으로 저렴하였기 떄문에 GCP 로 변경하게 되었다.
기존에는 NCP를 사용해서 sprinboot 프로젝트를 배포했었는데, 배포 서버를 그대로 NCP 로 유지한 채 DB를 GCP로 이전하게 된다면 추후에 진행할 CI/CD 작업이 불가능하기 떄문에 이번 포스트에서는 GCP 로 DB를 관리하는 방식으로 변경하고 이후 배포 서버를 Docker 로 바꿀 예정이다.
Google Cloud Platform 에 접속하기 전 새로운 구글 계정을 하나 만들기를 권장한다. (90일 동안 $300 크레딧을 제공해주는 무표 평가판 사용을 위해)
원하는 프로젝트를 하나 만들어도 되지만 기존 디폴트로 생성된 프로젝트로 진행여도 무관하니 바로 다음으로 넘어가자
가상 서버를 생성하기 위해 GCP 콘솔 메뉴탭에서 Compute Engine
의 VM 인스턴스
탭으로 들어간다.
VM 인스턴스 만들기
를 클릭하여 다음을 설정한다.
위와 같은 설정을 마치고 VM 인스턴스를 생성한다.
VM 인스턴스를 생성하게 되면 해당 OS 가 설치만 되기 때문에 필요한 애플리케이션 설정 및 네트워크 설정을 해주어야 한다.
생성된 VM 인스턴스를 클릭하고 점세개를 눌러 네트워크 세부정보 보기
를 클릭한다.
클라우드 서비스는 기본적으로 동적인 외부 IP 를 가지고 있다. 즉 인스턴스가 재실행 될 경우 IP 가 변경될 수 있다는 의미이다.
따라서, 인스턴스가 유지되는 동안 고정 IP 를 사용하여 IP 가 변경되지 않도록 해야한다.
외부 고정 주소 예약
을 누르고 이름은 static01 로 하고 버전은 IPv4, 연결 대상은 아까 만들었던 VM 인스턴스로 선택하고 예약 버튼을 누른다.VPC 네트워크의 방화벽 메뉴로 이동한다.
방화벽 설정을 하여 특정 프로토콜과 포트를 허용해준다. 외부망에서 GCP 로 접속하는 Inbound는 TCP/UDP/ICMP 프로토콜과 80/443/22/3389 포트만 허용하고 있다. 포트가 허용되지 않으면, 나중에 배포 후 테스트 할 떄 접속되지 않을 수 있으니 8080 포트와 3306 포트를 열어주도록 한다.
메뉴탭에서 SQL
을 클릭하고 인스턴스 만들기
를 클릭한다.
다음으로 MySQL
을 선택하고 다음을 설정한다.
위에서 생성한 MySQL 의 데이터베이스를 새로 추가한다. (ex. ecology_map)
인스턴스가 생성되었다면 공개 IP 주소를 이용해 RDS 에 접속할 수 있다. 로컬의 springboot 프로젝트에서 테스트로 Cloud SQL 에 접속해 보겠다.
1) application.properties 작성 후 프로젝트 실행
# application.properties
spring.datasource.url=jdbc:mysql://{공개 IP 주소}/ecology_map?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC # ecology_map 이라는 database 에 연결
spring.datasource.username=root # Cloud SQL 에서 생성한 MySQL 의 인스턴스 ID
spring.datasource.password= # Cloud SQL 에서 생성한 MySQL 의 password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
2) DBeaver 연동하여 DB 확인
인스턴스 ID
를 클릭해 개요
에 들어가면 인스턴스에 연결
에 보면 Cloud shell 열기가 보인다. 열기를 클릭하고 다음과 같이
클라우드 쉘을 통해 GCP 서버에 접속하는 것이 아닌 터미널 ssh 연결을 통해 접속하는 방법이 아래 포스팅 되어있다.
[SpringBoot] M1 Mac GCP 인스턴스 ssh 접속방법
참고
https://choo.oopy.io/5c999170-dde5-4418-addc-00a0d263287c#992bc387-6591-4ba6-88fd-f30aa5edee59
오늘 하루종일 헤맨거 덕분에 해결했습니다.....감사합니다 ㅠㅠ