์ฒซ ๋ฒ์งธ ๋ถ๋ถ -
์ํฉ์ ์์ํด๋ณด์ญ์์ค. ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ์์ ์ ์ง๋ฉดํด ์์ต๋๋ค. ์ ๋ฐฐ๋ค์ ๊ฒฝํ์ด ์์ต๋๋ค. ๋๋์ ์๋ฌด๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ด๋ป๊ฒ ํ์๊ฒ ์ต๋๊น?
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ด์ ๊ฐ๋ฐ์ ๋ชจ๋ ์ํ์ง๊ณ ๋ชจ๋ ๊ฒ์ด ๋ค์ ์์๋ฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ํํค์น๋ ๊ฒ์ ์ข์ํ๋ ์ฌ๋์ ์์ต๋๋ค. ์๊ฐ์ด ์๋ค๋ฉด ์์ ๋ง์ ์์คํ
์ ๋ง๋ค์ด ๋ณด๋ ๊ฒ์ ์ด๋จ๊น์? ์ด๊ฒ์ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด๋ฉฐ ๋ง์ ์ธก๋ฉด์์ ์ ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ํ๋ก์ ํธ์์ ์ฐ๋ฆฌ๋ ๋ค๋ฅด๊ฒ ํ๋ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด์ ์ ํ์ utPLSQL์ ๋ํ ๋จ์ ํ
์คํธ ๊ฐ๋ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฏธ๋์ ์๋ํ๋ ํ
์คํธ ์์คํ
์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ๋ณ๋ ฌ ๋ฐฉํฅ์ผ๋ก ์์
ํ์ต๋๋ค.
- ์ด์ ๋จ์ ํ ์คํธ๋ฅผ ๋ณต์ํฉ๋๋ค. ๋ณต๊ตฌ๋ ์ถฉ์ฑ๋ ์์คํ ์ ๊ธฐ์กด ์ํ์ ๋ํ ํ ์คํธ ์ ์ ๋ฐ utPLSQL ํ์ค์ ๋ํ ํ ์คํธ ์ ์์ ์๋ฏธํฉ๋๋ค.
- ์ดํด๋ฅผ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ํํ ์ด๋ค ๋ฐฉ๋ฒ๊ณผ ํ๋ก์ธ์ค๋ฅผ ์๋ ํ ์คํธ๋ก ๋ค๋ค์ต๋๋ค. ์ด ์ ๋ณด๋ฅผ ๋จธ๋ฆฟ์์ ์ ์ฅํ๊ฑฐ๋ ์๋ ํ ์คํธ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ง์ ๊ฒฐ๋ก ์ ๋์ถํด์ผ ํฉ๋๋ค. ๊ทธ๋์ ์นดํ๋ก๊ทธ๋ฅผ ๋ง๋ค๊ธฐ๋ก ํ์ต๋๋ค. ๊ฐ ์๋ ํ ์คํธ์ ๊ณ ์ ํ ๋๋ชจ๋ ์ฝ๋๋ฅผ ํ ๋นํ๊ณ , ์ค๋ช ์ ๋ง๋ค๊ณ , ์ค์ ์ ์์ ํ์ต๋๋ค(์: ์ด๋ค ์กฐ๊ฑด์์ ์คํํด์ผ ํ๋์ง ๋๋ ํ ์คํธ ์คํ์ด ์คํจํ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง). ๋ณธ์ง์ ์ผ๋ก ์๋ ํ ์คํธ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฑ์ฐ๊ณ ์ด ๋ฉํ๋ฐ์ดํฐ๋ฅผ utPLSQL ์คํค๋ง์ ํ์ค ํ ์ด๋ธ์ ๋ฐฐ์นํ์ต๋๋ค.
- ํ์ฅ ์ ๋ต์ ์ ์, ์ฆ ์๋ ํ ์คํธ๋ฅผ ํตํด ํ์ธํด์ผ ํ๋ ๊ธฐ๋ฅ ์ ํ. ์ฐ๋ฆฌ๋ ์ธ ๊ฐ์ง์ ์ฃผ๋ชฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์์คํ ์ ์๋ก์ด ๊ฐ์ ์ฌํญ, ์์ฐ์์ ๋ฐ์ํ๋ ์ฌ๊ณ , ์์คํ ์ ํต์ฌ ํ๋ก์ธ์ค์ ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋ฆด๋ฆฌ์ค์ ๋์์ ๊ฐ๋ฐํ์ฌ ๋ ๋์ ํ์ง์ ๋ณด์ฅํ๊ณ ๋์์ ํ๊ท ๋ฒ์๋ฅผ ํ์ฅํ๋ฉฐ ์ค์ํ ์์น์์ ์์คํ ์ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ณ๋ชฉ ํ์์ ์ํ๋ก ํ ์ธ ๋ฐ ๋ณด๋์ค๋ฅผ ๋ถ๋ฐฐํ๋ ๊ณผ์ ์ด์์ต๋๋ค.
- ๋น์ฐํ ์ฐ๋ฆฌ๋ ์๋ก์ด ์๋ ํ ์คํธ๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์์ํ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฆด๋ฆฌ์ค ์์ ์ค ํ๋๋ ์ถฉ์ฑ๋ ์์คํ ์ ๋ฏธ๋ฆฌ ์ ์๋ ์ํ์ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๊ฒ์ด์์ต๋๋ค. ์ฐ๋ฆฌ ํ๋ก์ ํธ์๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ํด๋ผ์ด์ธํธ๋ฅผ ์ ํํ๋ ์๊ฒฉํ๊ฒ ๊ณ ์ ๋ SQL ์ฟผ๋ฆฌ ๋ธ๋ก์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๋์์์ ๋ง์ง๋ง์ผ๋ก ๊ตฌ๋งคํ ๋ชจ๋ ๊ณ ๊ฐ ๋ชฉ๋ก ๋๋ ํ๊ท ๊ตฌ๋งค ๊ธ์ก์ด ํน์ ๊ฐ ์ด์์ธ ๊ณ ๊ฐ ๋ชฉ๋ก์ ๊ฐ์ ธ์ต๋๋ค. ์๋ ํ ์คํธ๋ฅผ ์์ฑํ๊ณ ๋ฏธ๋ฆฌ ์ ์๋ ์ํ์ ํ์ธํ๊ณ ๋ฒค์น๋งํฌ ์ฑ๋ฅ ๋งค๊ฐ๋ณ์๋ฅผ ์์ ํ์ผ๋ฉฐ ์ถ๊ฐ๋ก ๋ก๋ ํ ์คํธ๋ฅผ ๋ฐ์์ต๋๋ค.
- ์๋ ํ
์คํธ ์์
์ ํธ๋ฆฌํด์ผ ํฉ๋๋ค.. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ ๊ฐ์ง ์์
์ ์๋ ํ
์คํธ ์คํ๊ณผ ํ
์คํธ ๋ฐ์ดํฐ ์์ฑ์
๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ ์์คํ
์ ๋ ๊ฐ์ ๋ณด์กฐ ๋ชจ๋์ธ ๋ฐ์ฌ ๋ชจ๋๊ณผ ๋ฐ์ดํฐ ์์ฑ ๋ชจ๋์ด ๋ํ๋ ๋ฐฉ์์
๋๋ค.
์์ ํ๋ก๊ทธ๋จ์ ํ๋์ ์ ๋ ฅ ํ ์คํธ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ํ๋์ ์ผ๋ฐ ํ๋ก์์ ๋ก ํ์๋ฉ๋๋ค. ๋งค๊ฐ๋ณ์๋ก ์๋ ํ ์คํธ ๋๋ชจ๋ ์ฝ๋, ํจํค์ง ์ด๋ฆ, ํ ์คํธ ์ด๋ฆ, ์๋ ํ ์คํธ ์ค์ ๋๋ ์์ฝ์ด๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. ์ ์ฐจ๋ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ๋ชจ๋ ์๋ ํ ์คํธ๋ฅผ ์ ํํ๊ณ ์คํํฉ๋๋ค.
๋ฐ์ดํฐ ์์ฑ ๋ชจ๋์ ํ ์คํธ ์ค์ธ ์์คํ ์ ๊ฐ ๊ฐ์ฒด(๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ)์ ๋ํด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ํน์ ์ ์ฐจ๊ฐ ์์ฑ๋ ํจํค์ง๋ก ์ ๊ณต๋ฉ๋๋ค. ์ด ์ ์ฐจ์์ ๊ธฐ๋ณธ๊ฐ์ ์ต๋๋ก ์ฑ์์ ธ ๋ฌธ์ ๊ทธ๋๋ก ์๊ฐ๋ฝ ํด๋ฆญ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ ํธ์์ฑ์ ์ํด ์์ฑ๋ ๋ฐ์ดํฐ์ ๋ํ ํ ํ๋ฆฟ์ด ์์ฑ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ ์คํธ ์ ํ์ ์๋ฃ๋ ๊ตฌ๋งค๋ก ํน์ ์ฐ๋ น์ ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑํฉ๋๋ค.
- ์๋ ํ
์คํธ๋ ์์คํ
์ ์ ํฉํ ์๊ฐ ๋ด์ ์คํ๋์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฒฐ๊ณผ์ ๋ํ ๋ณด๊ณ ์๊ฐ ์์ฑ๋์ด ํ์ฌ ๋ฉ์ผ๋ก ์ ์ฒด ๊ฐ๋ฐ ํ์ ์ ์ก๋๋ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋งค์ผ ๋ฐค ๋ฐ์ฌ๊ฐ ์กฐ์ง๋์์ต๋๋ค. ์ด์ ์๋ ํ
์คํธ๋ฅผ ๋ณต์ํ๊ณ ์ ํ
์คํธ๋ฅผ ๋ง๋ ํ ์ด ์คํ ์๊ฐ์ 30๋ถ์ด์์ต๋๋ค. ์ถ์๊ฐ ์
๋ฌด ์ธ ์๊ฐ์ ์ด๋ฃจ์ด ์ก๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ฑ๋ฅ์ ๋ชจ๋ ์ฌ๋์๊ฒ ์ ํฉํ์ต๋๋ค.
ํ์ง๋ง ์์ ์๋๋ฅผ ์ต์ ํํ๊ธฐ ์ํด ๋ ธ๋ ฅํด์ผ ํ์ต๋๋ค. ์์ฐ ๋ก์ดํฐ ์์คํ ์ ๋ฐค์ ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ๋ฆด๋ฆฌ์ค ์ค ํ๋์ ์ผ๋ถ๋ก ๋ฐค์ ๊ธด๊ธํ๊ฒ ๋ณ๊ฒฝํด์ผ ํ์ต๋๋ค. ์ค์ 5์์ ์๋ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ XNUMX ๋ถ ๋์ ๊ธฐ๋ค๋ ค๋ ๋ฆด๋ฆฌ์ค ์ฑ ์์๊ฐ ํ๋ณตํด์ง์ง ์์๊ณ (Alexei Vasyukov์๊ฒ ์ด๋ ฌํ ์ธ์ฌ๋ฅผ ์ ํฉ๋๋ค!) ๋ค์๋ ์์นจ ์ฐ๋ฆฌ ์์คํ ์ ๋ํด ๋ฐ๋ปํ ๋ง์ ๋ง์ดํ์ต๋๋ค. ํ์ง๋ง ๊ฒฐ๊ณผ์ ์ผ๋ก XNUMX๋ถ ์์ ๊ธฐ์ค์ด ์ ํด์ก์ต๋๋ค.
์ฑ๋ฅ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ต๋๋ค. ์ถฉ์ฑ๋ ์์คํ ์ ์ํคํ ์ฒ๋ก ์ธํด ๋งค์ฐ ํธ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ธ ๊ฐ์ ๋ณ๋ ฌ ์ค๋ ๋์์ ์๋ ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์์ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ ํ ์คํธ๊ฐ ์์ฒด ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ง ์๊ณ ์์คํ ์ ์ ํฉํ ๊ฒ์ ์ฐพ์ผ๋ ค๊ณ ํ ๋ ์ ๊ทผ ๋ฐฉ์์ ํฌ๊ธฐํ์ต๋๋ค. ๋ณ๊ฒฝ ํ ์ด ์๋ ์๊ฐ์ด 3-4๋ถ์ผ๋ก ๋จ์ถ๋์์ต๋๋ค.
- ์๋ ํ
์คํธ๊ฐ ์๋ ํ๋ก์ ํธ๋ ๋ค์ํ ์คํ ๋์ ๋ฐฐํฌํ ์ ์์ด์ผ ํฉ๋๋ค. ์ฌ์ ์ด๊ธฐ์ ์์ฒด ๋ฐฐ์น ํ์ผ์ ์์ฑํ๋ ค๋ ์๋๊ฐ ์์์ง๋ง ์์ฒด ์์ฑ ์๋ ์ค์น๊ฐ ์์ ํ ๊ณตํฌ๋ผ๋ ๊ฒ์ด ๋ถ๋ช
ํด์ก๊ณ ์ฐ๋ฆฌ๋ ์ฐ์
์ฉ ์๋ฃจ์
์ผ๋ก ์ ํํ์ต๋๋ค. ํ๋ก์ ํธ์ ์ง์ ๋ง์ ์ฝ๋๊ฐ ์๊ณ (์ฐ์ ์๋ ํ
์คํธ ์ฝ๋๋ฅผ ์ ์ฅํจ) ๋ฐ์ดํฐ๊ฐ ๋งค์ฐ ์ ๊ธฐ ๋๋ฌธ์(๋ฉ์ธ ๋ฐ์ดํฐ๋ ์๋ ํ
์คํธ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ์) ํ๋ก์ ํธ์ ํตํฉํ๊ธฐ๊ฐ ๋งค์ฐ ์ฌ์ด ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ฆฌํด๋ฒ ์ด์ค ํ๋ก์ ํธ.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ , ๊ด๋ฆฌ ๋ฐ ์ ์ฉํ๊ธฐ ์ํ ์คํ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฆฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ช ๋ น์ค ๋๋ Apache Maven๊ณผ ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ํตํด ๊ด๋ฆฌ๋ฉ๋๋ค. Liquibase์ ์๋ ์๋ฆฌ๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๋์ ์๋ฒ์ ๋กค์ ํด์ผ ํ๋ ๋ณ๊ฒฝ ์ฌํญ ๋๋ ์คํฌ๋ฆฝํธ์ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์นํด์ผ ํ๋ ์์์ ๋งค๊ฐ ๋ณ์๋ฅผ ๊ฒฐ์ ํ๋ ์ ์ด ํ์ผ๋ก ๊ตฌ์ฑ๋ ํน์ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋ ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค.
DBMS ์์ค์์ Liquibase๊ฐ ๋กค๋ฐฑ ๋ก๊ทธ๋ฅผ ์ ์ฅํ๋ ํน์ ํ ์ด๋ธ์ด ์์ฑ๋ฉ๋๋ค. ๊ฐ ๋ณ๊ฒฝ์๋ ํ๋ก์ ํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ ๊ฐ์ ๋งค๋ฒ ๋น๊ต๋๋ ๊ณ์ฐ๋ ํด์๊ฐ ์์ต๋๋ค. Liquibase ๋๋ถ์ ์์คํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ ํ๋ก์ ์ฝ๊ฒ ๋กค์์ํ ์ ์์ต๋๋ค. ์๋ ํ ์คํธ๋ ์ด์ ํ ์คํธ ๋ฐ ๋ฆด๋ฆฌ์ค ํ๋ก์ ์ปจํ ์ด๋(๊ฐ๋ฐ์์ ๊ฐ์ธ ํ๋ก)์์ ์คํ๋ฉ๋๋ค.
๊ทธ๋ผ, ๋จ์ ํ
์คํธ ์์คํ
์ ์ ์ฉํ ๊ฒฐ๊ณผ์ ๋ํด ์ด์ผ๊ธฐํด ๋ด
์๋ค.
- ๋ฌผ๋ก ์ฐ์ ์ฐ๋ฆฌ๋ ๋ ๋์ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์์ํ๋ค๊ณ ํ์ ํฉ๋๋ค. ์๋ ํ ์คํธ๋ ๋งค์ผ ์คํ๋๋ฉฐ ๋ฆด๋ฆฌ์ค๋ง๋ค ์์ญ ๊ฐ์ ๋ฒ๊ทธ๋ฅผ ์ฐพ์ต๋๋ค. ๋ํ ์ด๋ฌํ ์ค๋ฅ ์ค ์ผ๋ถ๋ ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก ๋ณ๊ฒฝํ๊ณ ์ ํ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ ์ผ๋ก๋ง ๊ด๋ จ๋์ด ์์ต๋๋ค. ์ด๋ฌํ ์ค๋ฅ๊ฐ ์๋ ํ ์คํธ์์ ๋ฐ๊ฒฌ๋์๋ค๋ ๊ฐํ ์์ฌ์ด ์์ต๋๋ค.
- ํ์ ํน์ ๊ธฐ๋ฅ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ค๋ ํ์ ์ ์ป์์ต๋๋ค. ์ฐ์ ์ด๊ฒ์ ์ฐ๋ฆฌ์ ์ค์ํ ํ๋ก์ธ์ค์ ๊ด๋ จ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ง๋ XNUMX๊ฐ์ ๋์ ์ํ๋ก ํ ์ธ ๋ฐ ๋ณด๋์ค๋ฅผ ๋ฐฐํฌํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
- ํ ์คํธ ๋ฐ๋ณต ํ์๋ฅผ ์ค์ด๋ ๋ฐ ์ฑ๊ณตํ์ต๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์๋ ํ ์คํธ๊ฐ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ๋ถ์๊ฐ์ ์๊ฐ์ ํ ์คํฐ๋ ๋ ๋์ ํ์ง์ ์ฝ๋๋ฅผ ์ป์ต๋๋ค. ์ด๋ฏธ ํ์ธ๋์์ต๋๋ค.
- ์๋ํ ํ ์คํธ ๊ฐ๋ฐ์ ์ผ๋ถ๋ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ปจํ ์ด๋์ ํ ์คํธ ๋ฐ์ดํฐ๋ ๊ฐ์ฒด ์์ฑ ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์์ฑ๋ฉ๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ์๋ โโํ ์คํธ ์์คํ ์ "์์ฉ"ํ๋๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๊ฒ์ด ์ค์ํ๊ณ ์ ์ฉํ๋ค๋ ์ดํด๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ์์ ์ ๊ฒฝํ์ ๋น์ถ์ด ๋ณผ ๋ ์ด๊ฒ์ ์ฌ์ค๊ณผ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ์๋ ํ ์คํธ๋ฅผ ์์ฑํ๊ณ ์ ์ง ๊ด๋ฆฌ ๋ฐ ๊ฐ๋ฐํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํด์ผ ํ๋ฉฐ ์ข ์ข ์ด๋ฌํ ์๊ฐ ๋น์ฉ์ ๊ทธ๋งํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ํ๋ก๋์ ์ผ๋ก ์ด๋ํ์ฌ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค. ์ฐ๋ฆฌ๋๋ผ์์๋ ๊ฐ๋ฐ์๊ฐ ์ค์ ์์ ์๋ ํ ์คํธ๋ก ๊ธฐ๋ฅ์ ์ปค๋ฒํ๋๋ก ์์ฒญํฉ๋๋ค.
๋ค์ ๋จ๊ณ
์๋ํ๋ ํ
์คํธ ํ๋ก์ ํธ์ ๊ฐ๋ฐ ๊ณํ์ ๋ํด ์ด์ผ๊ธฐํด ๋ด
์๋ค.
๋ฌผ๋ก Sportmaster ๋ก์ดํฐ ์์คํ ์ด ์ด์ ์๊ณ ๊ณ์ ๋ฐ์ ํ๋ ํ ์๋ ํ ์คํธ๋ ๊ฑฐ์ ๋์์ด ๋ฐ์ ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์ ์ฃผ์ ๋ฐฉํฅ์ ์ปค๋ฒ๋ฆฌ์ง ์์ญ์ ํ์ฅ์ ๋๋ค.
์๋ ํ ์คํธ์ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์์ ์ ์ด ์๊ฐ์ ๊พธ์คํ ์ฆ๊ฐํ ๊ฒ์ด๋ฉฐ ๋ค์ ์ฑ๋ฅ ๋ฌธ์ ๋ก ๋์๊ฐ์ผ ํฉ๋๋ค. ์๋ง๋ ์๋ฃจ์ ์ ๋ณ๋ ฌ ์ค๋ ๋ ์๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ช ๋ฐฑํ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ณด๋ค ์ฌ์ํ์ง ์์ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒฝ์ฐ ๋ค์์ ๊ฐ์กฐํฉ๋๋ค.
- ์ด์ ์๋ ํ ์คํธ๋ DBMS ์์ค์์ ๊ด๋ฆฌ๋ฉ๋๋ค. ์ฑ๊ณต์ ์ธ ์์ ์ ์ํด์๋ PL/SQL์ ๋ํ ์ง์์ด ํ์ํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์์คํ ๊ด๋ฆฌ(์: ๋ฉํ๋ฐ์ดํฐ ์์ ๋๋ ์์ฑ)๋ Jenkins ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ ์ฌ์ฉํ๋ ์ผ์ข ์ ๊ด๋ฆฌ์ ํจ๋์์ ์ํํ ์ ์์ต๋๋ค.
- ๋ชจ๋๊ฐ ์์ ๋ฐ ์ง์ ์งํ๋ฅผ ์ข์ํฉ๋๋ค. ์๋ ํ
์คํธ์ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ฒ์ฉ ์งํ๋ ์ฝ๋ ์ ์ฉ ๋ฒ์ ๋๋ ์ฝ๋ ์ ์ฉ ๋ฉํธ๋ฆญ์
๋๋ค. ์ด ํ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ ์ค์ธ ์์คํ
์ฝ๋์ ๋ช ํผ์ผํธ๊ฐ ์๋ ํ
์คํธ์ ํฌํจ๋๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๋ฒ์ 12.2๋ถํฐ Oracle์ ์ด ๋ฉํธ๋ฆญ์ ๊ณ์ฐํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ํ์ค DBMS_PLSQL_CODE_COVERAGE ํจํค์ง ์ฌ์ฉ์ ์ ์ํฉ๋๋ค.
๋น์ฌ์ ์๋ ํ ์คํธ ์์คํ ์ ์ถ์๋ ์ง 1๋ ์ด ์กฐ๊ธ ๋์์ผ๋ฉฐ ์ด์ ์ ์ฉ ๋ฒ์๋ฅผ ํ๊ฐํ ๋๊ฐ ๋์์ต๋๋ค. ๋ด ๋ง์ง๋ง ํ๋ก์ ํธ(Sportmaster๊ฐ ์๋ ํ๋ก์ ํธ)์์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋ฌ์ต๋๋ค. ์๋ ํ ์คํธ ์์ 10๋ ํ ๊ฒฝ์์ง์ ์ฐ๋ฆฌ๊ฐ ๋ค๋ฃจ๋ ์ฝ๋์ ๋ช ํผ์ผํธ๋ฅผ ํ๊ฐํ๋ ์์ ์ ์ค์ ํ์ต๋๋ค. ์ ์ฉ ๋ฒ์๊ฐ 20% ์ด์์ด๋ฉด ๊ฒฝ์์ง์ด ๋ง์กฑํ ๊ฒ์ ๋๋ค. ์ ํฌ ๊ฐ๋ฐ์๋ค์ XNUMX% ์ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์์ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค๊ณ , ๊ทธ๊ฒ์ ์ธก์ ํ๊ณ , XNUMX%๋ฅผ ์ป์์ต๋๋ค. ์ถํํ๊ธฐ ์ํด ์์ ๋ฐ์ผ๋ฌ ๊ฐ์ง๋ง ์ด๋ป๊ฒ ๊ฐ๋์ง, ๋์ค์ ์ด๋๋ก ๊ฐ๋์ง๋ ์ ํ ๋ค๋ฅธ ์๊ธฐ๋ค.
- ์๋ ํ ์คํธ๋ ๋ ธ์ถ๋ ์น ์๋น์ค๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค. ์ค๋ผํด์ ๋น์ ์ด ์ด๊ฒ์ ํ ์ ์๋๋ก ํ์ฉํ๋ฉฐ, ์ฐ๋ฆฌ๋ ๋ ์ด์ ๋ง์ ๋ฌธ์ ์ ์ง๋ฉดํ์ง ์์ ๊ฒ์ ๋๋ค.
- ๋ฌผ๋ก ์๋ํ ํ ์คํธ ์์คํ ์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ ์ฉํ ์๋ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ฐ์ ์๋ฃจ์ ์ ๋ณดํธ์ ์ด๋ฉฐ Oracle๋ง ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ๋ค๋ฅธ Sportmaster ํ๋ก์ ํธ์ ๋ํ ์๋ ํ ์คํธ์ ๊ด์ฌ์ด ์๋ค๊ณ ๋ค์์ต๋๋ค.
์กฐ์ฌ ๊ฒฐ๊ณผ
์์ฝํด๋ณด์. Sportmaster์ ๋ก์ดํฐ ์์คํ ํ๋ก์ ํธ์์ ์ฐ๋ฆฌ๋ ์๋ ํ ์คํธ ์์คํ ์ ๊ตฌํํ์ต๋๋ค. ๊ทธ ๊ธฐ๋ฐ์ Stephen Feuerstein์ utPLSQL ์๋ฃจ์ ์ ๋๋ค. utPLSQL ์ฃผ๋ณ์๋ ์๋ ํ ์คํธ ๋ฐ ์์ฒด ์์ฑ ๋ณด์กฐ ๋ชจ๋(๋ฐ์ฒ, ๋ฐ์ดํฐ ์์ฑ ๋ชจ๋ ๋ฑ)์ ์ํ ์ฝ๋๊ฐ ์์ต๋๋ค. ์๋ ํ ์คํธ๋ ๋งค์ผ ์คํ๋๋ฉฐ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์์ ๊ณผ ์ด์ ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋์ ํ์ง์ ์ํํธ์จ์ด๋ฅผ ์ถ์ํ๊ธฐ ์์ํ๋ค๊ณ ํ์ ํฉ๋๋ค. ๋์์ ๊ฒฐ๊ณผ ์๋ฃจ์ ์ ๋ณดํธ์ ์ด๋ฉฐ Oracle DBMS์์ ์๋ํ๋ ํ ์คํธ๋ฅผ ๊ตฌ์ฑํด์ผ ํ๋ ๋ชจ๋ ํ๋ก์ ํธ์ ์์ ๋กญ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
PS ์ด ๊ธฐ์ฌ๋ ๊ทธ๋ค์ง ๊ตฌ์ฒด์ ์ด์ง ์์ ๊ฒ์ผ๋ก ํ๋ช ๋์์ต๋๋ค. ํ ์คํธ๊ฐ ๋ง๊ณ ๊ธฐ์ ์ ์ธ ์๊ฐ ๊ฑฐ์ ์์ต๋๋ค. ์ฃผ์ ๊ฐ ์ ์ธ๊ณ์ ์ผ๋ก ํฅ๋ฏธ๋กญ๋ค๋ฉด ๊ณ์ํ ์ค๋น๊ฐ ๋์ด ์๊ณ ์ง๋ XNUMX๊ฐ์ ๋์ ๋ณ๊ฒฝ๋ ์ฌํญ์ ์๋ ค์ฃผ๊ณ ์ฝ๋ ์์ ๋ฅผ ์ ๊ณตํ๋ ์ฐ์์ผ๋ก ๋์์ฌ ์ค๋น๊ฐ ๋์์ต๋๋ค.
์์ผ๋ก ๊ฐ์กฐํด์ผ ํ ์ฌํญ์ด๋ ๊ณต๊ฐ๊ฐ ํ์ํ ์ง๋ฌธ์ด ์์ผ๋ฉด ์๊ฒฌ์ ์์ฑํ์ญ์์ค.
๋ฑ๋ก๋ ์ฌ์ฉ์๋ง ์ค๋ฌธ ์กฐ์ฌ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
์ด์ ๋ํด ๋ ์จ๋ณผ๊น์?
-
์ ๋ฌผ๋ก
-
๊ณ ๋ง์ง ๋ง ์ฌ์ ํ ๊ฒ
12๋ช
์ ์ฌ์ฉ์๊ฐ ํฌํํ์ต๋๋ค. 4๋ช
์ ์ฌ์ฉ์๊ฐ ๊ธฐ๊ถํ์ต๋๋ค.
์ถ์ฒ : habr.com