[Google Cloud] DB연결과 배포 - 스프링과 GCP 연동하기 3탄
드디어 스프링 프로젝트 배포의 마지막 단계이다.
1탄에서 생성한 mySQL DB인스턴스를 기억할 것이다.
↓ 이전 글(1탄)
[Google Cloud] 구글 클라우드 인스턴스 생성하기 - 스프링과 GCP 연동하기 1탄
구글 클라우드는 Google Cloud Platform (GCP) 라고도 불리우는 구글에서 운영하는 클라우드 서비스이다. 기존 컨테이너를 Google의 관리형 컨테이너 서비스로 이동하기 위한 도구이며 구글 검색과 유튜
hansjour.tistory.com
↓ 이전 글(2탄)
[Google Cloud] 구글 클라우드 셋팅 및 접속 - 스프링과 GCP 연동하기 2탄
저번 시간에는 로컬 컴퓨터에서 MySQL용 Cloud SQL에 연결하기 위한 전초과정이었다면 본격적으로 스프링 프로젝트를 배포하기 위해 Google Cloud의 VM을 만들어보자. ↓ 이전 글 [Google Cloud] 구글 클라
hansjour.tistory.com
이제 연결하자!!
1. DB인스턴스 연결
SQL - 연결 - 네트워크 추가
만들었던 VM의 공개 IP를 등록해준다.
참고로 IP는 고정IP로 승급시킨 뒤에 등록해야함
안그러면 연결마다 IP가 변경됨..
2. DB인스턴스 정보 확인
GCP 콘솔(https://console.cloud.google.com/) - 연결 세부 정보
-인스턴스의 IP 주소 및 포트
-데이터베이스 이름
-사용자 이름 및 암호
를 확인한다.
2. 스프링부트 application.yml 설정
데이터베이스 연결 정보를 스프링 부트 애플리케이션의 application.yml 파일에 입력한다.
mysql 의존성 설정은 당연히 되어 있어야 함
spring:
datasource:
url: jdbc:mysql://YOUR_DB_IP:3306/YOUR_DB_NAME?useSSL=false&serverTimezone=UTC
username: YOUR_DB_USER
password: YOUR_DB_PASSWORD
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect
hibernate:
ddl-auto: update
※ 이렇게 했는데도, 에러가 뜨는 경우?
=> GCP콘솔-VPC방화벽 규칙
3306 포트를 열어준다.
그래도 안됨..
----> (해결) using password: YES 면 패스워드가 틀린 것이라는 이야기를 보고
설마, 하고 영문을 섞어 패스워드를 재정비하니 바로 연결 되었다.
패스워드가 문제일 줄은 상상도 못했는데....^^
----> (추가) ddl-auto: update를 해주어도 JPA 에서 자동으로 테이블이 생성이 안된다면?
jpa:
generate-ddl: true
를 추가해주면 문제가 해결되고, 코드를 돌리면 정상적으로 테이블이 자동 생성되는 것을 볼 수 있다.
3. 원격 DB 접속을 확인했으니, 프로젝트를 빌드해서 클라우드 서버로 보낸닷
4. GCP서버에서 작동 확인! 배포 끝!
느낀 점..
-의존성 설정/모듈 버전 확인을 잘 하자.
-공식 문서를 잘 보자.
-이해하면서 해결해나가자.
-GCP는 aws와 크게 다르지 않으나, 기능을 온전히 활용하려면 서버가 제공하는 기능이 뭔지 알아야한다.
-기본 지식이 있으면 플랫폼이 달라져도 쉽게 적응이 가능하겠구나.
-왜, 서버 접속이 안되냐 (대부분 방화벽 이슈..라고 생각했으나 또 그것만은 아닌듯)
a. 접근이 허용된 IP인지
b. 포트는 열려있는지
c. 서비스가 실행 중인지
d. 사용자 인증이 되었는지, 인증이 적합한지(credential issue)
-어떠한 서비스를 이용하려면 인증이 정확히 잘 이루어져야 하는구나
-생각보다 너무 쉽고 어이없는 게 정답일 수도 있다.
사실 새로운 클라우드 플랫폼을 이용한다는 게 엄두가 안나는 일인데
막상 사용해보니 적용하는 게 쏠쏠하고 재미있었다.
aws만큼.... UI가 편하지는 않은 느낌이라
특히나 사용자 인스턴스(VM)의 오버뷰가 더 간단하고 콘솔 메인에서 바로 접속이 가능하게 보완된다면 좋을 것 같다.
*참고한 공식 문서