XNUMX๋ช…์˜ ํ•™์ƒ๊ณผ XNUMX๊ฐœ์˜ ๋ถ„์‚ฐ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ

๋˜๋Š” ZooKeeper, etcd ๋ฐ Consul KV์šฉ ํด๋ผ์ด์–ธํŠธ C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•œ ๋ฐฉ๋ฒ•

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

XNUMX๋ช…์˜ ํ•™์ƒ๊ณผ XNUMX๊ฐœ์˜ ๋ถ„์‚ฐ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ

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

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

์šฐ๋ฆฌ๋Š” ZooKeeper, etcd ๋ฐ Consul KV ์ž‘์—…์„ ์œ„ํ•œ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์ด์‹ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ชจ๋ธ

์„ธ ๊ฐ€์ง€ ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋ ค๋ฉด ์ด๋“ค ์‹œ์Šคํ…œ์˜ ๊ณตํ†ต์ ๊ณผ ์ฐจ์ด์ ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์•Œ์•„ ๋ด…์‹œ๋‹ค.

์ฃผ ํ‚คํผ

XNUMX๋ช…์˜ ํ•™์ƒ๊ณผ XNUMX๊ฐœ์˜ ๋ถ„์‚ฐ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ

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

๋“ฑ

XNUMX๋ช…์˜ ํ•™์ƒ๊ณผ XNUMX๊ฐœ์˜ ๋ถ„์‚ฐ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ

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

etcd์—๋Š” ํ‘œ์ค€ ๋น„๊ต ๋ฐ โ€‹โ€‹์„ค์ • ์ž‘์—…์ด ์—†์ง€๋งŒ ๋” ๋‚˜์€ ๊ธฐ๋Šฅ์ธ ํŠธ๋žœ์žญ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์„ธ ์‹œ์Šคํ…œ ๋ชจ๋‘์— ์กด์žฌํ•˜์ง€๋งŒ etcd ํŠธ๋žœ์žญ์…˜์ด ํŠนํžˆ ์ข‹์Šต๋‹ˆ๋‹ค. ํ™•์ธ, ์„ฑ๊ณต, ์‹คํŒจ์˜ ์„ธ ๊ฐ€์ง€ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ธ”๋ก์—๋Š” ์ผ๋ จ์˜ ์กฐ๊ฑด, ๋‘ ๋ฒˆ์งธ ๋ฐ ์„ธ ๋ฒˆ์งธ ์ž‘์—…์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ์›์ž์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์กฐ๊ฑด์ด true์ด๋ฉด ์„ฑ๊ณต ๋ธ”๋ก์ด ์‹คํ–‰๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‹คํŒจ ๋ธ”๋ก์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. API 3.3์—์„œ๋Š” ์„ฑ๊ณต ๋ฐ ์‹คํŒจ ๋ธ”๋ก์— ์ค‘์ฒฉ๋œ ํŠธ๋žœ์žญ์…˜์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ฑฐ์˜ ์ž„์˜์˜ ์ค‘์ฒฉ ์ˆ˜์ค€์˜ ์กฐ๊ฑด๋ถ€ ๊ตฌ์„ฑ์„ ์›์ž์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒ€์‚ฌ์™€ โ€‹โ€‹์ž‘์—…์ด ์žˆ๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜.

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

K.V. ์˜์‚ฌ

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

XNUMX๋ช…์˜ ํ•™์ƒ๊ณผ XNUMX๊ฐœ์˜ ๋ถ„์‚ฐ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ
์‹œ๊ณ„ ๋Œ€์‹  Consul์€ HTTP ์š”์ฒญ์„ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ์ด๋Š” ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ํ˜ธ์ถœ์ด๋ฉฐ, ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ์•Œ๋ ค์ง„ ๋ฐ์ดํ„ฐ ๋ฒ„์ „์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ์žˆ๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ์˜ ํ˜„์žฌ ๋ฒ„์ „์ด ์ง€์ •๋œ ๋ฒ„์ „๋ณด๋‹ค ํฌ๋ฉด ์‘๋‹ต์ด ์ฆ‰์‹œ ๋ฐ˜ํ™˜๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์‘๋‹ต์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ ํ‚ค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ์…˜์„ ์‚ญ์ œํ•˜๋ฉด ๊ด€๋ จ ํ‚ค๋„ ์‚ญ์ œ๋˜๋Š” etcd ๋ฐ ZooKeeper์™€ ๋‹ฌ๋ฆฌ ์„ธ์…˜์ด ๋‹จ์ˆœํžˆ ์—ฐ๊ฒฐ ํ•ด์ œ๋˜๋Š” ๋ชจ๋“œ๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—…๋ฌด, ๊ฐ€์ง€๊ฐ€ ์—†์ง€๋งŒ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ˆ˜ํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ๊ป˜ ๋ชจ์•„์„œ

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

  • ์‹œํ€€์Šค, ์ปจํ…Œ์ด๋„ˆ ๋ฐ TTL ๋…ธ๋“œ ์ง€์›๋˜์ง€ ์•Š์Œ
  • ACL์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • set ๋ฉ”์†Œ๋“œ๋Š” ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ‚ค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค(ZK์—์„œ๋Š” setData๊ฐ€ ์ด ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•จ).
  • set ๋ฐ cas ๋ฉ”์†Œ๋“œ๋Š” ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(ZK์—์„œ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๋™์ผํ•ฉ๋‹ˆ๋‹ค).
  • ์‚ญ์ œ ๋ฉ”์†Œ๋“œ๋Š” ํ•˜์œ„ ํŠธ๋ฆฌ์™€ ํ•จ๊ป˜ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค(ZK์—์„œ ์‚ญ์ œ๋Š” ๋…ธ๋“œ์— ์ž์‹์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค).
  • ๊ฐ ํ‚ค์—๋Š” ํ•˜๋‚˜์˜ ๋ฒ„์ „, ์ฆ‰ ๊ฐ’ ๋ฒ„์ „(ZK)๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ XNUMX ๋ช…์ด์žˆ๋‹ค)

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

์ •์ ์„ ์‚ญ์ œํ•  ๋•Œ ZooKeeper์™€ ์œ ์‚ฌํ•œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด etcd ๋ฐ Consul์˜ ๊ฐ ํ‚ค์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํ•˜์œ„ ์นด์šดํ„ฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”ํƒ€ ์ •๋ณด ์ €์žฅ์„ ํ”ผํ•˜๋ ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ํ•˜์œ„ ํŠธ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ตฌํ˜„์˜ ๋ฏธ๋ฌ˜ํ•จ

๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ธก๋ฉด์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

etcd์˜ ๊ณ„์ธต ๊ตฌ์กฐ

etcd์—์„œ ๊ณ„์ธต์  ๋ณด๊ธฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ์ž‘์—… ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฒ”์œ„ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์ •๋œ ์ ‘๋‘์‚ฌ๊ฐ€ ์žˆ๋Š” ํ‚ค ๋ชฉ๋ก์„ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ "/foo", ๋‹น์‹ ์€ ๋ฒ”์œ„๋ฅผ ์š”๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ["/foo", "/fop"). ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ‚ค์˜ ์ „์ฒด ํ•˜์œ„ ํŠธ๋ฆฌ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ ํ•˜์œ„ ํŠธ๋ฆฌ๊ฐ€ ํฐ ๊ฒฝ์šฐ ํ—ˆ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ฃผ์š” ๋ฒˆ์—ญ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค. zetcd์—์„œ ๊ตฌํ˜„๋จ. ์—ฌ๊ธฐ์—๋Š” ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ ๊นŠ์ด์™€ ๋™์ผํ•œ ํ‚ค ์‹œ์ž‘ ๋ถ€๋ถ„์— XNUMX๋ฐ”์ดํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

"/foo" -> "u01/foo"
"/foo/bar" -> "u02/foo/bar"

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ‚ค์˜ ๋ชจ๋“  ์ง๊ณ„ ์ž์‹์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. "/foo" ๋ฒ”์œ„๋ฅผ ์š”์ฒญํ•˜์—ฌ ๊ฐ€๋Šฅ ["u02/foo/", "u02/foo0"). ์˜ˆ, ASCII๋กœ "0" ๋ฐ”๋กœ ๋’ค์— ์„œ ์žˆ๋‹ค "/".

ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ ์ •์  ์ œ๊ฑฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๊นŒ? ์œ ํ˜•์˜ ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ["uXX/foo/", "uXX/foo0") XX์˜ ๊ฒฝ์šฐ 01๋ถ€ํ„ฐ FF๊นŒ์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์šฐ๋ฆฌ๋Š” ์šฐ์—ฐํžˆ ๋งŒ๋‚ฌ์–ด์š” ์ž‘์—… ํšŸ์ˆ˜ ์ œํ•œ ํ•œ ๋ฒˆ์˜ ๊ฑฐ๋ž˜ ๋‚ด์—์„œ.

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

"/very" -> "/u00very"
"/very/long" -> "/very/u00long"
"/very/long/path" -> "/very/long/u00path"

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ‚ค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. "/very" ์‚ญ์ œ๋กœ ๋ฐ”๋€๋‹ค "/u00very" ๋ฐ ๋ฒ”์œ„ ["/very/", "/very0"), ๋ชจ๋“  ํ•˜์œ„ ํ•ญ๋ชฉ ๊ฐ€์ ธ์˜ค๊ธฐ - ๋ฒ”์œ„์—์„œ ํ‚ค ์š”์ฒญ ์‹œ ["/very/u00", "/very/u01").

ZooKeeper์—์„œ ํ‚ค ์ œ๊ฑฐ

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

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

ZooKeeper์— ์„ค์ •

ZooKeeper์—๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ(create, delete, getChildren)์™€ ๋…ธ๋“œ์˜ ๋ฐ์ดํ„ฐ(setData, getData)๋กœ ์ž‘์—…ํ•˜๋Š” ๋ณ„๋„์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ์—๋Š” ์—„๊ฒฉํ•œ ์ „์ œ ์กฐ๊ฑด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ, ์‚ญ์ œ ๋˜๋Š” setData โ€“ ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ. ํ‚ค์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” set ๋ฉ”์„œ๋“œ๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

๋” ๋งŽ์€ ๊ธฐ์ˆ ์ ์ธ ์„ธ๋ถ€์‚ฌํ•ญ

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

์šฐ๋ฆฌ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ธฐ์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ZooKeeper์˜ ๊ฒฝ์šฐ ์„ ํƒ์ด ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ฃผํ‚คํผ C++, ๊ฒฐ๊ตญ Windows์—์„œ ์ปดํŒŒ์ผํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Linux ์ „์šฉ์œผ๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Consul์˜ ์œ ์ผํ•œ ์„ ํƒ์€ PP์ฝ˜์ˆ . ์ง€์›์ด ์ถ”๊ฐ€๋˜์–ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ธ์…˜ ะธ ์—…๋ฌด. etcd์˜ ๊ฒฝ์šฐ ์ตœ์‹  ๋ฒ„์ „์˜ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋Š” ๋ณธ๊ฒฉ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ฐ„๋‹จํžˆ ์ƒ์„ฑ๋œ grpc ํด๋ผ์ด์–ธํŠธ.

ZooKeeper C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋น„๋™๊ธฐ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์˜๊ฐ์„ ๋ฐ›์•„ ๋น„๋™๊ธฐ ์ธํ„ฐํŽ˜์ด์Šค๋„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ZooKeeper C++์—์„œ๋Š” ์ด๋ฅผ ์œ„ํ•ด future/promise ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ STL์—์„œ๋Š” ๋งค์šฐ ์ ์ ˆํ•˜๊ฒŒ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋‹ˆ์˜ค ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐฉ๋ฒ•, ์ „๋‹ฌ๋œ ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์ง€๋ฉด future ๊ฒฐ๊ณผ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๋ฅผ ์šฐ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๊ณ ๊ฐ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ Boost์™€ ๊ฐ™์€ ๋ฌด๊ฑฐ์šด ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฒด์ ์œผ๋กœ ๊ฐ„๋‹จํ•œ ์Šค๋ ˆ๋“œ ํ’€์„ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

ํ•ฉ๊ณ„

์ž์‹ ์— ๋Œ€ํ•œ ์ฐธ์กฐ : liboffkv.

์šฐ๋ฆฌ ํŒ€: ๋ผ์—๋“œ ๋กœ๋งˆ๋…ธํ”„, ์ด๋ฐ˜ ๊ธ€๋ฃจ์…ด์ฝ”ํ”„, ๋“œ๋ฏธํŠธ๋ฆฌ ์นด๋ง๋””๋…ธํ”„, ๋น…ํ„ฐ ํฌ๋ผํ”ผ๋ฒค์Šคํ‚ค, ๋น„ํƒˆ๋ฆฌ ์ด๋ฐ”๋‹Œ.

์ถœ์ฒ˜ : habr.com

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