Flyway & DB Migration ์ ์ ์ฉ์์ผ ๋ณด์
์คํ๋ง ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋๋ DB ํ ์ด๋ธ์ ํ ๋ฒ์ ๋ค ์์ฑํ๊ณ ์์ํ๋ ๊ฒ์ด ์๋ ํ์ํ ๊ฒ์ ๋ง๋ค์ด๊ฐ๋ฉด์ ์งํํ๊ณ ์์๋ค. ๊ทธ๋ฌ๊ณ Front๋ฅผ ๋ง๋ค์ง ์๊ธฐ ๋๋ฌธ์ DB data๋ฅผ ์ง์ mysql์ ์ด์ด ๋ฃ์ด์ฃผ๊ณ ์์ ํ๋ ์์ ์ ๋ฐ๋ณตํ๊ฒ ๋์๋ค. ์ฐธ ๋นํจ์จ์ ์ด๋ผ ์๊ฐํ๋ค. ๊ทธ๋ฌ๋ ๋์ค Flyway๋ผ๋ Tool์ ์๊ฒ ๋์๋ค.
์๋ก์ด ๊ธฐ์ ์ ๋ง์ฃผํ๋ฉด ํญ์ ๋ฏ์ ๊ธฐ๋ถ์ด์ง๋ง DDL์ ์๋ฐ์์ ์ง์ ๊ด๋ฆฌ๋ฅผ ํ๊ฒ ํด์ฃผ๋ ํด์ด๋ผ๋ ๊ฒ์ ์๊ฒ ๋์๊ณ , ๋์ฒ๋ผ ์คํค๋ง์ ์ฆ์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํด๋ณด๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๊ทธ๋์ ํ๋ฒ ์ ๋ฆฌํด๋ณด๊ณ ์ฌ์ฉํด ๋ณผ ์๊ฐ์ด๋ค.
ํน์๋ ํด์
Schema ๊ฐ ๋ญ์ผ?
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ์ ์ ์ฝ์กฐ๊ฑด์ ๊ดํด ์ ๋ฐ์ ์ธ ๋ช ์ธ๋ฅผ ๊ธฐ์ ํ ๊ฒ!
1. ๊ฐ๋ ์คํค๋ง - ์ ์ฒด์ ์ธ ๋ทฐ
2. ๋ด๋ถ ์คํค๋ง - ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฅ์ฅ์น์์ DB๊ฐ ์ ์ฅ๋๋ ๋ฐฉ๋ฒ์ ๊ธฐ์ ํ ๊ฒ
3. ์ธ๋ถ ์คํค๋ง - ์๋ธ ์คํค๋ง, ์ฌ์ฉ์ ๋ทฐ
=> ์ฝ๊ฒ ๋งํด์ DB๋ด์ ์ด๋ค ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์๋์ง๋ฅผ ๋ํ๋ด๋ ๊ตฌ์กฐ๋ฅผ ์ผ์ปซ๋๋ค.
์ฐธ์กฐ : https://itkjspo56.tistory.com/94
[SQL] ์คํค๋ง๋ ๋ฌด์์ธ๊ฐ?
์คํค๋ง(Schema)๋ ๋ฌด์์ธ๊ฐ? Database๋ฅผ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ์ฝ๊ฒ ๋ฐ๊ฒฌํ ์ ์๋ ์ฉ์ด ์คํค๋ง. ์คํค๋ง์ ์ข ๋ฅ์๋ ๋ฌด์์ด ์๋์ง ํ ๋ฒ ์ดํด๋ณด์ ๋จผ์ ์คํค๋ง๋? : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ์ ์ ์ฝ์กฐ๊ฑด์ ๊ด
itkjspo56.tistory.com
Migration ์ด ๋ฌด์์ธ๊ฐ?
ํ ์ด์ ํ๊ฒฝ์ผ๋ก๋ถํฐ ๋ค๋ฅธ ์ด์ ํ๊ฒฝ์ผ๋ก ์ฎ๊ธฐ๋ ์์ (๋ง ๊ทธ๋๋ก ์ด์ฃผํ๋ค ๋ผ๋ ๋ป์ธ ๋ฏ)
๊ทธ๋ผ DB Migration ์?
DB์์ DB Migration์ด๋ DB ์คํค๋ง์ ๋ฒ์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ฐฉ๋ฒ (๋ฐ์ดํฐ์ ์ ํ)
์ค๋ฌด์์๋ ์คํค๋ง์ ๋ณ๊ฒฝ์ด ์ ๋ง ์ฆ๋ค๊ณ ํ๋ค.
ex) ํ ์ด๋ธ ์์ฑ ๋ณ๊ฒฝ, ์์คํ ์ด์ ์์ ๋ฑ๋ฑ๋ฑ.. => ์๊ฐ๋ง ํด๋ ๋์ฐํ๋ค.
ํ์ฌ DB Migration์ด๋ ๊ฐ๋ณ SQL ํ์ผ์ Mysql ๊ฐ์ DMBS ์ฝ์์์ ์ง์ ์คํํ์ง ์๊ณ ํ๋ ์์ํฌ์ ํน์ ๋ช ๋ น์ ํตํด ์คํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณ๋์ ํ ์ด๋ธ์ ๋ฒ์ ๊ด๋ฆฌ(ํ์ ๊ด๋ฆฌ)๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ด๋ค!
Flyway๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์
์์ง ๋๋ ์ ์ง๋ณด์๊น์ง ๊ฒฝํํด๋ณธ ์ ์ด ์๋ ์๋ฐ๋ฅผ ๊ณต๋ถํ๋ ํ์์ด๋ค. ๊ทผ๋ฐ ์ ๊ณต๋ถ๋ฅผ ํด์ผ ํ ๊น?
์์ ๋งํ๋ฏ ์์ฃผ ๋ณ๊ฒฝ๋๋ ์คํค๋ง๋ฅผ migration ํ๊ธฐ ์ํด์๋ mysql ์ฝ์์์ ์ง์ ๊ด๋ฆฌํด์ผ ํ๋ค. ์ด๋ ์ฐธ ๋ฒ๊ฑฐ๋ก์ด ์์ ์ด๋ค. ์๋ฒฝํ ์ฌ๋์ด ์๋ ์ด์ ํผ์ ํ๋ก์ ํธ๋ฅผ ํ๋ ๊ฒฝ์ฐ์๋ ์คํค๋ง์ ๋ณ๊ฒฝ์ด ์ ๋ง ์ฆ์ ์๋ฐ์ ์์ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ฐพ์ ๋งค๋ฒ ์ผ์ผ์ด ์์ ํ๋ ๊ฒ์ ์ค์ํ๊ธฐ์๋ ๋ฑ ์ข๋ค.
์ฝ๋๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ฒ๋ผ DB ๋ณ๊ฒฝ ์ฌํญ์ ์ง์ ๊ด๋ฆฌํ๋ฉด ์ข์ง ์์๊น?
=> ๊ทธ๋์ ๋์จ ํด์ด Flyway
ํน์ง
- ์ง์ DB์ ์ ์ํด์ sql์ ์์ ํ ํ์๊ฐ ์๋ค.
- SQL์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฒ์ ๊ด๋ฆฌํ๋ฏ ํ์ผ๋ก์ IDE์์ ์ง์ ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ค.
์ ์ฉ ๊ณผ์
=> ๊ทธ๋ฆฌ๊ณ ์๋ฒ๋ฅผ ์คํ!
์๋ฒ ์คํ ์ SQL ํ์ผ์ (๋ณ๊ฒฝ ์ฌํญ)์ ์ฝ์ด SQL์ ์คํํ๋ค.
๋ค์ ์๋ฒ ์คํ!
Flyway๋ ๋ง๋ฅ์ธ ๊ฑธ๊น?
DBMS ์๋ฒ๋ฅผ ์๋ค ๊ฐ๋ค ์ ํด๋ ์์ํ ์ฟผ๋ฆฌ ํ์ผ๋ก ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ํ์ ์์๋ ๋ ๋ค๋ฅธ ์๊ธฐ๊ฐ ๋๋ค.
- ๋ด๊ฐ ์ง ์ฝ๋๋ ๋ฌธ์ ์๋ค๋ ๊ฒ์ ๋ณด์ฆํด์ผ ํจ
- ๋ด๊ฐ ์ง ์ฝ๋๋ฅผ ์ผ๋ง๋ ์ง ๋จ๋ค์ด ๋ฐ์ํ ์ ์์ด์ผ ํจ
- ์ด๋ค ์ฝ๋๊ฐ DB ๋ณ๊ฒฝ์ ์ํฅ์ ์ฃผ์๋์ง ์ฐพ์ ์ ์์ด์ผ ํจ
- ์ฑ์ ์ด์ ๋ฒ์ ๊ณผ ์ ๊ท ๋ฒ์ ์ด ๊ณต์กดํ ์ ์๋ค.
=> ๊ฒฐ๊ตญ ๊ท์น์ด ์ ์ผ ์ค์
ํนํ, Production Level ์ฆ ๋ฐฐํฌ ๋จ๊ณ์์๋ ๊ทธ๋ฆฌ ์ข์ ์ ํ์ ์๋๋ค.
์ด๋ค DDL์ dB ๊ฑด์์ DB์ ๋ฐ๋ผ ์์ญ ์๊ฐ ์ ๋ ๊ฑธ๋ฆด ์๋ ์๋ค. ๊ฑด์๊ฐ ์ ์ ๊ฒฝ์ฐ๋ ์๋น์ค ์ํฅ์ด ๋ฏธ๋ฏธํ์ง๋ง ๋ฐ์ดํฐ ๋จ์๊ฐ ์ปค์ง๋ฉด ๋จ์ํ ์นผ๋ผ ์ถ๊ฐ๋ ์์ญ ๋ถ ๊ฑธ๋ฆด ์ ์๋ค.
-> ์ด๋ ์๋น์ค์ ์ํฅ์ ์ฃผ๊ฒ ๋๋ค.
๋์ : ํ๋ก๋์ ์์๋ ๋ง์ด๊ทธ๋ ์ด์ ๊ธฐ๋ฅ์ ์๋์ผ๋ก ์ํํ๋ค. (๋ณ๋์ ์ํค ํ์ด์ง๋ก ๋ฐ์ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ณ ๊ด๋ฆฌ)
Flyway ๋ก ๊ฐ์ด ์ผ ํ๊ธฐ
Flyway ๊ธฐ๋ฅ์ ํ๋ถํ๊ณ , ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋ค์ํฉ๋๋ค.
medium.com
์ฐธ์กฐ : https://sabarada.tistory.com/193
[flyway] flyway๋ฅผ ํตํด DDL ํ์๊ด๋ฆฌ๋ฅผ ํ์ - Spring Boot (Java API) ํธ
์๋ ํ์ธ์. ์ค๋์ flyway๋ฅผ ์ด์ฉํ์ฌ ๋ก์ปฌ ํ๊ฒฝ์์ DDL์ ํ์๊ด๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. flyway flyway๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์๊ด๋ฆฌ๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๋ ํด์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์
sabarada.tistory.com