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

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

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

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

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

์ด๋Ÿฌํ•œ ์žฅ์ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒค๋”ฉ์—๋Š” ํŠน์ • ๊ณผ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋”์šฑ ๋ณต์žกํ•œ ์ธํ”„๋ผ์™€ ๋” ๋†’์€ ์œ ์ง€ ๊ด€๋ฆฌ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŠนํžˆ ์—ฌ๋Ÿฌ ์ƒค๋“œ๋ฅผ ๋™์‹œ์— ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๊ฐ•๋ ฅํ•œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋ ค๋ฉด 2๋‹จ๊ณ„ ์ปค๋ฐ‹์ด๋‚˜ Paxos ๋˜๋Š” Raft์™€ ๊ฐ™์€ ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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