본문 바로가기

Programming/AWS

[AWS] Spring 프로젝트를 AWS로 배포[5] RDS 생성을 통한 프로젝트 DB 구축

반응형

구현 환경

  • Spring Legacy Project(MVC)
  • Maven
  • Java 1.8
  • MySQL 8.0.27
  • Amazon Linux

 

인스턴스 생성을 통한 가상 서버 환경에서 war 파일로 프로젝트 배포를 완료했습니다. 만약 DB를 사용하지 않는다면 여기서 마무리해도 상관없지만, DB를 사용한다면 DB를 구축해서 사용할 수 있도록 만들어야 합니다. 이 작업이 누락되면 프로젝트를 실행할 수 없습니다.

 

저는 DB로 Oracle을 사용해서 구현했습니다. AWS에서는 Oracle RDS 프리티어를 제공하지 않습니다. 그래서 서버 내부에 Oracle을 설치한 후 연동할 수 없을까 찾아보았지만, Oralce 설치 자체도 쉬운 일이 아니었습니다. 결국 Oracle 설치까지 완료했지만, 어떻게 프로젝트와 연결해야 할지 막막했습니다. 그래서 RDS 프리티어를 제공하는 MySQL를 사용하기로 결정했습니다. 물론 DB 연결 방식과 쿼리 형태가 다르기 때문에 약간의 수정이 필요했지만, 편리함에 대한 가격을 지불한다고 생각했습니다.

 

RDS 생성

RDS 생성에 대한 A to Z는 이미 좋은 포스팅이 많기 때문에 생략했습니다. 아래 링크를 참고해서 RDS를 생성하면 됩니다. 포스팅에서는 MariaDB 프리티어 설정 예시를 보여줍니다. MySQL 설정도 다른 점이 없기 때문에 마음 편하게 따라 하시면 됩니다.

MySQL과 MariaDB는 상호운용성이 좋고, MySQL Workbench에서 MariaDB 관리를 할 수 있습니다. 그래서 저는 처음에는 포스팅 내용과 같이 MariaDB 프리티어를 생성해서 MySQL Workbench를 통해 관리가 잘 되는지 테스트를 했고, 아무 이상 없이 작동되는 것을 확인했습니다. 다만 MariaDB - MySQL의 버전 차이가 크다면 관련 경고 메시지가 출력됩니다.(작동에는 이상 없습니다)

 

https://jojoldu.tistory.com/259

 

4) 스프링부트로 웹 서비스 출시하기 - 4. AWS EC2 & RDS 구축하기

이번 시간엔 SpringBoot를 운영할 AWS 환경을 구축하겠습니다. (모든 코드는 Github에 있습니다.) Tip) 운영 서버는 크게 클라우드 서비스(AWS, Azure 등) 과 호스팅 서비스(Cafe24, 코리아호스팅 등)을 이용

jojoldu.tistory.com

 

참고로 RDS를 생성할 때 마스터 사용자 이름과 마스터 암호를 반드시 기억해야 합니다.

MySQL 기준으로

  • 마스터 사용자 이름 = Username
  • 마스터 암호 = Password

입니다. "DB 클러스터 식별자가 Username인가?" 하고 착각하면 연결 안 된다고 계속 에러가 발생합니다. 

 

 

RDS 연동 확인 - MySQL 기준

RDS를 생성했습니다. 이제 war 파일로 배포 작업을 했을 때 생성된 RDS와 연동되어 작업이 잘 되는지 확인해야 합니다. 우선 로컬에 있는 자신이 구현한 프로젝트 속으로 이동합니다. 그곳에서 DB 연결을 담당하는 xml(저는 XML 형태로 작성했습니다.) 파일에서 DB 연결 내용을 RDS 생성 내용과 맞게 다시 수정합니다.

 

저는 HikariCP, log4jdbc를 설정했기 때문에 아래와 같은 코드가 나왔습니다. 중요한 부분은 DB 연결 관련 부분이기 때문에 그곳에만 집중하면 됩니다. 

참고로 [RDS 내부에 생성한 스키마]의 경우 RDS에 접속해서 데이터를 가져올 테이블의 집합을 대표하는 스키마를 의미합니다. MySQL 기준으로 설명했습니다.

 

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
    <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
    <property name="jdbcUrl" value="jdbc:log4jdbc:mysql://[RDS 엔드포인트]:[RDS 생성 시 설정한 포트 번호]/[RDS 내부에 생성한 스키마]?characterEncoding=UTF-8&amp;serverTimezone=Asia/Seoul"/>
    <property name="username" value="[마스터 사용자 이름]"/>
    <property name="password" value="[마스터 암호]"/>
</bean>

 

이렇게 설정을 마치고 다시 war 파일을 Export 합니다. 그리고 다시 서버의 tomcat 경로의 webapps에 war파일을 업로드합니다. 그리고 Tomcat을 실행해서 RDS와 연동되는지 확인합니다. 참고로 war 파일 새로 업로드한 후에 sudo reboot 명령어로 서버 리부트 작업을 한 번 해주고 Tomcat을 실행하는 것이 좋습니다.

반응형