RDS
- RDS 는 스프링 클라우드 서비스에서 제공하는 데이터 베이스이다.
필자는 저번 포스트에서 생성한 ec2 인스턴스에서 가동될 데이터 베이스를 생성하기 위해서 rds를 생생했다.
rds를 생성할때 중요한 점은 다음과 같다.
편의성을 위한 로컬 환경과 동일한 DBMS 선택
퍼블릭 접속 허용(for the test with local application)
인바운드 규칙으로 ec2의 보안 그룹 아이디 설정
유형을 MYSQL/Aurora 로 선택하고 사용자 지정으로 EC2 보안 그룹의 ID 를 추가하고 저장합니다.
마지막 과정을 적용하지 않는다면 다른 ec2 인스턴스에서 접근이 불가능해서 runtime 오류가 밸생할 수 있다는 점을 주의해야한다.
이후 로컬 환경에서 동일하게 동일하고 application.yml 파일을 적용하면 되는데 profil을 적용해서 러닝입을 관리하기 보다는 gitgnore 을 설정하고 yml을 직접적으로 git에 커밋하는 방법을 추천한다. 굳이 이런식으로 진행하는 이유는 intellj ultimate(필자가 사용하고 있음) 에는 yml, properties 의 profile 을 다르게 설정해서 build를 진행할 수 있지만 enterpries version을 사용하는 분이면 이 과정에 꽤나 복잡한 과정을 거쳐야 하기 때문에 이 과정을 생략 가능하다는 장점이 있기 때문이다.
profile 이란 컴파일에 필요한 정적요소를 명시하는 파일을 말하는데 yml 파일의 경우에는
application-{profile-name}.yml 이렇게 명명해야 intellj 에서 사용하는 profile을 변경하는 기능을 사용할 수 있다. 하지만 꼭 위에서 편의성을 위해서 필자가 위에서 언급한 부분을 사용하길 바란다.
spring:
datasource:
url: jdbc:mysql://{rds.endpoint-name}:3306
username: admin
password: *********
jpa:
database: mysql
database-platform: org.hibernate.dialect.MySQL8Dialect
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
format_sql: true
mvc:
pathmatch:
matching-strategy: ant_path_matcher
application yml 의 설정 예시이다 위에서 볼 수 있듯 rds 주소 끝에 꼭 3306 port를 명시해주어야한다. 왜냐하면 위에서 인바운드 규칙에서 3306 well known port 를 사용했기 때문이다.
RDS 는 다음 세가지 설정을 필수로 해줘야 합니다.
필자는 파라미터 위에서 언급한 파라 미터들을 전부 utf8bmt 로 설정했다.