๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์งํ: RDBMS์ ๋ณ๊ฒฝ ๊ด๋ฆฌ
RDBMS์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ฐ์ ์ ์ดํด๋ณด๊ณ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ฉด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๊ฒ ๊ด๋ฆฌ, ์กฐ์ ๋ฐ ๋ชจ๋ํฐ๋งํ ์ ์๋ ๋ฌธ์ , ์ ๋ต ๋ฐ ๋๊ตฌ๋ฅผ ํด๊ฒฐํฉ๋๋ค.

๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์งํ๋ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ํฅ์ ์ต์ํํ๋ฉด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ์๋ก์ด ์๊ตฌ ์ฌํญ, ๋ณ๊ฒฝ ๋๋ ์ต์ ํ์ ๋ง๊ฒ ์กฐ์ ํ๋ ์ง์์ ์ธ ํ๋ก์ธ์ค์ ๋๋ค. ์ํํธ์จ์ด ์์คํ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๋ค์ํ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ, ์ต์ ํ ๋๋ ์๋ก์ด ๊ธฐ๋ฅ์ผ๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๊ฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
RDBMS(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ) ์์ ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ์ฑ๊ณต์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ ์์คํ ๊ฐ๋ ์ค์ง ์๊ฐ์ ๋ฐฉ์งํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋ํ ๊ฐ๋ฐ์๋ ๋ชจ๋ ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ด ๋ชจ๋ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํธํ๋๋์ง ํ์ธํ๊ณ , ๋ฐ์ดํฐ ์์ค ๋ฐ ์ ์ฌ์ ์ธ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ , ํ์ฌ ์คํค๋ง์ ์ ๋ฐ์ดํธ๋ ์คํค๋ง ๊ฐ์ ์ํํ ์ ํ์ ๋ณด์ฅํด์ผ ํฉ๋๋ค.
์คํค๋ง ๋ณ๊ฒฝ ๊ด๋ฆฌ์ ๊ณผ์
์คํค๋ง ๋ณ๊ฒฝ ๊ด๋ฆฌ๋ ํจ์จ์ ์ด๊ณ ์์ ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์งํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์คํค๋ง ์ ๋ฐ์ดํธ ๋ฐ ์์ ์ ์ฒ๋ฆฌํ๋ ๋์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์ ๋ฐ์ดํธ๋ ๋ณต์กํ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ๋ฐ์ดํฐ ๋ณํ์ ๋๋ฐํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์คํค๋ง๊ฐ ๋ฐ์ ํ๋ ๋์ ๋ฐ์ดํฐ๊ฐ ์๋ฏธ์ ์ผ๊ด์ฑ์ ์ ์งํ๋์ง ํ์ธํ๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ์ ํธํ์ฑ: ์คํค๋ง ๋ณ๊ฒฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์กดํ๋ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ถ์ผ์น๋ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ํฅ์ ๋ฐ๋ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ ์คํธํ๊ณ ์กฐ์ ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
- ํ๊ฒฝ ๊ฐ ์กฐ์ : ์๋ก ๋ค๋ฅธ ์คํค๋ง ๋ฒ์ ์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ํ๊ฒฝ(๊ฐ๋ฐ, ์คํ ์ด์ง ๋ฐ ํ๋ก๋์ )์ ๋ณด์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ๋ค์ํ ํ๊ฒฝ์์ ์คํค๋ง ์ ๋ฐ์ดํธ๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ผ๋ฉฐ, ํนํ ์ฌ๋ฌ ํ์ด๋ ๊ฐ๋ฐ์๊ฐ ๊ด๋ จ๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
- ๊ฐ๋ ์ค์ง ์๊ฐ ์ต์ํ: ์คํค๋ง ๋ณ๊ฒฝ ์ ํ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ ์ค์ง ์๊ฐ์ด ํ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ์๋น์ค ์ค๋จ์ด ๋ฐ์ํ๊ณ ๋น์ฆ๋์ค ์ด์์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ฌ์ฉ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ํํ ๊ฒฝํ์ ์ ์งํ๋ ค๋ฉด ๊ฐ๋ ์ค์ง ์๊ฐ์ ๋จ์ํํ๊ณ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์คํค๋ง ๊ธฐ๋ก ์ถ์ : ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ๊ณผ ํด๋น ๊ธฐ๋ก์ ๋ก๊น ํ๊ณ ์ถ์ ํ๋ ๊ฒ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆฌ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ ์ ๋ํ ๊ฐ์ฌ ๊ฐ๋ฅํ ๊ธฐ๋ก์ ์ ์งํ๋ ๋ฐ ์ค์ํฉ๋๋ค.

๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ฐ์ ์ ์ํ ์ ๋ต
์ ์ฆ๋ ์ ๋ต์ ์ ์ ํ๊ฒ ๊ณํํ๊ณ ๊ตฌํํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ฐ์ ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ธ๊ธฐ ์๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
- ๋ฒ์ ๊ด๋ฆฌ: ๊ฐ ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ๋ฒ์ ๋ฒํธ๋ฅผ ํ ๋นํ๋ฉด ์ถ์ ์ด ๋ ์๋๊ณ ๋ค์ํ ํ๊ฒฝ ๊ฐ์ ์กฐ์ ์ด ๋จ์ํ๋๋ฉฐ ํ์ํ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ ์ฝ๊ฒ ๋๋๋ฆด ์ ์์ต๋๋ค. ๋ฒ์ ์ ์ด ์์คํ ์ ์คํค๋ง ๋ฒ์ ๊ด๋ฆฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์ญ๋ฐฉํฅ ๋ฐ ์๋ฐฉํฅ ํธํ ๋ณ๊ฒฝ: ๊ฐ๋ฅํ ๋๋ง๋ค ์ญ๋ฐฉํฅ ๋ฐ ์๋ฐฉํฅ ํธํ์ด ๊ฐ๋ฅํ ์คํค๋ง ๋ณ๊ฒฝ, ์ฆ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํฅ์ ์ฃผ์ง ์๋ ๋ณ๊ฒฝ์ ์ํํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค. ํธํ ๊ฐ๋ฅํ ๋ณ๊ฒฝ์ ์๋ก๋ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ์ ํ ์ด๋ธ ๋๋ ์ด ์ถ๊ฐ, ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ด์ ๋ฐ์ดํฐ ์ ํ ์ ๋ฐ์ดํธ, ์ ์ธ๋ฑ์ค ์์ฑ ๋ฑ์ด ์์ต๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ: ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ฑฐ๋ ๋๋๋ฆฌ๋ ๋ฐ ํ์ํ SQL ๋ช ๋ น์ด ํฌํจ๋ ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๋ฐํฉ๋๋ค. ์ด๋ฌํ ์คํฌ๋ฆฝํธ๋ ๋ฉฑ๋ฑ์ ์ด์ด์ผ ํฉ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ต์ข ์ํ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ฌ๋ฌ ๋ฒ ์คํํ ์ ์์ต๋๋ค. ๋ฒ์ ์ ์ด ์์คํ ์ ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๊ณ ์คํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ๋๊ตฌ ๋ฐ ํ๋ ์์ํฌ ์ฌ์ฉ: ์คํค๋ง ๊ด๋ฆฌ ๋ฐ ๋ง์ด๊ทธ๋ ์ด์ ์ ์๋ํํ๋ ๋๊ตฌ ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ฑํํ๋ฉด ์์ฐ์ฑ์ ํฅ์ํ๊ณ ์๋ ์ ๋ฐ์ดํธ์ ๊ด๋ จ๋ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค. ์๋ก๋ Flyway, Liquibase ๋ฐ Alembic์ด ์์ต๋๋ค.
- ํ ์คํธ ๋ฐ ๊ฒ์ฆ: ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ํ๋ก๋์ ์ ์ ์ฉํ๊ธฐ ์ ์ ํต์ ๋ ๊ฐ๋ฐ ๋๋ ์ค๋น ํ๊ฒฝ์์ ์ฒ ์ ํ๊ฒ ํ ์คํธํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์คํค๋ง ์ ๋ฐ์ดํธ์ ์ํฅ์ ์๋ณํ๊ณ ํด๊ฒฐํ๋ฉฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด๋ฌํ ์ ๋ต์ ๊ตฌํํจ์ผ๋ก์จ ๊ฐ๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์๋ ๋ฐ์ดํฐ ์ผ๊ด์ฑ, ์ ํ๋ฆฌ์ผ์ด์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์ต์ํํ๋ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ฐ์ ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ญํ
๋ฒ์ ์ ์ด ์์คํ (VCS)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ , ๋ค์ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณํฉํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ณ , ์ถฉ๋์ ๋ฐฉ์งํจ์ผ๋ก์จ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์งํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. VCS๋ฅผ ์คํค๋ง ๊ด๋ฆฌ ๋๊ตฌ์ ํตํฉํจ์ผ๋ก์จ ๊ฐ๋ฐ ํ์ ์คํค๋ง ์ ๋ฐ์ดํธ๋ฅผ ์กฐ์ ํ๊ณ ํ ๊ตฌ์ฑ์๊ณผ ๋ณ๊ฒฝ ์ฌํญ์ ๊ณต์ ํ๋ฉฐ ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ์์ฐ ํ๊ฒฝ ์ ๋ฐ์์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก VCS๋ ์์ค ์ฝ๋ ํ์ผ์ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๊ด๋ฆฌ์ VCS๋ฅผ ํตํฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
- ๋ณ๊ฒฝ ์ถ์ : VCS๋ ์ด์ด ์ถ๊ฐ, ์ ๊ฑฐ ๋๋ ์์ ๋ ์๊ธฐ์ ๊ฐ์ ์คํค๋ง ์์ ๋ด์ญ์ ์ถ์ ํ์ฌ ์คํค๋ง๊ฐ ์ด๋ป๊ฒ ๋ฐ์ ํ๋์ง ๋ช ํํ๊ฒ ์ดํดํ ์ ์๋๋ก ๋์์ค๋๋ค.
- ๋ฒ์ ๊ด๋ฆฌ: ๋ค์ํ ๋จ๊ณ์์ ์คํค๋ง ์ ์ ํ์ผ์ ์ ํํ ๋ฒ์ ๊ด๋ฆฌ๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๊ณ ๋ฐฐํฌ๋ฅผ ๋จ์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๋ถ๊ธฐ ๋ฐ ๋ณํฉ: VCS๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ถ๋ฆฌ ๊ฐ๋ฅํ ๋ถ๊ธฐ์์ ์์ ํ ์ ์์ผ๋ฏ๋ก ๊ธฐ๋ณธ ์คํค๋ง์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ๋ฌ ์คํค๋ง ๋ณ๊ฒฝ์ ์ํํ ์ ์์ต๋๋ค. ์๋ฃ๋๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ์ํํ๊ฒ ๋ณํฉ๋ ์ ์์ต๋๋ค.
- ์ถฉ๋ ํด๊ฒฐ: ๋ ๋ช ์ด์์ ๊ฐ๋ฐ์๊ฐ ๋์ผํ ์คํค๋ง์์ ์์ ํ๋ ๊ฒฝ์ฐ VCS๋ ์ถฉ๋์ ์๋ณํ๊ณ ํด๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๊ฐ ์ผ๊ด๋๊ณ ๊ธฐ๋ฅ์ ์ผ๋ก ์ ์ง๋๋๋ก ํ ์ ์์ต๋๋ค.
Git, SVN ๋๋ Mercurial๊ณผ ๊ฐ์ด ๋จ์์ฑ, ํ์ฅ์ฑ ๋ฐ ์ ์ฐ์ฑ์ด ์ ์กฐํฉ๋ VCS๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ ํํ ์์คํ ์ ๊ด๊ณ์์ด ํ์ ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ ๋ถ๊ธฐ, ๋ณํฉ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํ ํ๋ก์ธ์ค๋ฅผ ํฌํจํ๋ ์ํฌํ๋ก๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ ๋ฐ ์ ๊ทผ ๋ฐฉ์
๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ์ ์ ๊ทผ ๋ฐฉ์์ ์คํค๋ง ์ ๋ฐ์ดํธ ์ ์ฉ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๊ณ ์๋ ์ค๋ฅ์ ์ํ์ ์ต์ํํ๋ฉฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํจ์ผ๋ก์จ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์งํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ์ ํ๋ฆฝ๋ ์คํ ์์ค ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๊ฐ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ง์ํฉ๋๋ค. ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Flyway: Flyway๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํตํฉ๋๋ ๊ฒฝ๋ ์คํ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ์ ๋๋ค. ๋ฒ์ ์ด ์ง์ ๋ SQL ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์คํค๋ง ๋ณ๊ฒฝ์ ์ฒ๋ฆฌํ๊ณ MySQL, PostgreSQL , Oracle ๋ฐ SQL Server์ ๊ฐ์ ๊ด๋ฒ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ํฉ๋๋ค.
- Liquibase: Liquibase๋ XML, YAML ๋๋ JSON ์ ์ ํ์ผ์ ์ฌ์ฉํ์ฌ ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ๊ด๋ฆฌํ๋ ๋ ๋ค๋ฅธ ์คํ ์์ค ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ์ ๋๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํตํฉ๋์ด SQL ๊ธฐ๋ฐ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๋ณด๋ค ๋ ๋์ ์์ค์ ์ถ์ํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Alembic: SQLAlchemy๋ฅผ ์ฌ์ฉํ๋ Python ๊ฐ๋ฐ์๋ฅผ ์ํด ์ค๊ณ๋ Alembic์ ๋ฒ์ ์ด ์ง์ ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ฌ ์คํค๋ง ๋ณ๊ฒฝ์ ๊ตฌํํ๋ ์คํ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ์ ๋๋ค. Alembic์ ๋ช ๋ น์ค ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ณ MySQL, PostgreSQL, SQLite์ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ: ํน์ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ธ์๋ ์ฌ์ฉ์ ์ ์ SQL ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ฌ ์คํค๋ง ๋ณ๊ฒฝ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์คํฌ๋ฆฝํธ๋ ๋ฒ์ ์ ๊ด๋ฆฌํ๊ณ ์์ค ์ฝ๋์ ํจ๊ป ์ ์ฅํ์ฌ ์คํค๋ง ๋ณ๊ฒฝ ๋ด์ญ์ ์ ์งํด์ผ ํฉ๋๋ค.
์ ํํ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ์ ๊ด๊ณ์์ด ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ํ๋ก๋์ ์์คํ ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๊ธฐ ์ํด ์คํค๋ง ์ ๋ฐ์ดํธ ์ ๊ทผ ๋ฐฉ์์ ์ ์คํ๊ฒ ๊ณํํ๊ณ ์คํํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ํฌํจํ๋ ์ํฌํ๋ก ์ค์ ์ด ํฌํจ๋ฉ๋๋ค.
- ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ ์์ฑ ๊ท์น ์ ์
- ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ ์ด๋ฆ ์ง์ ๋ฐ ๋ฒ์ ๊ด๋ฆฌ์ ๋ํ ์ง์นจ ์ค์
- ๊ฐ๋ฑ์ ์ต์ํํ๊ธฐ ์ํด ํ์ ๊ฐ ์กฐ์
- ํ๋ก๋์ ์ ๋ฐฐํฌํ๊ธฐ ์ ์ ๋ณ๋์ ํ๊ฒฝ์์ ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ ํ ์คํธ
- ์๋ชป๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ณต๊ตฌํ๊ธฐ ์ํ ๋กค๋ฐฑ ๋ฉ์ปค๋์ฆ ๊ตฌํ
์ฌ๋ก ์ฐ๊ตฌ: AppMaster ์ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ
AppMaster ๋ ธ์ฝ๋ ํ๋ซํผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์งํ๋ฅผ ๋ค๋ฃจ๋ ํ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋ณด์ฌ์ค๋๋ค. AppMaster๋ ์ฒญ์ฌ์ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ ์์คํ ์ ํ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ต์ํํ๋ฉด์ ์คํค๋ง ๋ณ๊ฒฝ์ ์ค์๊ฐ์ผ๋ก ์ ์ํ๋ ์น, ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. AppMaster ์ ์คํค๋ง ๋ฐ์ ํ๋ก์ธ์ค๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ธก๋ฉด์ ์ค์ฌ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์ฒญ์ฌ์ง
AppMaster ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๋ drag-and-drop ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ๋ํ๋ด๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์๊ฐ์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ์คํค๋ง ์ ๋ฐ์ดํธ์ ์ ์ฐ์ฑ์ ๋ณด์ฅํ๋ฉด์ ์ง์ ์คํค๋ง ์กฐ์์ ๋ฎ์ ์์ค์ ๋ณต์ก์ฑ์ ์ถ์ํํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์๋ ์์ฑ
AppMaster 30์ด ์ด๋ด์ ์คํค๋ง๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ ์ผ๋ก ์์ฑํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ ์ ๋ฐ์ดํธ๋ ์คํค๋ง ์ฒญ์ฌ์ง์ ๊ธฐ๋ฐ์ผ๋ก ์ฒ์๋ถํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ์ฌ ๊ธฐ์ ์ ๋ถ์ฑ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
API ๋ฌธ์ ๋ฐ ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ
๋ชจ๋ ํ๋ก์ ํธ์ ๋ํด AppMaster ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ํ๋ก๋์ ํ๊ฒฝ์ ์ ์ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์๋ฒ endpoints ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ์ํ๋ Swagger(๊ฐ๋ฐฉํ API) ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
์์ฐ ์ค๋น
AppMaster ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฑ์๋์ฉ Go(golang)์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ Vue3 ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋์ด ๊ธฐ์กด ์ธํ๋ผ์ ์ฝ๊ฒ ํตํฉํ ์ ์๋ ํ๋ก๋์ ์ค๋น๊ฐ ๋์ด ์๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ํจ์จ์ ์ธ ์ถ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
AppMaster ํ๋ซํผ์ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ต์ํํ๊ณ ํจ์จ์ฑ์ ๊ทน๋ํํ๋ฉด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ฐ์ ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ๋ ฅํ ์ฌ๋ก ์ฐ๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. AppMaster ์๊ฐ์ ์คํค๋ง ๋์์ด๋, ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ ๋ฐ ์๋ํ๋ ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ ์์ฑ์ ๊ฒฐํฉํ์ฌ ์คํค๋ง ์งํ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ์ฌ ์ฌ์ฉ์๊ฐ ๊ณ ํ์ง์ ํ๋ก๋์ ์ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๊ด๋๊ฒ ์์ฑํ๋ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
๊ฒฐ๋ก
์๊ฐ์ด ์ง๋๋ฉด์ ์๊ตฌ ์ฌํญ๊ณผ ์ต์ ํ๊ฐ ๋ํ๋๊ธฐ ๋๋ฌธ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS)์ ๊ด๋ฆฌํ๊ณ ์ ์งํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ฐ์ ์ด ํ์์ ์ ๋๋ค. ํ๋ก์ธ์ค๋ ์ด๋ ค์ธ ์ ์์ง๋ง ํจ๊ณผ์ ์ธ ์ ๋ต๊ณผ ๋๊ตฌ๋ฅผ ๊ฒฐํฉํ ์ ๊ตฌ์ฑ๋ ์ ๊ทผ ๋ฐฉ์์ ์ด๋ฌํ ๊ณผ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด ๊ธฐ์ฌ์์๋ ์คํค๋ง ๋ณ๊ฒฝ ๊ด๋ฆฌ์ ๊ณผ์ ์ ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์งํ์ ์ค์์ฑ์ ๋ํด ๋ ผ์ํ์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ ์ ํ๊ฒ ์ดํดํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ํ์ ์ํํ๊ณ , ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ฉฐ, ์์คํ ๊ฐ๋ ์ค์ง ์๊ฐ์ด๋ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ค๋จ์ ๋ฐฉ์งํ๋ ์ ๋ต์ ์ฑํํ ์ ์์ต๋๋ค.
๋ฒ์ ์ ์ด ์์คํ ์ ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ํ๋ก๋์ ํ๊ฒฝ ์ ๋ฐ์์ ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ง ๋ฐ ๊ด๋ฆฌํ๊ณ ์คํค๋ง ๋ฒ์ ์ ์ถ์ ํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๊ฐ๋ ฅํ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ์ ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ์ฌ ๋ณต์กํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ ๋ง์ด๊ทธ๋ ์ด์ ๋ฐ ๊ด๋ฆฌ ์์ ์ ์๋ํํ์ฌ ์๊ฐ์ ์ ์ฝํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฐ์ดํธ์ ์ ํ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ no-code ํ๋ซํผ์ธ AppMaster ๋ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ ์์คํ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์งํ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ๋ ฅํ ์๋ฅผ ์ ๊ณตํฉ๋๋ค. AppMaster ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์ฒญ์ฌ์ง์ ์ฌ์ฉํ๋ฉด ์ ์ํ ์์ ์ด ๊ฐ๋ฅํ๊ณ ๊ธฐ์กด ๊ฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์์ ์์ฃผ ๋ฐ์ํ๋ ๊ธฐ์ ์ ๋ถ์ฑ๋ฅผ ์ต์ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํฌ๊ด์ ์ธ ์์คํ ์ ํตํด ๊ธฐ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ์ฌ ์๊ฐ๊ณผ ์์์ ๋ชจ๋ ์ ์ฝํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ต์ ์์คํ ์ ์ฅ๊ธฐ์ ์ธ ์ฑ๊ณต์ ์ํด ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ต์ ์ํ๋ก ์ ์งํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ RDBMS์ ์ํํ ๋ฐ์ ์ ๋ณด์ฅํ๊ณ ๋์์์ด ๋ณํํ๋ ์๊ตฌ ์ฌํญ ๋ฐ ๊ฐ์ ์ฌํญ์ ์ฝ๊ฒ ์ ์ํ๋ ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์งํ ์ ์์ต๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์งํ๋ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ํฅ์ ์ต์ํํ๋ฉด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๋ฅผ ์๋ก์ด ์๊ตฌ ์ฌํญ, ๋ณ๊ฒฝ ๋๋ ์ต์ ํ์ ๋ง๊ฒ ์กฐ์ ํ๋ ์ง์์ ์ธ ํ๋ก์ธ์ค์ ๋๋ค.
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ , ์์คํ ๊ฐ๋ ์ค์ง ์๊ฐ์ ๋ฐฉ์งํ๊ณ , ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ์ ํธํ์ฑ์ ๋ณด์ฅํ๊ณ , ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ํ๋ก๋์ ํ๊ฒฝ ์ ๋ฐ์์ ์ฌ๋ฌ ์คํค๋ง ๋ฒ์ ์ ์ถ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์คํค๋ง ๋ณ๊ฒฝ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ฐ์ ์ ์ํ ์ ๋ต์๋ ๋ฒ์ ๊ด๋ฆฌ, ์ด์ ๋ฒ์ ๊ณผ ์์ผ๋ก ํธํ๋๋ ๋ณ๊ฒฝ ์ฌํญ, ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ, ์คํค๋ง ๊ด๋ฆฌ ๋ฐ ๋ง์ด๊ทธ๋ ์ด์ ์ ์๋ํํ๋ ๋๊ตฌ ๋ฐ ํ๋ ์์ํฌ ์ฌ์ฉ์ด ํฌํจ๋ฉ๋๋ค.
๋ฒ์ ์ ์ด ์์คํ ์ ์คํค๋ง ์ ์ ํ์ผ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ , ์คํค๋ง ๋ณ๊ฒฝ ์ฌํญ์ ๋ถ๊ธฐ ๋ฐ ๋ณํฉ์ ์ง์ํ๊ณ , ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ํ๋ก๋์ ํ๊ฒฝ ์ ๋ฐ์์ ์คํค๋ง ์ ๋ฐ์ดํธ๋ฅผ ์กฐ์ ํ๊ธฐ ์ํ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ์ฌ ์คํค๋ง ๋ฐ์ ์ ๋์ต๋๋ค.
๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ ๋ฐ ์ ๊ทผ ๋ฐฉ์์๋ Flyway, Liquibase, Alembic ๋ฐ ๋ฒ์ ์ ์ด ์์คํ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์๋ ๋๋ ์๋์ผ๋ก ์คํํ ์ ์๋ ์ฌ์ฉ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ ์ฌ์ฉ์ด ํฌํจ๋ฉ๋๋ค.
AppMaster ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์ฒญ์ฌ์ง์ ์ฌ์ฉํ์ฌ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ ์ผ๋ก ์์ฑํ๋ no-code ํ๋ซํผ์ ํตํด ์คํค๋ง ์งํ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. Swagger(๊ฐ๋ฐฉํ API) ๋ฌธ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ์ฌ ์ฌ์ฉ์๊ฐ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ต์ํํ๋ฉด์ ํจ์จ์ ์ผ๋ก ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก ํฉ๋๋ค.


