최근 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에 명시되어 들어가게 됩니다.
위 과정을 모두 마친후, 스프링 부트 애플리케이션을 실행시키고 쿼리를 날려 디비에 정상적으로 동작하는지 확인하면 됩니다.