4-07. ๊ฐ๋ฐ๊ณผ ์๋ฒ ํ๊ฒฝ ๋ถ๋ฆฌ
4-07. ๊ฐ๋ฐ๊ณผ ์๋ฒ ํ๊ฒฝ ๋ถ๋ฆฌ ๊ด๋ จ
SBB๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ ํธ์์ H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ์ฉ์๋ช
์ sa
๋น๋ฐ๋ฒํธ๋ ๋น๊ฐ(''
)์ผ๋ก ์ค์ ํ์๋ค. ํ์ง๋ง ์๋ฒํ๊ฒฝ์์๋ ์ด์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒ์ ์ํํ๋ค. ์๋ํ๋ฉด ๋๊ตฌ๋ ์๋ฒ์ H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฝ์์ ๋ก๊ทธ์ธ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
H2 ๋์ PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ๋์ค์ ์์๋ณด์.
์ด๋ฒ ์ฅ์์๋ ์๋ฒํ๊ฒฝ์์ H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์.
๊ฐ๋ฐ๊ณผ ์๋ฒ ํ๊ฒฝ ๋ถ๋ฆฌ
H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํ๋ค. application.properties
ํ์ผ์ ๋ค์ ํญ๋ชฉ์ ๋ค์์ฒ๋ผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
spring.datasource.password=1234
ํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ ํธ์๋ฅผ ์ํด ๋ก์ปฌ ํ๊ฒฝ์ ์ฌ์ ํ ๋น๋ฐ๋ฒํธ ์์ด ์ฌ์ฉํ๊ณ ์๋ฒ ํ๊ฒฝ์๋ง ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ณ ์ ํ๋ค.
์ด๋ป๊ฒ ํ๋ฉด ๋ ๊น?
์คํ๋ง ๋ถํธ๋ ์์์ต์
์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด spring.profiles.active
ํญ๋ชฉ์ ์ ๋ฌํ ์ ์๋ค.
java -Dspring.profiles.active=prod -jar sbb-0.0.1-SNAPSHOT.jar
์ด์ฒ๋ผ -Dspring.profiles.active=prod
์ต์
์ ์ฃผ์ด ์คํํ๋ฉด ์คํ๋ง ๋ถํธ๋ application.properties
ํ์ผ ๋์ application-prod.properties
์ ์ฌ์ฉํ๋ค. ์ฆ application-{profile}.properties
์ ๊ฐ์ ๊ท์น์ ๋ฐ๋ฅธ๋ค. ์๋ฅผ ๋ค์ด -Dspring.profiles.active=dev
์ต์
์ ์ฃผ์ด ์คํํ ๊ฒฝ์ฐ์๋ ํ๊ฒฝํ์ผ๋ก application-dev.properties
ํ์ผ์ ์ฌ์ฉํ๋ค.
์๋ฒ ํ๊ฒฝ ํ์ผ ์์ฑํ๊ธฐ
์๋ฒ์์ ์ฌ์ฉํ application-prod.properties
ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์.
ํ์ผ๋ช :
/sbb/src/main/resources/
application-prod.properties
# DATABASE
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.h2.console.settings.web-allow-others=true
spring.datasource.url=jdbc:h2:~/local
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=1234
# JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true
.application.properties
ํ์ผ์ ๋ณต์ฌํ์ฌ ๋์ผํ๊ฒ application-prod.properties
ํ์ผ์ ์์ฑํ์๋ค. ๋ค๋ง spring.datasource.password
์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ณ ์ธ๋ถ์์ H2 ์ฝ์์ ์ ์์ด ๊ฐ๋ฅํ๋๋ก spring.h2.console.settings.web-allow-others=true
์ค์ ์ ์ถ๊ฐํด ์ฃผ์๋ค.
๋น๋ฐ๋ฒํธ๋ 1234 ๋์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ฌ์ฉํ์. ์ฌ๊ธฐ์์๋ ์ฌ์ด ์ค๋ช ์ ์ํด 1234๋ผ๋ ๊ฐ์ ์ฌ์ฉํ์๋ค.
๋น๋ ๋ฒ์ ๋ณ๊ฒฝํ์ฌ ๋ฐฐํฌํ์ผ ์์ฑํ๊ธฐ
๊ทธ๋ฆฌ๊ณ build.gradle
ํ์ผ์ ๋น๋ ๋ฒ์ ๋ ๋ค์์ฒ๋ผ ๋ณ๊ฒฝํด ์ฃผ์.
ํ์ผ๋ช :
/sbb/
build.gradle
// (... ์๋ต ...)
group = 'com.mysite'
version = '0.0.2'
sourceCompatibility = '17'
// (... ์๋ต ...)
์ด์ ๊ฐ์ด ์์ ํ ํ ๋ค์์ฒ๋ผ Gradle Task์ sbb๋ฅผ ์ ํํ๊ณ ["Run"]
์ ์คํํ์ฌ ๋ฐฐํฌํ์ผ์ ์๋ก ๋ง๋ค์.
[Gradle Task -> sbb -> Run]
๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฐฐํฌํ์ผ์ด ์์ฑ๋ ๊ฒ์ด๋ค.
workspace/sbb/build/libs/sbb-0.0.2.jar
์ด์ sbb-0.0.2.jar
ํ์ผ์ ํ์ผ์ง๋ผ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ sbb
๋๋ ํฐ๋ฆฌ์ ์
๋ก๋ํ์.
๋ณ๊ฒฝ๋ด์ฉ ์๋ฒ์ ์ ์ฉํ๊ธฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ๋ค์ ๋ชจ๋ ์ง์์ผ ํ๋ค.
๋ง์ฝ ๊ธฐ์กด์ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ณ ์ถ๋ค๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ธฐ ์ ์ H2 ์ฝ์์ ์ ์ํ์ฌ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ ์ฟผ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์คํํด์ผ ํ๋ค. (์:
ALTER USER sa SET PASSWORD '1234';
)
๋ค์์ฒ๋ผ ๊ธฐ์กด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์ ์ญ์ ํ์.
ls
#
# local.mv.db sbb
rm local.mv.db
๊ทธ๋ฆฌ๊ณ ์๋ฒ์ start.sh
ํ์ผ๋ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์.
ํ์ผ๋ช :
/home/ubuntu/sbb/
start.sh
#!/bin/bash
JAR=sbb-0.0.2.jar
LOG=/home/ubuntu/sbb/sbb.log
nohup java -Dspring.profiles.active=prod -jar $JAR > $LOG 2>&1 &
์๋ก ์
๋ก๋ํ sbb-0.0.2.jar
๋ฅผ ์ ์ฉํ๊ณ -Dspring.profiles.active=prod
์ต์
์ ์ฃผ์ด ์คํ๋ง๋ถํธ๊ฐ ์คํ๋๋๋ก ์ค์ ํ๋ค. ์ด์ ๊ฐ์ด ์์ ํ๊ณ ๋ค์์ฒ๋ผ SBB ์๋น์ค๋ฅผ ์ฌ์์ํ์.
./stop.sh
#
# SBB stopped.
./start.sh
spring_profiles_active ํ๊ฒฝ๋ณ์ ์ฌ์ฉํ๊ธฐ
-Dspring.profiles.active=prod
์ต์
๋์ spring_profiles_active
ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ๋ ์๋ค. spring_profiles_active
ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด start.sh
์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์.
#!/bin/bash
JAR=sbb-0.0.2.jar
LOG=/home/ubuntu/sbb/sbb.log
export spring_profiles_active=prod
nohup java -Dspring.profiles.active=prod -jar $JAR > $LOG 2>&1 &
export
๋ช
๋ น์ผ๋ก spring_profiles_active
ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๊ณ ๊ธฐ์กด์ ์ต์
์ ์ญ์ ํ๋ค.
์๋ฒ H2 ์ฝ์ ์ ์ํ๊ธฐ
JDBC URL๋ช ์
jdbc:h2:~/local
๋ก ์ค์ ํ๋ ๊ฒ๋ ์์ง ๋ง์. H2 ์ฝ์์ ๋ํดํธ๋กjdbc:h2:~/test
๋ก ๋์ด ์๋ค.
์์ ๊ฐ์ด ๋น๋ฐ๋ฒํธ๊ฐ ์๋ชป๋์๋ค๋ ์ค๋ฅ๋ฉ์์ง๋ฅผ ํ์ธํ ์ ์์ ๊ฒ์ด๋ค. ์์์ ์๋ฒ ํ๊ฒฝํ์ผ์ ์ค์ ํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ฌ ๋ก๊ทธ์ธ์ ๋ค์ ์๋ํด ๋ณด์. ๋ก๊ทธ์ธ์ด ์ ์ํ๋ ๊ฒ์ด๋ค.