Liquibase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์— ์ด์„ ์˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•

์ด์ „์—๋Š” ์ด๋Ÿฐ ์ผ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค!

๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ–ฅํ›„ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜์Œ๋ถ€ํ„ฐ Liquibase๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ชจ๋“  ์ Š์€ ํŒ€์›์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ์›Œํฌ์ˆ์„ ์—ด์—ˆ๊ณ , ๊ทธ ๋‚ด์šฉ์„ ๊ธฐ์‚ฌ๋กœ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์—๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ, ํŠนํžˆ Liquibase๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋น ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋ช…๋ฐฑํ•œ ์„ธ ๊ฐ€์ง€ ํ•จ์ •์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ์œ ์šฉํ•œ ํŒ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋‹ˆ์–ด ๋ฐ ์ค‘๊ธ‰ Java ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ๊ฒฝํ—˜์ด ๋งŽ์€ ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝ์šฐ ์ด๋ฏธ ์•Œ๋ ค์ง„ ๋‚ด์šฉ์„ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐ ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Liquibase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์— ์ด์„ ์˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•

Liquibase์™€ Flyway๋Š” Java ์„ธ๊ณ„์—์„œ ๊ด€๊ณ„ํ˜• ๊ตฌ์กฐ์˜ ๋ฒ„์ „ ์ œ์–ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์š” ๊ฒฝ์Ÿ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ์™„์ „ํžˆ ๋ฌด๋ฃŒ์ด๋ฉฐ ์‹ค์ œ๋กœ๋Š” ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋„๋ก ์„ ํƒ๋˜๋ฏ€๋กœ Liquibase๊ฐ€ ์ถœํŒ์˜ ์˜์›…์œผ๋กœ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ค๋ช…๋œ ์‚ฌ๋ก€ ์ค‘ ์ผ๋ถ€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ผ ๋ณดํŽธ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๊ตฌ์กฐ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์˜ ์ทจ์•ฝํ•œ ์œ ์—ฐ์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•์ œ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. OOP ํŒจ์…˜ ์‹œ๋Œ€์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—… ์Šคํƒ€์ผ์€ ์Šคํ‚ค๋งˆ๋ฅผ ํ•œ ๋ฒˆ ์„ค๋ช…ํ•˜๊ณ  ๋‹ค์‹œ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์‹ค์€ ํ•ญ์ƒ ์ƒํ™ฉ์ด ๋ณ€ํ•˜๊ณ  ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์ด ์ž์ฃผ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ๊ทธ ๊ณผ์ • ์ž์ฒด๊ฐ€ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  ๋ถˆ์พŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ  ๋ฐ ์ง€์นจ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋” ๊นŠ์ด ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ๊ฝค ๋งŽ์€ ๊ธฐ์‚ฌ๊ฐ€ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์œ ์šฉํ•œ ํŒ์— ๊ด€ํ•œ ํ›Œ๋ฅญํ•œ ๊ธฐ์‚ฌ๊ฐ€ ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค.

ะกะพะฒะตั‚ั‹

์ด์ฃผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ ํ”ผ์™€ ๋•€, ๊ณ ํ†ต์„ ํ†ตํ•ด ํƒ„์ƒํ•œ ์กฐ์–ธ๊ณผ ์˜๊ฒฌ์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

1. ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์„น์…˜์„ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜จ๋ผ์ธ์œผ๋กœ ๋ฆฌํ€ด๋ฒ ์ด์Šค

๊ทธ๊ณณ์— ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋งค์šฐ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์ด ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๊ฒƒ์ด ์—†์œผ๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒํ™œ์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณ€๊ฒฝ ์„ธํŠธ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๊ตฌ์กฐํ™”๋˜์ง€ ์•Š์€ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์กฐ๋งŒ๊ฐ„ ํ˜ผ๋ž€๊ณผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘๋‹จ์œผ๋กœ ์ด์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ์™€ ์„œ๋น„์Šค ๋กœ์ง์— ๋Œ€ํ•œ ์ƒํ˜ธ ์˜์กด์  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋™์‹œ์— ๋กค์•„์›ƒํ•˜์ง€ ์•Š์œผ๋ฉด ๋นจ๊ฐ„์ƒ‰ ํ…Œ์ŠคํŠธ๋‚˜ ์†์ƒ๋œ ํ™˜๊ฒฝ์œผ๋กœ ์ด์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์˜ Liquibase ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์—๋Š” ๊ธฐ๋ณธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ ๋กค๋ฐฑ ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์กฐํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์Ž„, ๊ธฐ์‚ฌ์—์„œ https://habr.com/ru/post/178665/ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐ ๋กค๋ฐฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๊ด€ํ•œ ์ฝ”๋“œ ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ์—์„œ ์ˆ˜๋™ ์ˆ˜์ •์„ ํ—ˆ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์†๋‹ด์ฒ˜๋Ÿผ: "ํ•œ ๋ฒˆ Persil์€ ์˜์›ํ•œ Persil." ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ฐ˜์ด Liquibase์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์ˆ˜๋™ ๋ณ€๊ฒฝ์ด ์ฆ‰์‹œ ์ผ๊ด€์„ฑ ์—†๋Š” ์ƒํƒœ๋กœ ์ด์–ด์ง€๊ณ  ๋ณ€๊ฒฝ ์„ธํŠธ์˜ ์‹ ๋ขฐ ์ˆ˜์ค€์ด XNUMX์ด ๋ฉ๋‹ˆ๋‹ค. ์ž ์žฌ์ ์ธ ์œ„ํ—˜์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณต์›ํ•˜๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ๋ช‡ ์‹œ๊ฐ„์ด ํฌํ•จ๋˜๋ฉฐ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ€์— "๊ตฌ์‹" DBA ์„ค๊ณ„์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์กฐ๊ฑด๋ถ€ SQL ๊ฐœ๋ฐœ์ž๊ฐ€ ์ดํ•ดํ•œ ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํŽธ์ง‘ํ•˜๋ฉด ์ƒํ™ฉ์ด ์–ผ๋งˆ๋‚˜ ๋‚˜๋น ์งˆ์ง€ ์ธ๋‚ด์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์‹ ์ค‘ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์‹ญ์‹œ์˜ค.

3. ๋ณ€๊ฒฝ ์„ธํŠธ๊ฐ€ ์ด๋ฏธ ์ €์žฅ์†Œ์— ํ‘ธ์‹œ๋œ ๊ฒฝ์šฐ ํŽธ์ง‘ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‚˜์ค‘์— ํŽธ์ง‘ํ•  ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ ์šฉํ•œ ๊ฒฝ์šฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์นœ์ ˆํ•œ ๋ง๋กœ ๊ธฐ์–ตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ํŽธ์ง‘ํ•˜๋ฉด ๊ฐœ๋ฐœ ๊ณผ์ •์— ๋ˆ„์ถœ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ํ•ซํ”ฝ์Šค๋ผ๋Š” ์œ„ํ—˜ํ•œ ์ƒํ™ฉ์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ์˜ ๋ณธ์งˆ์€ Liquibase์˜ ์ฃผ์š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ ํ•ด์‹œ ํ•ฉ๊ณ„์— ์˜ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์„ธํŠธ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๋ฉด ํ•ด์‹œ ์–‘์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์ง‘ํ•ฉ ํŽธ์ง‘์€ ๋ฐ์ดํ„ฐ ์†์‹ค ์—†์ด ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ SQL ๋˜๋Š” XML ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๋ฉด ๋ฐ˜๋Œ€๋กœ ์ž‘์—…์ด ๋” ์‰ฌ์›Œ์ง€๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ ์†Œ์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์Šคํ‚ค๋งˆ๊ฐ€ ํŒ€ ๋‚ด์—์„œ ํ•ฉ์˜๋œ ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…์„ ํ™•์ธํ•˜์„ธ์š”.

์—ฌ๊ธฐ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ‘์ž๊ธฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์‹คํŒจํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Liquibase์—๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กค๋ฐฑํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ์ง€๋งŒ ๋กค๋ฐฑ ์Šคํฌ๋ฆฝํŠธ๋„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•˜๋ฏ€๋กœ ์ฃผ์š” ๋ณ€๊ฒฝ ์„ธํŠธ์˜ ์Šคํฌ๋ฆฝํŠธ์™€ ๋™์ผํ•œ ํ™•๋ฅ ๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ๋ฐฑ์—…์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ํ”Œ๋ ˆ์ดํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

5. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ฐœ๋ฐœ ์‹œ ์ž…์ฆ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ด๊ฒƒ์ด ๊ณ„์•ฝ ๋ฐ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ์— ์œ„๋ฐฐ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ฐœ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉฐ ๋ฌด๊ฒŒ๋Š” ๋‘ ํƒœ์–‘๋งŒํผ ํฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๊ฐœ๋ฐœ์ž์˜ ์ปดํ“จํ„ฐ์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ๊ฑฐ์˜ 100% ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

6. ํŒ€์˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค๊ณผ ์†Œํ†ตํ•˜์„ธ์š”

์ž˜ ์กฐ์ง๋œ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์—์„œ๋Š” ํŒ€์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์›์ด ๋ˆ„๊ฐ€ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ ์ž‘์—…์˜ ์ผ๋ถ€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ ๋ณ€๊ฒฝ์„ ์ค€๋น„ํ•˜๋Š” ๊ฒฝ์šฐ ์ด์— ๋Œ€ํ•ด ์ „์ฒด ํŒ€์— ์ถ”๊ฐ€๋กœ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋™์‹œ์— ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์ผ์„ ๋งˆ์นœ ํ›„์— ๋™๋ฃŒ๋“ค๊ณผ ์†Œํ†ตํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค. ๋ณ€๊ฒฝ ์„ธํŠธ์™€ ๊ด€๋ จ๋œ ๋งŽ์€ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋Š” ์ฝ”๋“œ ๊ฒ€ํ†  ๋‹จ๊ณ„์—์„œ ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7. ๋‹น์‹ ์ด ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”!

์–ด๋–ค ์ƒํ™ฉ์—๋„ ์ ์šฉ๋˜๋Š” ์ž๋ช…ํ•œ ์กฐ์–ธ์ฒ˜๋Ÿผ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์ด ํ•˜๊ณ  ์žˆ๋Š” ์ผ๊ณผ ๊ทธ๊ฒƒ์ด ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š”์ง€ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ถ„์„ํ–ˆ๋‹ค๋ฉด ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž‘์—…์—๋Š” ํ•ญ์ƒ ์ถ”๊ฐ€์ ์ธ ์ฃผ์˜์™€ ์ •ํ™•์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ•จ์ •

์ด์ œ ์œ„์˜ ์กฐ์–ธ์„ ๋”ฐ๋ฅด์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋น ์งˆ ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ํ•จ์ •์„ ์‚ดํŽด๋ณด๊ณ  ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ƒํ™ฉ 1: ๋‘ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Liquibase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์— ์ด์„ ์˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•
Vasya์™€ Petya๋Š” ์„œ๋กœ์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ•œ ์ฑ„ ๋ณ€๊ฒฝ ์„ธํŠธ ๋ฒ„์ „ 4๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค๋ฅธ ๋ณ€๊ฒฝ ์„ธํŠธ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ’€ ์š”์ฒญ์„ ๋ฐœํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์šฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค:

๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. ์–ด์จŒ๋“  ๋™๋ฃŒ๋“ค์€ ์ž์‹ ์˜ ๋ณ€๊ฒฝ ์„ธํŠธ๊ฐ€ ์ง„ํ–‰๋˜๋Š” ์ˆœ์„œ์— ๋™์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Petin์„ ๋จผ์ € ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ˆ„๊ตฐ๊ฐ€๋Š” ๋‘ ๋ฒˆ์งธ ๊ฒƒ์„ ์ž์‹ ์—๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ณ  Vasya์˜ ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ๋ฒ„์ „ 5๋กœ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Cherry Pick ๋˜๋Š” ๊น”๋”ํ•œ ๋ณ‘ํ•ฉ์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋ณ€๊ฒฝ ํ›„์—๋Š” ์ทจํ•œ ์กฐ์น˜์˜ ์œ ํšจ์„ฑ์„ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์‹ค์ œ๋กœ Liquibase ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ €์žฅ์†Œ์— ๋‘ ๊ฐœ์˜ ๋ฒ„์ „ 4 ๋ณ€๊ฒฝ ์„ธํŠธ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฒ„์ „ 4์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋‘ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋งŒ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‚˜์ค‘์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„์ „์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

๋˜ํ•œ Liquibase๋Š” ํ˜ธ๋น—์˜ ๊ณ ํ–ฅ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งŽ์€ ๋น„๋ฐ€์„ ๊ฐ„์งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฒ„์ „ 1.7์— ๋“ฑ์žฅํ•œ validCheckSum ํ‚ค๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋‚ด์šฉ์— ๊ด€๊ณ„์—†์ด ํŠน์ • ๋ณ€๊ฒฝ ์ง‘ํ•ฉ์— ๋Œ€ํ•ด ์œ ํšจํ•œ ํ•ด์‹œ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜ https://www.liquibase.org/documentation/changeset.html ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค:

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋‚ด์šฉ์— ๊ด€๊ณ„์—†์ด ์ด ChangeSet์— ์œ ํšจํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์ฒดํฌ์„ฌ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ChangeSet์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๊ณ  ์ด๋ฏธ ์‹คํ–‰๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์„ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(๊ถŒ์žฅ ์ ˆ์ฐจ ์•„๋‹˜).

์˜ˆ, ์˜ˆ, ์ด ์ ˆ์ฐจ๋Š” ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋•Œ๋กœ๋Š” ๊ฐ•ํ•œ ๋น›์˜ ๋งˆ์ˆ ์‚ฌ๊ฐ€ ์–ด๋‘ ์˜ ๊ธฐ์ˆ ์„ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์ƒํ™ฉ 2: ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

Liquibase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์— ์ด์„ ์˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•

๋ผ์ด๋ธŒ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Petya๋Š” ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธํ•œ ํ›„ ์ž์‹ ์ด ์˜ณ์•˜๋‹ค๋Š” ํ™•์‹ ์„ ๊ฐ€์ง€๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ์„ ๋Œ€๋น„ํ•ด ํ”„๋กœ์ ํŠธ ๋ฆฌ๋”๋Š” Petya๊ฐ€ ์ด๋ฅผ ํ™•์ธํ–ˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ ์„œ๋ฒ„์—์„œ์˜ ๋ฐฐํฌ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ˆ„๊ตฌ๋„ ์ด๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ๋ฉด์—ญ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ • ๋ฐ์ดํ„ฐ์™€ ์–ด๋–ป๊ฒŒ๋“  ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ Petya์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ๋งŒ ์ฑ„์›Œ์ ธ ์žˆ๋‹ค๋ฉด ๋ชจ๋“  ๋ฌธ์ œ ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃจ์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๋ฉด ์‚ญ์ œ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ์™€ ๊ด€๋ จ๋œ ์™ธ๋ž˜ ํ‚ค์— ์˜ํ•ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ์Œ์ด ๋ฐํ˜€์ง‘๋‹ˆ๋‹ค. ๋˜๋Š” ์ปฌ๋Ÿผ ์œ ํ˜•์„ ๋ณ€๊ฒฝํ•  ๋•Œ ๋ฐ์ดํ„ฐ์˜ 100%๋ฅผ ์ƒˆ๋กœ์šด ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๊ณผ ํ•จ๊ป˜ ํ•œ ๋ฒˆ ์‚ฌ์šฉ๋  ํŠน์ˆ˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ํ˜•์‹์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ ์šฉํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ์šด ๊ตฌ์กฐ๋กœ ์ „์†กํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ ์ด์ „์—๋„ ๋น„์Šทํ•œ ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ๊ฒฝ๋กœ๋ฅผ ํ•ญ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•˜๊ณ  ์‹ฌ์ง€์–ด ํŒŒ๊ดด์ ์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ๋˜ ๋‹ค๋ฅธ ์–ด๋ ค์šด ๋ฐฉ๋ฒ•์€ ๊ธฐ์กด ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋ ค์šด ์ ์€ ์ด๋ฏธ ๊ธฐ์กด ํ˜•ํƒœ๋กœ ์ ์šฉ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณต์›ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ๋ฐฑ์—”๋“œ ํŒ€์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋กœ์ปฌ๋กœ ๋กค์•„์›ƒํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๋ณดํŽธ์ ์ธ ๋ฐฉ๋ฒ•์€ ๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ œ๋ฅผ ๊ฐœ๋ฐœ์ž ํ™˜๊ฒฝ์œผ๋กœ ์ „์†กํ•˜์—ฌ ๋™์ผํ•œ ์ƒํ™ฉ์„ ์žฌํ˜„ํ•˜๊ณ  ์†์ƒ๋œ ๊ฒƒ์— ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํšŒํ”ผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    Liquibase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์— ์ด์„ ์˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ์ด ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์œ ์‚ฌํ• ์ˆ˜๋ก ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฌธ์ œ๊ฐ€ ๋ฉ€๋ฆฌ๊นŒ์ง€ ๊ฐˆ ๊ฐ€๋Šฅ์„ฑ์€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  ๋ณ€๊ฒฝ ์„ธํŠธ๋ฅผ ์ €์žฅ์†Œ์— ๋ณด๋‚ด๊ธฐ ์ „์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒํ™ฉ 3. Liquibase๊ฐ€ ์ƒ์‚ฐ์— ๋“ค์–ด๊ฐ„ ํ›„ ์‚ฌ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ ๋ฆฌ๋”๊ฐ€ Petya์—๊ฒŒ ํ”„๋กœ์ ํŠธ์— Liquibase๋ฅผ ํฌํ•จํ•˜๋„๋ก ์š”์ฒญํ–ˆ์ง€๋งŒ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด๋ฏธ ํ”„๋กœ๋•์…˜ ๋‹จ๊ณ„์— ์žˆ๊ณ  ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋Š” ์ƒˆ ์„œ๋ฒ„๋‚˜ ๊ฐœ๋ฐœ์ž ์ปดํ“จํ„ฐ์—์„œ ์ด๋Ÿฌํ•œ ํ…Œ์ด๋ธ”์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ ๊ธฐ์กด ํ™˜๊ฒฝ์ด ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ์ƒˆ ๋ณ€๊ฒฝ ์ง‘ํ•ฉ์„ ์ˆ˜์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋˜ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ฒซ ๋ฒˆ์งธ์ด์ž ๊ฐ€์žฅ ๋ถ„๋ช…ํ•œ ๊ฒƒ์€ ์ƒˆ ํ™˜๊ฒฝ์„ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ์ˆ˜๋™์œผ๋กœ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ณ„๋„์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ๋Š” ๋œ ๋ช…ํ™•ํ•˜๋ฉฐ, ๋‹ค๋ฅธ Liquibase ์ปจํ…์ŠคํŠธ์— ์žˆ๋Š” Liquibase ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๊ฐ€์ง€๊ณ  ์ด๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. Liquibase Context์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://www.liquibase.org/documentation/contexts.html. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Š” ํ…Œ์ŠคํŠธ ๋“ฑ์„ ์œ„ํ•ด ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํฅ๋ฏธ๋กœ์šด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค.
  • ์„ธ ๋ฒˆ์งธ ๊ฒฝ๋กœ๋Š” ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๊ธฐ์กด ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋ฅผ ์ผ๋ถ€ ํ™˜๊ฒฝ์— ์ ์šฉํ•ด์•ผ ํ•ด๋‹น ํ•ด์‹œ ํ•ฉ๊ณ„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋น„์–ด ์žˆ์ง€ ์•Š์€ ์„œ๋ฒ„์—์„œ ๋นˆ Liquibase ํ…Œ์ด๋ธ”์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์„ธํŠธ ์‚ฌ์šฉ ๋‚ด์—ญ์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ "๋งˆ์น˜ ์ ์šฉ๋œ ๊ฒƒ์ฒ˜๋Ÿผ" ๋ณ€๊ฒฝ ์„ธํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋ก์„ ์ˆ˜๋™์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. . ๋”ฐ๋ผ์„œ ๊ธฐ์กด ์„œ๋ฒ„์—์„œ๋Š” ๋ฒ„์ „ 2๋ถ€ํ„ฐ ๊ธฐ๋ก ์นด์šดํŠธ๋‹ค์šด์ด ์‹œ์ž‘๋˜๊ณ  ๋ชจ๋“  ์ƒˆ ํ™˜๊ฒฝ์ด ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
    Liquibase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์— ์ด์„ ์˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•

์ƒํ™ฉ 4. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ์™„๋ฃŒํ•  ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์—๋Š” ์›์น™์ ์œผ๋กœ Liquibase๋ฅผ ์™ธ๋ถ€ ์˜์กด์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ชจ๋“  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์—์„œ ๋™์‹œ์— ๋ถ„์‚ฐ ํ™˜๊ฒฝ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์ด ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋„ˆ๋ฌด ์˜ค๋žซ๋™์•ˆ ์ ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค์— ๊ฐœ๋ณ„์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ ์šฉํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„๊ฐ€ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ, ๊ท€ํ•˜์˜ ํ”„๋กœ์ ํŠธ๋Š” ์ด๋ฏธ ๊ทœ๋ชจ๊ฐ€ ํฌ๊ณ  ์„ฑ์ธ์šฉ์ผ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ Liquibase๋Š” ๋ณ„๋„์˜ ์™ธ๋ถ€ ๋„๊ตฌ๋กœ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค Liquibase๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ์„œ jar ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋˜๋ฉฐ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๋˜๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์ข…์†์„ฑ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ํ˜• ๋ชจ๋“œ์—์„œ๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ตฌํ˜„์„ CI/CD ํ™˜๊ฒฝ์ด๋‚˜ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๋ฐ ๋ฐฐํฌ ์ „๋ฌธ๊ฐ€์˜ ๊ฐ•๋ ฅํ•œ ์–ด๊นจ์— ๋งก๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด Liquibase ๋ช…๋ น์ค„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. https://www.liquibase.org/documentation/command_line.html. ์ด ๋ชจ๋“œ์—์„œ๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์ˆ˜ํ–‰๋œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ๋ ฅ

์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž‘์—…์—๋Š” ๋” ๋งŽ์€ ํ•จ์ •์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ ๋‹ค์ˆ˜์—๋Š” ์ฐฝ์˜์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋„๊ตฌ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ํ•จ์ •์„ ๋Œ€๋ถ€๋ถ„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ๋‚˜๋Š” ๋‚˜์—ด๋œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ๊ณ , ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๋‚ด ์‹ค์ˆ˜์˜ ๊ฒฐ๊ณผ์˜€์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ถ€์ฃผ์˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜์ง€๋งŒ ๋•Œ๋กœ๋Š” ๋ฒ”์ฃ„๊ฐ€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€