Springboot 프로젝트에 MS Azure MySQL 연결하기

  • 최근 AWS 과금으로 인해서 어느 클라우드 디비를 사용할까 하다가 Azure가 학생용 요금이 따로 존재한다는 것을 보고 선택했습니다.(사실 AWS도 학생용이 있는데 내가 기존에 쓰던 계정과 연동이 안되서 포기했다)
  • 먼저 회원가입을 학생용으로 진행하고 아래와 같이 메인 콘솔 창에 접속합니다.
  • 만약 기존에 본인 대학에서 MS의 MOS(엑셀,워드 등)를 사용하기 위해 MS용 학교 계정을 만들었으면 해당 계정으로 로그인하면 됩니다.

Azure 접속해서 디비 만들기

  • 본격적으로 클라우드 서비스를 이용하기전 알아둬야하는게 Azure는 AWS와 달리 하나의 서비스(가상 컴퓨터 또는 RDB 등등)를 이용하려면 해당 서비스가 포함되는 리소스 그룹이 필요합니다..즉, GCP(구글 클라우드)와 비슷한 구조를 가지고 있다고 봐도 됩니다.
  • 각설하고, 위의 화면에서 Azure Database for MySQL을 클릭합니다.
  • 아래와 같이 만들기 창이 보일 것입니다..학교의 경우 학생 인증을 해서 나오는 것이니 신경쓰지 않아도 됩니다.
  • 만들기를 누르면 아래와 같이 배포 옵션을 선택해야합니다.
  • 유연한 서버와 단일 서버를 선택해야 하는데 유연한 서버를 선택해주면 됩니다.
  • 유연한 서버에 대한 MS의 자료를 읽어보니 아래와 같은 그림이 나옵니다.Primary와 StandBy를 구분하였으니, 혹시나 주 서버가 다운될경우 자동으로 stand by가 올라오는 구조인거 같습니다.이러한 기능 때문에 요금도 더 비쌉니다.하지만 공식문서에 따르면 12개월 간 B1MS 모델에 대해 한달내내 켜놔도 비용이 안들게 해준다고 하니 유연한 서버를 선택합시다!
  • 유연한 서버를 선택하면 아래와 같이 생성할 MySQL 디비에 관한 정보를 입력해줍니다.아래 스크린샷에 없는 버전의 경우 8버전을 선택했습니다.
  • 리소스 그룹이 없는 경우 새롭게 하나 생성해서 넣어줍니다.
  • 이후 네트워크 연결의 경우 퍼블릭 액세스 허용과 아래에 있는 방화벽의 경우 보안에 신경써서 하고 싶으면 현재 클라이언트 IP 추가를 눌러주고 그냥 연습용으로 만드는거다 싶으면 모든 IP 허용을 체크 하면 됩니다.
  • 이후 생성을 하면 5분정도 걸리며, 아래와 같이 생성된 디비의 정보를 아래와 같이 확인 할 수 있다.

스프링 부트 프로젝트 설정하기

  • 이제 스프링 부트 프로젝트와 연결을 해야합니다.들어가기 앞서 기본적으로 스프링부트와 MySql을 연결하기 위한 설정 정보를 확인합시다.
  • 먼저 build.gradle의 의존관계에 아래를 추가해줍니다.
	runtimeOnly 'mysql:mysql-connector-java'
  • 두번째로 application.yml에 아래와 같은 설정이 필요합니다.(application.properties는 양식만 다르게 하고 설정 내용은 동일)
spring:
#  h2:
#    console:
#      enabled: true

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: <서버이름>:3306/<생성한 스키마 이름
>
    username: <디비 생성 시 설정한 username>
    password: <디비 생성 시 설정한 password>

  jpa:
    database-platform: org.hibernate.dialect.MySQL8Dialect
    //database-platform: org.hibernate.dialect.H2Dialect
  • 여기서 <서버이름>의 경우 위의 사진에서 나온 서버 이름을 복사해서 사용해주면됩니다.
  • 이후 InteliJ IDE의 DB Browser를 통해 디비를 연결해봐야합니다.
  • 아래와 같이 DB Browser에서 디비 추가 + 버튼을 통해 디비 추가 창을 엽니다.
  • Name의 경우 사용자가 임의로 설정해주면 되고 Host는 위에서 사용했던 <서버이름>을 넣어줍니다.이후 미리 설정한 ID/PW를 넣어줍니다.
  • 모든 칸에 기입이 끝나면 Test Connection을 통해 아래와 같이 연결 성공을 확인합니다.
  • 이제 중요한 과정이 한 가지 남아있습니다.DB의 연결은 성공했지만, 스프링부트 어플리케이션에서 사용할 DB 스키마를 생성해야합니다.
  • 저희가 JPA 또는 JDBC를 통해서 테이블을 생성하고 해당 테이블에 쿼리를 날리려면 테이블의 상위 개념인 스키마가 존재해야합니다.그래서 아래와 같은 명령어 스키마를 생성합니다.
create schema `modgo` default character set utf8 collate utf8_bin
  • 백틱 안에 들어간 문자열의 경우 생성할 스키마의 이름입니다.
  • 이렇게 생성된 스키마는 application.yml의 datasouce의 url에 명시되어 들어가게 됩니다.
  • 위 과정을 모두 마친후, 스프링 부트 애플리케이션을 실행시키고 쿼리를 날려 디비에 정상적으로 동작하는지 확인하면 됩니다.