๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ์ ์ฌ๋ฌ ์๋ฒ, ๋ฐ์ดํฐ ์ผํฐ ๋๋ ์ง๋ฆฌ์ ์์น์์ ํธ์คํ ๋ ์ ์๋ ์ฌ๋ฌ ๋ฌผ๋ฆฌ์ ํํฐ์ ๋๋ ์ค๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ๋ฐ ํ์ฅ์ฑ ์์ญ์์ ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฒญํฌ๋ก ์ํ์ผ๋ก ๋ถํ ํจ์ผ๋ก์จ ์ฑ๋ฅ, ๊ฐ์ฉ์ฑ ๋ฐ ๋ด๊ฒฐํจ์ฑ์ ํฅ์์ํต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๊ฐ๋ ฅํ AppMasterno-code ํ๋ซํผ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋๋์ ๋ฐ์ดํฐ์ ๋์ ์ฌ์ฉ์๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ์ต์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งฅ๋ฝ์์ ํนํ ๊ด๋ จ์ด ์์ต๋๋ค.
์ต๊ทผ ๋ช ๋ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์์ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ๋ถ์ฐ ์ํคํ ์ฒ๋ก ๋ฐ์ ํ์ต๋๋ค. ์ด๋ฌํ ๋ณํ๋ ํ๋์จ์ด ๋ฐ ๋คํธ์ํน ๊ธฐ์ ์ ๋ฐ์ ๊ณผ ํจ๊ป ๋ฐ์ดํฐ ๋ฐ ์ฌ์ฉ์ ์๊ตฌ๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๋ฉด์ ๊ฐ์ํ๋์์ต๋๋ค. ์ด๋ฌํ ๋ณํ์ ๋์ฒํ๊ธฐ ์ํด ๊ฐ๋ฐ์๋ ์ข ์ข ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ๊ณผ ๊ฐ์ ๊ณ ๊ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ํ์ฅ์ฑ๊ณผ ์ต์ ์ ์ฑ๋ฅ ๋ฐ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
์ค๋ฉ์ ํ ์ด๋ธ์ ๊ฒน์น์ง ์๋ ์ด ์งํฉ์ ํฌํจํ๋ ๋ ์์ ์ํฐํฐ๋ก ๋ถํ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๋ ์์ง ๋ถํ ๊ณผ ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฆ ๋๋ค. ์ด์ ๋์กฐ์ ์ผ๋ก ์ค๋ฉ์ ์ฌ์ฉํ๋ฉด ๋จ์ผ ํ ์ด๋ธ์ ์ ์ฒด ํ์ ์ฌ๋ฌ ์ค๋์ ๋ถ์ฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ ์ธํธ ๋ถํ ์ ํตํด ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋ฉฐ, ์ด๋ก ์ธํด ์ฌ์ฉ์์ ๋๊ธฐ ์๊ฐ์ด ํฌ๊ฒ ์ค์ด๋ญ๋๋ค. ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์ ํฌ๋ช ํ ๋ฐฉ์์ผ๋ก ์์ ๋ถํ๋ฅผ ๋ถ์ฐํ ์ ์์ผ๋ฏ๋ก ๊ธฐ์กด ์ํํธ์จ์ด ์๋ฃจ์ ๊ณผ์ ์ํํ ํตํฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ์ ํต์ฌ ์์น ์ค ํ๋๋ ์ ์ ํ ์ค๋ ํค๋ฅผ ์ ํํ๋ ๊ฒ์ ๋๋ค. ์ค๋ ํค๋ ๋ฐ์ดํฐ๊ฐ ๋ถํ ๋๊ณ ๋ถ์ฐ๋๋ ๋ฐฉ์์ ๊ฒฐ์ ํ์ฌ ์์คํ ์ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ฟผ๋ฆฌ ํจํด, ๋ฐ์ดํฐ ๋ฐฐํฌ, ์ค๋ ๋ฐธ๋ฐ์ฑ ๋ฑ ์ค๋ ํค๋ฅผ ์ ํํ ๋ ์ฌ๋ฌ ๊ฐ์ง ์์๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ํจ๊ณผ์ ์ธ ๋ถํ ํค๋ ๊ต์ฐจ ๋ถํ ์ฟผ๋ฆฌ ์๋ฅผ ์ต์ํํด์ผ ํฉ๋๋ค. ์ง์ฐ ์๊ฐ์ด ์๋นํ ๊ธธ์ด์ง๊ณ ์ฑ๋ฅ์ด ์ ํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ํ ์ค๋ ํค๋ ๋ถ๊ท ํ๊ณผ ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ชจ๋ ์ค๋์ ๋ฐ์ดํฐ์ ์ํฌ๋ก๋๋ฅผ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ์์ผ์ผ ํฉ๋๋ค.
์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํ๋๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์๋ก์ด ์ค๋๋ฅผ ์ถ๊ฐํ๋ฉด ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์ฑ๋ฅ์ด ๋ชจ๋ ํฅ์๋๋ฏ๋ก ํฅ์๋ ํ์ฅ์ฑ์ด ํฌํจ๋ฉ๋๋ค. ๋ํ ์ค๋ฉ์ ๋จ์ผ ์ค๋์ ์ฅ์ ๊ฐ ์ ์ฒด ์์คํ ์ ์ํฅ์ ๋ฏธ์น์ง ์์ผ๋ฏ๋ก ๊ฐ์ฉ์ฑ์ ํฅ์์ํต๋๋ค. ์ด ๋ด์ฅ๋ ์ค๋ณต์ฑ์ ๋ฐ์ดํฐ ๋ณต์ ์ ๊ฒฐํฉ๋์ด ์์คํ ๋ณต์๋ ฅ์ ๋์ฑ ๊ฐํํ ์ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ, ์ค๋ฉ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋น์ผ ์ ๋ฌธ ์๋ฒ ๋์ ์์ฉ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋น์ฉ ์ ๊ฐ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฅ์ ์๋ ๋ถ๊ตฌํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ์๋ ํน์ ๊ณผ์ ๋ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋์ฑ ๋ณต์กํ ์ธํ๋ผ์ ๋ ๋์ ์ ์ง ๊ด๋ฆฌ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค. ๋ํ ํนํ ์ฌ๋ฌ ์ค๋๋ฅผ ๋์์ ์ ๋ฐ์ดํธํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๋ถ์ฐ ํ๊ฒฝ์์ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ค๋ฉด 2๋จ๊ณ ์ปค๋ฐ์ด๋ Paxos ๋๋ Raft์ ๊ฐ์ ํฉ์ ํ๋กํ ์ฝ๊ณผ ๊ฐ์ ๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ์ด ํ์ํ ์ ์์ต๋๋ค.
AppMaster ํ๋ซํผ์ ๋งฅ๋ฝ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ์ ์ฌ์ฉ์๊ฐ ๊ฐ๋ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅ์ฑ, ์ฑ๋ฅ ๋ฐ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ ๊ตฌ์ฑ ์์๊ฐ ๋ ์ ์์ต๋๋ค. AppMaster ํ๋ซํผ์ ์ฒ์๋ถํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ฏ๋ก ๊ธฐ์ ์ ๋ถ์ฑ๋ฅผ ์ ๊ฑฐํ์ฌ ๊ฐ๋ฐ์๊ฐ ๊ณ ์ ํ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๋ฐ ํ์ํ ์ค๋ฉ ์ ๋ต์ ์ค๊ณํ๊ณ ๊ตฌํํ๋ ๋ฐ ์ง์คํ ์ ์์ต๋๋ค. PostgreSQL ํธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ง์ํ๋ AppMaster ๋ค์ํ ์ค๋ฉ ์๋ฃจ์ ๊ณผ ์ํํ๊ฒ ํตํฉ๋์ด ๊ฐ๋ฐ์๊ฐ ํ์ฅ ๊ฐ๋ฅํ๊ณ ํจ์จ์ ์ธ ์น, ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
๊ฐ๋ฐ์๋ AppMaster ์ ํฌ๊ด์ ์ธ API ๋ฌธ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์คํฌ๋ฆฝํธ ๋ฐ ์ ์ํ ํ๋กํ ํ์ดํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก ์ค๋ฉ ์ ๋ต์ ์ค๊ณ, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ ์ ์์ต๋๋ค. AppMaster ์ ํ์ ํ๊ฒฝ์ ํตํด ๊ฐ๋ฐ์ ๊ฐ์ ๋ชจ๋ฒ ์ฌ๋ก์ ์ ๋ฌธ ์ง์์ ์ ์ํ๊ฒ ๊ณต์ ํ ์ ์์ผ๋ฉฐ, ์ถ๊ฐ๋ก ๊ณ ๋ถํ ์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค๋ฉ ์ ๋ต์ ์ฑ๊ณต์ ์ธ ๊ตฌํ์ ์ง์ํฉ๋๋ค.
์์ฝํ์๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ์ ์ต์ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅ์ฑ, ์ฑ๋ฅ ๋ฐ ์์ ์ฑ์ ๋ณด์ฅํ๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์ ๋๋ค. ์ฌ๋ฌ ์ค๋์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ฆฌ์์ค ํ์ฉ๋๋ฅผ ์ต์ ํํ๊ณ ๋น์ฉ์ ๋ฎ์ถ๋ฉฐ ๋ด๊ฒฐํจ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ๊ฐ๋ ฅํ ์ธํ๋ผ์ PostgreSQL ํธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ค์ํ ์ง์์ ํตํด AppMaster ํ๋ซํผ์ ๊ฐ๋ฐ์๊ฐ ํจ์จ์ ์ธ ์ค๋ฉ ์ ๋ต์ ์ค๊ณํ๊ณ ๊ตฌํํ ์ ์๋๋ก ์ง์ํ์ฌ ํ๋ ์น, ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ ์ฆ๊ฐํ๋ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋๋ก ๋์ต๋๋ค.