이 챕터에서는 현재 마이크로서비스가 사용하는 임베디드 H2 데이터베이스를 실제 MySQL 데이터베이스로 전환하는 과정을 설명합니다. 이를 통해 로컬 환경에서 실제 MySQL 데이터베이스를 Docker 컨테이너로 설정하고, 각 마이크로서비스가 이 데이터베이스를 사용할 수 있도록 코드 변경을 수행합니다. 각 단계를 상세히 설명하겠습니다.
Section 7
이라는 폴더를 생성한 후, 이전 섹션(v2-spring-cloud-config
)의 코드를 복사하여 이 폴더에 붙여넣습니다.Spring Cloud Bus
및 Spring Cloud Config Monitor
는 더 이상 사용하지 않기로 하여, 이에 관련된 코드와 의존성을 제거합니다.spring-cloud-starter-bus-amqp
및 spring-cloud-config-monitor
의존성을 삭제합니다.accounts
, loans
, cards
)에 대해 별도의 MySQL 데이터베이스를 생성합니다.docker run -p 3306:3306 --name accountsDB -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=accountsDB -d mysql
docker run -p 3307:3306 --name loansDB -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=loansDB -d mysql
docker run -p 3308:3306 --name cardsDB -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=cardsDB -d mysql
accountsDB
, loansDB
, cardsDB
라는 이름의 MySQL 컨테이너를 생성하고, 해당 컨테이너가 로컬 시스템의 3306, 3307, 3308 포트를 통해 접근할 수 있도록 설정합니다.localhost
3306
root
root
accountsDB
localhost
3307
root
root
loansDB
localhost
3308
root
root
cardsDB
application.yml
파일을 수정하여 MySQL 데이터베이스 설정을 반영합니다.spring.datasource.url
, spring.datasource.username
, spring.datasource.password
와 같은 속성을 수정하여 MySQL 데이터베이스와 연결되도록 합니다.accounts
, cards
, loans
)의 pom.xml 파일에서 H2 데이터베이스 의존성을 제거합니다.<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
spring:
datasource:
url: jdbc:mysql://localhost:3306/accountsDB
username: root
password: root
sql:
init:
mode: always
jpa:
show-sql: true
jdbc:mysql://localhost:3306/accountsDB
는 MySQL 데이터베이스의 연결 URL을 나타내며, accountsDB
는 사용할 데이터베이스 이름입니다.spring.datasource.sql.init.mode
를 always
로 설정하여, 애플리케이션 시작 시 스키마 스크립트(schema.sql
)가 항상 실행되도록 합니다.spring:
datasource:
url: jdbc:mysql://localhost:3308/cardsDB
username: root
password: root
sql:
init:
mode: always
jpa:
show-sql: true
spring:
datasource:
url: jdbc:mysql://localhost:3307/loansDB
username: root
password: root
sql:
init:
mode: always
jpa:
show-sql: true
accounts
, cards
, loans
마이크로서비스를 시작합니다.createAccount
, createCard
, createLoan
API를 사용하여 데이터베이스에 데이터를 저장합니다.이 과정을 통해 MySQL 데이터베이스를 로컬 환경에서 마이크로서비스와 연동할 수 있게 되었으며, 데이터 저장 및 조회 작업을 성공적으로 수행할 수 있었습니다.