๐Ÿ˜ ZooKeeper: ๋ถ„์‚ฐ ์กฐ์ • ์„œ๋น„์Šค์˜ ๋งˆ๋ฒ•์‚ฌ ๐Ÿง™โ€โ™‚๏ธ

์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿ˜ ZooKeeper: ๋ถ„์‚ฐ ์กฐ์ • ์„œ๋น„์Šค์˜ ๋งˆ๋ฒ•์‚ฌ ๐Ÿง™โ€โ™‚๏ธ

 

 

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

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ์ฃผ์ธ๊ณต ZooKeeper๋ฅผ ์ƒ์ƒํ•ด๋ณผ๊นŒ์š”? ZooKeeper๋Š” ๋งˆ์น˜ ๊ฑฐ๋Œ€ํ•œ ๋””์ง€ํ„ธ ๋™๋ฌผ์›์˜ ์‚ฌ์œก์‚ฌ์™€ ๊ฐ™์•„์š”. ํ•˜์ง€๋งŒ ์ด ๋™๋ฌผ์›์—๋Š” ๋™๋ฌผ ๋Œ€์‹  ์„œ๋ฒ„๋“ค์ด ์žˆ๊ณ , ZooKeeper๋Š” ์ด ์„œ๋ฒ„๋“ค์„ ์กฐํ™”๋กญ๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ‹์ง€์ง€ ์•Š๋‚˜์š”? ๐Ÿฆ๐Ÿฏ๐Ÿ˜

๐Ÿ’ก ์žฌ๋Šฅ๋„ท TIP: ZooKeeper์™€ ๊ฐ™์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ธฐ์ˆ ์€ ๋Œ€๊ทœ๋ชจ ์˜จ๋ผ์ธ ํ”Œ๋žซํผ ์šด์˜์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์žฌ๋Šฅ๋„ท๊ณผ ๊ฐ™์€ ์žฌ๋Šฅ ๊ณต์œ  ํ”Œ๋žซํผ๋„ ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค ์ œ๊ณต์„ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜๊ณ  ์žˆ์–ด์š”!

์ž, ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ZooKeeper์˜ ์„ธ๊ณ„๋กœ ๋“ค์–ด๊ฐ€๋ณผ๊นŒ์š”? ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ์ถœ๋ฐœ~! ๐Ÿš€

๐Ÿง ZooKeeper๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

ZooKeeper๋Š” Apache Software Foundation์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ์กฐ์ • ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ž ๊น, "๋ถ„์‚ฐ ์‹œ์Šคํ…œ"์ด๋ผ๋Š” ๋ง์ด ์กฐ๊ธˆ ์–ด๋ ต๊ฒŒ ๋“ค๋ฆฌ์‹œ๋‚˜์š”? ๊ฑฑ์ • ๋งˆ์„ธ์š”! ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”. ๐Ÿ˜Š

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

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

๐ŸŽญ ์žฌ๋ฏธ์žˆ๋Š” ๋น„์œ : ZooKeeper๋ฅผ ๊ฑฐ๋Œ€ํ•œ ๋””์ง€ํ„ธ ์˜ค์ผ€์ŠคํŠธ๋ผ์˜ ์ง€ํœ˜์ž๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. ๊ฐ ์•…๊ธฐ(์„œ๋ฒ„)๋“ค์ด ์กฐํ™”๋กญ๊ฒŒ ์—ฐ์ฃผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ•์ž๋ฅผ ๋งž์ถ”๊ณ , ๋ˆ„๊ฐ€ ์†”๋กœ๋ฅผ ํ• ์ง€ ์ •ํ•˜๊ณ , ์ „์ฒด์ ์ธ ํ•˜๋ชจ๋‹ˆ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฑฐ์˜ˆ์š”!

์ž, ์ด์ œ ZooKeeper๊ฐ€ ์–ด๋–ค ๋…€์„์ธ์ง€ ์กฐ๊ธˆ์€ ๊ฐ์ด ์˜ค์‹œ๋‚˜์š”? ๊ทธ๋Ÿผ ์ด์ œ ZooKeeper๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ํŠน์ง•๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ๊นŒ์š”? ๐Ÿ•ต๏ธโ€โ™‚๏ธ

ZooKeeper์˜ ์ฃผ์š” ํŠน์ง•

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

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

์ž, ์ด์ œ ZooKeeper์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ๋Š” ZooKeeper์˜ ์•„ํ‚คํ…์ฒ˜์™€ ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋„๋ก ํ• ๊นŒ์š”? ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ ๊ณ ! ๐Ÿš€

๐Ÿ—๏ธ ZooKeeper์˜ ์•„ํ‚คํ…์ฒ˜

ZooKeeper์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋งˆ์น˜ ๋ฉ‹์ง„ ๋ ˆ๊ณ  ์„ธํŠธ๋ฅผ ์กฐ๋ฆฝํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”. ๊ฐ ๋ถ€ํ’ˆ์ด ์–ด๋–ป๊ฒŒ ๋งž๋ฌผ๋ ค ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋Š”์ง€ ์•Œ๋ฉด, ๊ทธ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ฃ . ์ž, ๊ทธ๋Ÿผ ZooKeeper์˜ ๋ ˆ๊ณ  ์„ธํŠธ๋ฅผ ํ•œ๋ฒˆ ์กฐ๋ฆฝํ•ด๋ณผ๊นŒ์š”? ๐Ÿงฑ๐Ÿ‘ทโ€โ™‚๏ธ

ZooKeeper ์•™์ƒ๋ธ” (Ensemble)

ZooKeeper๋Š” ๋ณดํ†ต ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋œ ์•™์ƒ๋ธ”์ด๋ผ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ํ˜•ํƒœ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ์•™์ƒ๋ธ” ๋‚ด์˜ ์„œ๋ฒ„๋“ค์€ ์„œ๋กœ ํ˜‘๋ ฅํ•˜์—ฌ ํ•˜๋‚˜์˜ ZooKeeper ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜์ฃ . ๋งˆ์น˜ ์˜ค์ผ€์ŠคํŠธ๋ผ์˜ ์—ฌ๋Ÿฌ ์—ฐ์ฃผ์ž๋“ค์ด ํ•จ๊ป˜ ํ•˜๋‚˜์˜ ์•„๋ฆ„๋‹ค์šด ์Œ์•…์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”! ๐ŸŽป๐ŸŽท๐ŸŽบ

๐Ÿ’ก ์•Œ์•„๋‘์„ธ์š”: ZooKeeper ์•™์ƒ๋ธ”์€ ๋ณดํ†ต ํ™€์ˆ˜ ๊ฐœ์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. 3๋Œ€, 5๋Œ€, 7๋Œ€ ๋“ฑ์ด ์ผ๋ฐ˜์ ์ด์—์š”. ์™œ ํ™€์ˆ˜์ผ๊นŒ์š”? ์ด๋Š” ๊ณผ๋ฐ˜์ˆ˜ ํˆฌํ‘œ ๋ฐฉ์‹ ๋•Œ๋ฌธ์ธ๋ฐ, ์กฐ๊ธˆ ์žˆ๋‹ค ์ž์„ธํžˆ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”!

์ด์ œ ZooKeeper ์•™์ƒ๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•ด๋ณผ๊นŒ์š”? ์•„๋ž˜์˜ SVG ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ†ตํ•ด ZooKeeper ์•™์ƒ๋ธ”์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด์„ธ์š”.

ZooKeeper Ensemble Architecture Leader Follower Follower ZooKeeper Ensemble

์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, ZooKeeper ์•™์ƒ๋ธ”์€ ๋ฆฌ๋”(Leader)์™€ ํŒ”๋กœ์›Œ(Follower)๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋”๋Š” ์•™์ƒ๋ธ” ๋‚ด์—์„œ ์ค‘์‹ฌ ์—ญํ• ์„ ํ•˜๋ฉฐ, ๋ชจ๋“  ์“ฐ๊ธฐ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํŒ”๋กœ์›Œ๋“ค์€ ๋ฆฌ๋”์˜ ๊ฒฐ์ •์„ ๋”ฐ๋ฅด๊ณ , ํด๋ผ์ด์–ธํŠธ์˜ ์ฝ๊ธฐ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

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

ZooKeeper์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์€ ๋งˆ์น˜ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๋น„์Šทํ•œ ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์š”. ์ด ๊ตฌ์กฐ์˜ ๊ฐ ๋…ธ๋“œ๋ฅผ znode๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. znode๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ , ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ฃ . ๋งˆ์น˜ ํด๋”์™€ ํŒŒ์ผ์˜ ๊ตฌ์กฐ์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค! ๐Ÿ“๐Ÿ“„

znode์˜ ์ข…๋ฅ˜์—๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์–ด์š”:

  • ์˜๊ตฌ ๋…ธ๋“œ(Persistent Znode): ๋ช…์‹œ์ ์œผ๋กœ ์‚ญ์ œํ•˜๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์† ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ์˜ˆ์š”.
  • ์ž„์‹œ ๋…ธ๋“œ(Ephemeral Znode): ์ƒ์„ฑํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ์„ธ์…˜์ด ๋๋‚˜๋ฉด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ตฌ์กฐ ๋•๋ถ„์— ZooKeeper๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋‹ค์–‘ํ•œ ์กฐ์ • ์ž‘์—…์„ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋ฒ„์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜, ์ž‘์—… ํ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜, ๋ถ„์‚ฐ ๋ฝ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์ด ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์ฃ .

๐ŸŽญ ์žฌ๋ฏธ์žˆ๋Š” ๋น„์œ : ZooKeeper์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๊ฑฐ๋Œ€ํ•œ ๊ฐ€์กฑ ์กฑ๋ณด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ๊ฐ€๋ฌธ์˜ ์‹œ์กฐ, ๊ทธ ์•„๋ž˜๋กœ ์ž์†๋“ค์ด ๊ณ„์ธต์ ์œผ๋กœ ์ด์–ด์ง€๋Š” ๊ฑฐ์˜ˆ์š”. ์–ด๋–ค ์ž์†(๋…ธ๋“œ)์€ ์˜์›ํžˆ ์กฑ๋ณด์— ๋‚จ๊ณ (์˜๊ตฌ ๋…ธ๋“œ), ์–ด๋–ค ์ž์†์€ ํŠน์ • ์กฐ๊ฑด์ด ๋˜๋ฉด ์กฑ๋ณด์—์„œ ์‚ฌ๋ผ์ง€์ฃ (์ž„์‹œ ๋…ธ๋“œ)!

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

โš™๏ธ ZooKeeper์˜ ๋™์ž‘ ์›๋ฆฌ

์ž, ์ด์ œ ZooKeeper๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค๋ณผ ์‹œ๊ฐ„์ด์—์š”! ๋งˆ์น˜ ์ •๊ตํ•œ ์‹œ๊ณ„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋“ค์—ฌ๋‹ค๋ณด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํฅ๋ฏธ์ง„์ง„ํ•  ๊ฑฐ์˜ˆ์š”. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ๐Ÿ•ฐ๏ธ๐Ÿ‘€

๋ฆฌ๋” ์„ ์ถœ ๊ณผ์ •

ZooKeeper ์•™์ƒ๋ธ”์ด ์‹œ์ž‘๋˜๋ฉด, ๊ฐ€์žฅ ๋จผ์ € ๋ฆฌ๋” ์„ ์ถœ ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ๋งˆ์น˜ ํ•™๊ธ‰ ๋ฐ˜์žฅ์„ ๋ฝ‘๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ด์š”! ๊ฐ ์„œ๋ฒ„๋Š” ์ž์‹ ์ด ๋ฆฌ๋”๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ํˆฌํ‘œ๋ฅผ ํ•˜๊ณ , ๊ฐ€์žฅ ๋งŽ์€ ํ‘œ๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๊ฐ€ ๋ฆฌ๋”๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ—ณ๏ธ๐Ÿ‘‘

์ด ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ZAB(ZooKeeper Atomic Broadcast) ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ณ  ํ•ด์š”. ์ด ํ”„๋กœํ† ์ฝœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค:

  1. ์„ ์ถœ ๋‹จ๊ณ„(Election Phase): ๊ฐ ์„œ๋ฒ„๊ฐ€ ๋ฆฌ๋” ํ›„๋ณด๊ฐ€ ๋˜์–ด ํˆฌํ‘œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐœ๊ฒฌ ๋‹จ๊ณ„(Discovery Phase): ์„ ์ถœ๋œ ๋ฆฌ๋”๊ฐ€ ํ˜„์žฌ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋™๊ธฐํ™” ๋‹จ๊ณ„(Synchronization Phase): ๋ฆฌ๋”๊ฐ€ ํŒ”๋กœ์›Œ๋“ค๊ณผ ์ƒํƒœ๋ฅผ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋‹จ๊ณ„(Broadcast Phase): ์ •์ƒ ์šด์˜ ์ƒํƒœ๋กœ, ๋ฆฌ๋”๊ฐ€ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํŒ”๋กœ์›Œ๋“ค์—๊ฒŒ ์ „ํŒŒํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ’ก ์žฌ๋Šฅ๋„ท TIP: ๋ฆฌ๋” ์„ ์ถœ ๊ณผ์ •์€ ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ๋งค์šฐ ์ค‘์š”ํ•ด์š”. ์žฌ๋Šฅ๋„ท๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ์—์„œ๋„ ์„œ๋ฒ„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•  ๋•Œ ์ด์™€ ์œ ์‚ฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค!

์ด ๊ณผ์ •์„ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•ด๋ณผ๊นŒ์š”? ์•„๋ž˜์˜ SVG ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ†ตํ•ด ๋ฆฌ๋” ์„ ์ถœ ๊ณผ์ •์„ ์‚ดํŽด๋ณด์„ธ์š”.

ZooKeeper Leader Election Process Server 1 Server 2 Server 3 Leader Election Process

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

์“ฐ๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ณผ์ •

๋ฆฌ๋”๊ฐ€ ์„ ์ถœ๋˜๋ฉด, ๋ชจ๋“  ์“ฐ๊ธฐ ์š”์ฒญ์€ ๋ฆฌ๋”๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋ผ์š”:

  1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ZooKeeper ์„œ๋ฒ„์— ์“ฐ๊ธฐ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. ๋ฆฌ๋”์—๊ฒŒ ์ „๋‹ฌ: ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋ฒ„๊ฐ€ ๋ฆฌ๋”๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ํ•ด๋‹น ์š”์ฒญ์„ ๋ฆฌ๋”์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์ œ์•ˆ ์ƒ์„ฑ: ๋ฆฌ๋”๋Š” ๋ฐ›์€ ์š”์ฒญ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ณ€๊ฒฝ ์ œ์•ˆ(proposal)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. ํŒ”๋กœ์›Œ์—๊ฒŒ ์ „ํŒŒ: ๋ฆฌ๋”๋Š” ์ด ์ œ์•ˆ์„ ๋ชจ๋“  ํŒ”๋กœ์›Œ์—๊ฒŒ ์ „ํŒŒํ•ฉ๋‹ˆ๋‹ค.
  5. ํ™•์ธ ์‘๋‹ต: ํŒ”๋กœ์›Œ๋“ค์€ ์ œ์•ˆ์„ ๋ฐ›๊ณ  ํ™•์ธ ์‘๋‹ต(ACK)์„ ๋ฆฌ๋”์—๊ฒŒ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  6. ์ปค๋ฐ‹: ๊ณผ๋ฐ˜์ˆ˜์˜ ํŒ”๋กœ์›Œ๋กœ๋ถ€ํ„ฐ ํ™•์ธ์„ ๋ฐ›์œผ๋ฉด, ๋ฆฌ๋”๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜๊ณ  ์ด๋ฅผ ๋‹ค์‹œ ํŒ”๋กœ์›Œ๋“ค์—๊ฒŒ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.
  7. ํด๋ผ์ด์–ธํŠธ ์‘๋‹ต: ๋งˆ์ง€๋ง‰์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ž‘์—… ์™„๋ฃŒ ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์„ ํ†ตํ•ด ZooKeeper๋Š” ๊ฐ•๋ ฅํ•œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ๋™์ผํ•œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ๋˜๋Š” ๊ฑฐ์ฃ !

๐ŸŽญ ์žฌ๋ฏธ์žˆ๋Š” ๋น„์œ : ZooKeeper์˜ ์“ฐ๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ณผ์ •์€ ๋งˆ์น˜ ์ค‘์š”ํ•œ ํšŒ์˜์—์„œ์˜ ์˜์‚ฌ๊ฒฐ์ • ๊ณผ์ •๊ณผ ๋น„์Šทํ•ด์š”. ๋ฆฌ๋”(ํšŒ์žฅ)๊ฐ€ ์•ˆ๊ฑด(์“ฐ๊ธฐ ์š”์ฒญ)์„ ์ œ์•ˆํ•˜๊ณ , ์ฐธ์„์ž๋“ค(ํŒ”๋กœ์›Œ)์˜ ๋™์˜๋ฅผ ๊ตฌํ•œ ํ›„, ์ตœ์ข… ๊ฒฐ์ •(์ปค๋ฐ‹)์„ ๋‚ด๋ฆฌ๋Š” ๊ฑฐ์ฃ !

์ฝ๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ณผ์ •

์ฝ๊ธฐ ์š”์ฒญ์€ ์“ฐ๊ธฐ ์š”์ฒญ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์—ฐ๊ฒฐ๋œ ์•„๋ฌด ZooKeeper ์„œ๋ฒ„์— ์ฝ๊ธฐ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ณ , ํ•ด๋‹น ์„œ๋ฒ„๋Š” ์ž์‹ ์˜ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ๋ฐ”๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ZooKeeper๋Š” ์ฝ๊ธฐ ์ž‘์—…์— ๋งค์šฐ ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๐Ÿ“šโšก

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ตฌ์กฐ ๋•Œ๋ฌธ์— ์ฝ๊ธฐ ์ž‘์—…์—์„œ๋Š” ์•ฝ๊ฐ„์˜ ์ผ๊ด€์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด์š”. ๊ฐ€์žฅ ์ตœ๊ทผ์— ์—…๋ฐ์ดํŠธ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ๊ทธ๋ž˜์„œ ZooKeeper๋Š” sync๋ผ๋Š” ํŠน๋ณ„ํ•œ ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ๊ธฐ ์ „์— ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ๋ฆฌ๋”์™€ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์›Œ์น˜(Watch) ๋ฉ”์ปค๋‹ˆ์ฆ˜

ZooKeeper์˜ ๋˜ ๋‹ค๋ฅธ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ”๋กœ ์›Œ์น˜(Watch) ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŠน์ • znode์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด์—์š”. ๋งˆ์น˜ ์ตœ์‹  ๋‰ด์Šค๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ›์•„๋ณด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ฃ ! ๐Ÿ“ฐ๐Ÿ””

์›Œ์น˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ๋™์ž‘ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŠน์ • znode์— ๋Œ€ํ•œ ์›Œ์น˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ•ด๋‹น znode์— ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉด ZooKeeper๋Š” ์ด๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  3. ZooKeeper๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณ€๊ฒฝ ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„ ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์„œ๋กœ์˜ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฑฐ์ฃ !

๐Ÿ’ก ์žฌ๋Šฅ๋„ท TIP: ์›Œ์น˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์‹œ์Šคํ…œ ๊ตฌํ˜„์— ๋งค์šฐ ์œ ์šฉํ•ด์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์žฌ๋Šฅ๋„ท์—์„œ ์ƒˆ๋กœ์šด ์žฌ๋Šฅ์ด ๋“ฑ๋ก๋˜์—ˆ์„ ๋•Œ ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฆ‰์‹œ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ด์™€ ์œ ์‚ฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์ž, ์ด์ œ ZooKeeper์˜ ํ•ต์‹ฌ์ ์ธ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ณต์žกํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜๋“ค์ด ๋ชจ์—ฌ ZooKeeper๊ฐ€ ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์ธ ๋ถ„์‚ฐ ์กฐ์ • ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์˜ˆ์š”. ๋†€๋ž์ง€ ์•Š๋‚˜์š”? ๐ŸŽ‰

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ZooKeeper๋ฅผ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ ๊ณ ! ๐Ÿš€

๐Ÿ› ๏ธ ZooKeeper์˜ ์‹ค์ œ ํ™œ์šฉ

์ž, ์ด์ œ ZooKeeper๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์‚ดํŽด๋ณผ ์‹œ๊ฐ„์ด์—์š”! ZooKeeper๋Š” ๋งˆ์น˜ ์Šค์œ„์Šค ์•„๋ฏธ ๋‚˜์ดํ”„์ฒ˜๋Ÿผ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ถ„์•ผ์—์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ํ•จ๊ป˜ ์•Œ์•„๋ณผ๊นŒ์š”? ๐Ÿงฐ๐Ÿ”

1. ๋ถ„์‚ฐ ๋ฝ(Distributed Locks) ๊ตฌํ˜„

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

์˜ˆ๋ฅผ ๋“ค์–ด, ์žฌ๋Šฅ๋„ท์—์„œ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ™์€ ์žฌ๋Šฅ์„ ์˜ˆ์•ฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๋ถ„์‚ฐ ๋ฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์•ฝ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๐Ÿ‘ฅ๐Ÿ”’

๐Ÿ’ก ๊ตฌํ˜„ ์•„์ด๋””์–ด: ์˜ˆ์•ฝํ•˜๋ ค๋Š” ์žฌ๋Šฅ์— ๋Œ€ํ•ด ์ž„์‹œ znode๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € znode๋ฅผ ์ƒ์„ฑํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฝ์„ ํš๋“ํ•˜๊ณ , ์˜ˆ์•ฝ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์ด ๋๋‚˜๋ฉด znode๋ฅผ ์‚ญ์ œํ•˜์—ฌ ๋ฝ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

2. ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ(Service Discovery)

๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ์„œ๋น„์Šค์˜ ์œ„์น˜๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€ํ•  ์ˆ˜ ์žˆ์–ด์š”. ZooKeeper๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ์„œ๋น„์Šค๋“ค์˜ ์œ„์น˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

์žฌ๋Šฅ๋„ท์˜ ๊ฒฝ์šฐ, ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ์„œ๋น„์Šค๋“ค(์˜ˆ: ๊ฒฐ์ œ ์„œ๋น„์Šค, ๋ฉ”์‹œ์ง• ์„œ๋น„์Šค ๋“ฑ)์˜ ์œ„์น˜๋ฅผ ZooKeeper๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”. ๐Ÿ—บ๏ธ๐Ÿ”

๐Ÿ’ก ๊ตฌํ˜„ ์•„์ด๋””์–ด: ๊ฐ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ZooKeeper์— ์ž์‹ ์˜ ์ •๋ณด(IP, ํฌํŠธ ๋“ฑ)๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ZooKeeper์— ์งˆ์˜ํ•˜์—ฌ ํ•„์š”ํ•œ ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์„ค์ • ๊ด€๋ฆฌ(Configuration Management)

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์„ค์ •์„ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ด์š”. ZooKeeper๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ์„ค์ • ๊ด€๋ฆฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

์žฌ๋Šฅ๋„ท์—์„œ ๊ฐ์ข… ์„œ๋น„์Šค์˜ ์„ค์ •(์˜ˆ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ •๋ณด, ์บ์‹œ ์„ค์ • ๋“ฑ)์„ ZooKeeper๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๋ฉด, ์„ค์ • ๋ณ€๊ฒฝ ์‹œ ๋ชจ๋“  ์„œ๋ฒ„์— ์ฆ‰์‹œ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์–ด์š”. โš™๏ธ๐Ÿ“ก

๐Ÿ’ก ๊ตฌํ˜„ ์•„์ด๋””์–ด: ์„ค์ • ์ •๋ณด๋ฅผ ZooKeeper์˜ znode์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค๋Š” ํ•ด๋‹น znode์— ์›Œ์น˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ์„ค์ • ๋ณ€๊ฒฝ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๋ฆฌ๋” ์„ ์ถœ(Leader Election)

์—ฌ๋Ÿฌ ์„œ๋ฒ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋งˆ์Šคํ„ฐ๋กœ ์„ ์ถœํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ฃ . ZooKeeper์˜ ๋ถ„์‚ฐ ๋ฝ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ™œ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ๋ฆฌ๋” ์„ ์ถœ ๊ณผ์ •์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์žฌ๋Šฅ๋„ท์˜ ๊ฒฝ์šฐ, ์—ฌ๋Ÿฌ ๋ฐฑ์—… ์„œ๋ฒ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฃผ ์„œ๋ฒ„๋กœ ์„ ์ถœํ•˜๋Š” ๋ฐ ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ†๐Ÿ‘‘

๐Ÿ’ก ๊ตฌํ˜„ ์•„์ด๋””์–ด: ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ํŠน์ • znode์˜ ์ƒ์„ฑ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ์„ฑ๊ณตํ•œ ์„œ๋ฒ„๊ฐ€ ๋ฆฌ๋”๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋” ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋ฉด ๋‹ค๋ฅธ ์„œ๋ฒ„๋“ค์ด ๋‹ค์‹œ znode ์ƒ์„ฑ์„ ์‹œ๋„ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฆฌ๋”๋ฅผ ์„ ์ถœํ•ฉ๋‹ˆ๋‹ค.

5. ํ ๊ด€๋ฆฌ(Queue Management)

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์ž‘์—… ํ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•œ ๊ณผ์ œ์ž…๋‹ˆ๋‹ค. ZooKeeper๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ„์‚ฐ ํ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์žฌ๋Šฅ๋„ท์—์„œ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ(์˜ˆ: ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์—…๋กœ๋“œ, ๋ณต์žกํ•œ ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ ๋“ฑ)์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—… ํ๋ฅผ ZooKeeper๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Š๐Ÿ”„

๐Ÿ’ก ๊ตฌํ˜„ ์•„์ด๋””์–ด: ๊ฐ ์ž‘์—…์„ znode๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ์ƒ์‚ฐ์ž๋Š” ์ƒˆ๋กœ์šด znode๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ž‘์—… ์†Œ๋น„์ž๋Š” znode๋ฅผ ๊ฐ์‹œํ•˜๋‹ค๊ฐ€ ์ƒˆ ์ž‘์—…์ด ์ƒ๊ธฐ๋ฉด ๊ฐ€์ ธ๊ฐ€์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€

ZooKeeper๋Š” ๋งŽ์€ ๋Œ€ํ˜• ๊ธฐ์—…๋“ค์˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ์–ด์š”. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณผ๊นŒ์š”?

  • Hadoop: ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋„ค์ž„๋…ธ๋“œ ๊ด€๋ฆฌ์— ZooKeeper๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Kafka: ๋ธŒ๋กœ์ปค ๊ด€๋ฆฌ์™€ ํ† ํ”ฝ ์„ค์ • ๊ด€๋ฆฌ์— ZooKeeper๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • HBase: ๋งˆ์Šคํ„ฐ ์„ ์ถœ๊ณผ ๋ฆฌ์ „ ์„œ๋ฒ„ ๊ด€๋ฆฌ์— ZooKeeper๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Solr: ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ์™€ ์„ค์ • ๊ด€๋ฆฌ์— ZooKeeper๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ZooKeeper๋Š” ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋˜๊ณ  ์žˆ์–ด์š”. ์žฌ๋Šฅ๋„ท๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ์—์„œ๋„ ์ด๋Ÿฐ ๊ธฐ์ˆ ๋“ค์„ ํ™œ์šฉํ•˜์—ฌ ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค! ๐ŸŒŸ

๐Ÿ’ก ์žฌ๋Šฅ๋„ท TIP: ZooKeeper์˜ ์ด๋Ÿฐ ๋‹ค์–‘ํ•œ ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋ฉด, ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์„ค๊ณ„์™€ ์šด์˜์— ๋Œ€ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”. ์ด๋Š” ์žฌ๋Šฅ๋„ท๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ์˜ ๋ฐฑ์—”๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ดํ•ดํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์ž, ์ด์ œ ZooKeeper์˜ ์‹ค์ œ ํ™œ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ •๋ง ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์ฃ ? ๋‹ค์Œ์œผ๋กœ๋Š” ZooKeeper๋ฅผ ์‹ค์ œ๋กœ ์„ค์น˜ํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•ด๋ณด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ ๊ณ ! ๐Ÿš€

๐Ÿ–ฅ๏ธ ZooKeeper ์„ค์น˜ ๋ฐ ์‚ฌ์šฉํ•˜๊ธฐ

์ž, ์ด์ œ ZooKeeper๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•ด๋ณผ ์‹œ๊ฐ„์ด์—์š”! ๋งˆ์น˜ ์ƒˆ๋กœ์šด ์žฅ๋‚œ๊ฐ์„ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์‹ ๋‚˜๋Š” ์‹œ๊ฐ„์ด ๋  ๊ฑฐ์˜ˆ์š”. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ๐ŸŽฎ๐Ÿ”ง

ZooKeeper ์„ค์น˜ํ•˜๊ธฐ

ZooKeeper๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์€ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•ด์š”. ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผํ•ด๋ณด์„ธ์š”:

  1. ZooKeeper ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์—์„œ ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์„ ์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์••์ถ• ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
  3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ZOOKEEPER_HOME์„ ์„ค์ •ํ•˜๊ณ , PATH์— $ZOOKEEPER_HOME/bin์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  4. conf/zoo_sample.cfg ํŒŒ์ผ์„ conf/zoo.cfg๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  5. zoo.cfg ํŒŒ์ผ์—์„œ dataDir ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ’ก TIP: Linux๋‚˜ macOS ์‚ฌ์šฉ์ž๋ผ๋ฉด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž(์˜ˆ: apt, brew)๋ฅผ ํ†ตํ•ด ๋” ์‰ฝ๊ฒŒ ZooKeeper๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์–ด์š”!

ZooKeeper ์‹คํ–‰ํ•˜๊ธฐ

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ์ด์ œ ZooKeeper๋ฅผ ์‹คํ–‰ํ•ด๋ณผ ์ฐจ๋ก€์˜ˆ์š”:


  # ZooKeeper ์„œ๋ฒ„ ์‹œ์ž‘
  bin/zkServer.sh start

  # ZooKeeper ํด๋ผ์ด์–ธํŠธ ์‹คํ–‰
  bin/zkCli.sh
  

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉด, ZooKeeper์™€ ๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด์ œ ZooKeeper์˜ ์„ธ๊ณ„๋กœ ๋“ค์–ด์™”์–ด์š”! ๐ŸŒŸ

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ: ๋ถ„์‚ฐ ์„ค์ • ๊ด€๋ฆฌ

์ด์ œ ZooKeeper๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ๋ถ„์‚ฐ ์„ค์ • ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค์–ด๋ณผ๊นŒ์š”? ์žฌ๋Šฅ๋„ท์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


  # znode ์ƒ์„ฑ
  create /config ""
  create /config/database ""
  create /config/database/url "jdbc:mysql://localhost:3306/talentnet"
  create /config/database/username "admin"
  create /config/database/password "secret"

  # ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ
  get /config/database/url
  get /config/database/username

  # ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ
  set /config/database/url "jdbc:mysql://new-server:3306/talentnet"

  # ์ž์‹ ๋…ธ๋“œ ๋ชฉ๋ก ํ™•์ธ
  ls /config/database
  

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ZooKeeper์— ์„ค์ • ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๊ณ , ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ฝ๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์–ด์š”. ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์ด ์ •๋ณด๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ฝ์–ด์™€ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์›Œ์น˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽญ ์žฌ๋ฏธ์žˆ๋Š” ๋น„์œ : ZooKeeper๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋งˆ์น˜ ๋ชจ๋“  ํŒ€์›์ด ๊ณต์œ ํ•˜๋Š” ๋””์ง€ํ„ธ ๋…ธํŠธ๋ถ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”. ๋ˆ„๊ตฐ๊ฐ€ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ชจ๋“  ํŒ€์›์ด ์ฆ‰์‹œ ๊ทธ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์žˆ์ฃ !

Java ํด๋ผ์ด์–ธํŠธ ์˜ˆ์ œ

์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ZooKeeper ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ZooKeeper์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Java๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค:


import org.apache.zookeeper.*;

public class ZooKeeperExample {
    private static final String HOST = "localhost:2181";
    private static final int SESSION_TIMEOUT = 3000;

    public static void main(String[] args) throws Exception {
        ZooKeeper zk = new ZooKeeper(HOST, SESSION_TIMEOUT, new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                System.out.println("Event received: " + event.toString());
            }
        });

        // ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ
        byte[] data = zk.getData("/config/database/url", false, null);
        System.out.println("Database URL: " + new String(data));

        // ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ
        zk.setData("/config/database/url", "jdbc:mysql://new-server:3306/talentnet".getBytes(), -1);

        // ์›Œ์น˜ ์„ค์ •
        zk.getData("/config/database/url", new Watcher() {
            @Override
            public void process(WatchedEvent event) {
                System.out.println("Database URL changed!");
            }
        }, null);

        // ์ž ์‹œ ๋Œ€๊ธฐ
        Thread.sleep(10000);

        zk.close();
    }
}
  

์ด ์˜ˆ์ œ์—์„œ๋Š” ZooKeeper์— ์—ฐ๊ฒฐํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋ฉฐ, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•˜๋Š” ์›Œ์น˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๐Ÿ’ก ์žฌ๋Šฅ๋„ท TIP: ์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ACL(Access Control List)์„ ์„ค์ •ํ•˜๊ณ , ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์— ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋ฅผ ์ง€์ •ํ•˜์—ฌ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”!

์ž, ์ด์ œ ZooKeeper๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ฐ„๋‹จํžˆ ์‚ฌ์šฉํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์–ด๋– ์‹ ๊ฐ€์š”? ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ์ฃ ? ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„๋„ ZooKeeper๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•๋ ฅํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ดˆ๋ฅผ ๊ฐ–์ถ”๊ฒŒ ๋˜์—ˆ์–ด์š”! ๐ŸŽ‰

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ZooKeeper๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ๋“ค๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ ๊ณ ! ๐Ÿš€

โš ๏ธ ZooKeeper ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€

ZooKeeper๋Š” ์ •๋ง ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ง€๋งŒ, ๋ชจ๋“  ๋„๊ตฌ๊ฐ€ ๊ทธ๋ ‡๋“ฏ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ๊ทธ ํž˜์„ ์ œ๋Œ€๋กœ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ ์Šˆํผํžˆ์–ด๋กœ์˜ ๋Šฅ๋ ฅ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด์ฃ ! ์ž, ๊ทธ๋Ÿผ ZooKeeper๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ๋“ค๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊นŒ์š”? ๐Ÿฆธโ€โ™‚๏ธ๐Ÿฆธโ€โ™€๏ธ

1. ๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ œํ•œ์— ์ฃผ์˜ํ•˜์„ธ์š”

ZooKeeper์˜ ๊ฐ znode๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 1MB์˜ ๋ฐ์ดํ„ฐ ์ œํ•œ์ด ์žˆ์–ด์š”. ์ด๋Š” ์˜๋„์ ์ธ ์„ค๊ณ„๋กœ, ZooKeeper๊ฐ€ ์กฐ์ •(coordination) ์„œ๋น„์Šค์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

๐Ÿ’ก TIP: ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ZooKeeper์—๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜ ์ •๋ณด๋งŒ ์ €์žฅํ•˜๊ณ  ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค๋ฅธ ์ €์žฅ์†Œ(์˜ˆ: S3, HDFS)์— ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”.

2. ๊ณผ๋„ํ•œ ์›Œ์น˜(Watch) ์‚ฌ์šฉ์„ ํ”ผํ•˜์„ธ์š”

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

๐Ÿ’ก TIP: ์›Œ์น˜ ๋Œ€์‹  ์ฃผ๊ธฐ์ ์œผ๋กœ ํด๋งํ•˜๋Š” ๋ฐฉ์‹์„ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”. ๋˜๋Š” ์›Œ์น˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ œํ•œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”.

3. ์„ธ์…˜ ํƒ€์ž„์•„์›ƒ์„ ์ ์ ˆํžˆ ์„ค์ •ํ•˜์„ธ์š”

์„ธ์…˜ ํƒ€์ž„์•„์›ƒ์„ ๋„ˆ๋ฌด ์งง๊ฒŒ ์„ค์ •ํ•˜๋ฉด ์ผ์‹œ์ ์ธ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ถˆํ•„์š”ํ•œ ์„ธ์…˜ ๋งŒ๋ฃŒ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋ฐ˜๋Œ€๋กœ ๋„ˆ๋ฌด ๊ธธ๊ฒŒ ์„ค์ •ํ•˜๋ฉด ์‹ค์ œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๊ฐ์ง€๊ฐ€ ๋Šฆ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก TIP: ๋ณดํ†ต 2์ดˆ์—์„œ 20์ดˆ ์‚ฌ์ด์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”. ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ ์ ˆํ•œ ๊ฐ’์„ ์„ ํƒํ•˜์„ธ์š”.

4. ์ ์ ˆํ•œ ์•™์ƒ๋ธ” ํฌ๊ธฐ๋ฅผ ์„ ํƒํ•˜์„ธ์š”

ZooKeeper ์•™์ƒ๋ธ”์˜ ํฌ๊ธฐ๋Š” ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์–ด๋ ต๊ณ , ๋„ˆ๋ฌด ํฌ๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ’ก TIP: ์ผ๋ฐ˜์ ์œผ๋กœ 3, 5, 7๊ฐœ์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ 5๊ฐœ์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑ๋œ ์•™์ƒ๋ธ”์ด ์ข‹์€ ์„ ํƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. znode ๊ตฌ์กฐ๋ฅผ ์‹ ์ค‘ํžˆ ์„ค๊ณ„ํ•˜์„ธ์š”

znode์˜ ๊ตฌ์กฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ๊ณผ ๊ด€๋ฆฌ ์šฉ์ด์„ฑ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋ณต์žกํ•œ ๊ตฌ์กฐ๋Š” ๊ด€๋ฆฌ๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ , ๋„ˆ๋ฌด ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ๋Š” ํ™•์žฅ์„ฑ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ’ก TIP: ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ , ๋ฏธ๋ž˜์˜ ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, /config/database/url ๋Œ€์‹  /config/database/production/url๊ณผ ๊ฐ™์ด ๋” ์„ธ๋ถ„ํ™”๋œ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

6. ์ ์ ˆํ•œ ACL(Access Control List)์„ ์„ค์ •ํ•˜์„ธ์š”

ZooKeeper์˜ ๋ฐ์ดํ„ฐ๋Š” ์ข…์ข… ์ค‘์š”ํ•œ ์„ค์ • ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์š”. ๋”ฐ๋ผ์„œ ์ ์ ˆํ•œ ์ ‘๊ทผ ์ œ์–ด๋Š” ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก TIP: ์ตœ์†Œ ๊ถŒํ•œ ์›์น™์„ ๋”ฐ๋ผ ACL์„ ์„ค์ •ํ•˜์„ธ์š”. ๊ฐ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”.

7. ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”

ZooKeeper์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๊ณ  ๋””์Šคํฌ์— ๋กœ๊ทธ๋กœ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์— ๋Œ€๋น„ํ•˜์—ฌ ์ฃผ๊ธฐ์ ์ธ ๋ฐฑ์—…์€ ํ•„์ˆ˜์˜ˆ์š”.

๐Ÿ’ก TIP: ZooKeeper์˜ ์Šค๋ƒ…์ƒท ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์ •๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•˜์„ธ์š”. ๋˜ํ•œ ๋ฐฑ์—…๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•œ ์™ธ๋ถ€ ์ €์žฅ์†Œ์— ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์•„์š”.

8. ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ฒ ์ €ํžˆ ํ•˜์„ธ์š”

ZooKeeper ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฑด๊ฐ• ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ด์š”. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ๊ฐ์ง€ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

๐Ÿ’ก TIP: ZooKeeper์˜ 4๊ธ€์ž ๋ช…๋ น์–ด(์˜ˆ: stat, mntr)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฃผ์š” ์ง€ํ‘œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์„ธ์š”. ๋˜ํ•œ Prometheus, Grafana ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐํ™”๋œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์•„์š”.

์ด๋Ÿฌํ•œ ์ฃผ์˜์‚ฌํ•ญ๋“ค๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋“ค์„ ์ž˜ ๋”ฐ๋ฅด๋ฉด, ZooKeeper๋ฅผ ๋”์šฑ ํšจ๊ณผ์ ์ด๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ ์Šˆํผํžˆ์–ด๋กœ๊ฐ€ ์ž์‹ ์˜ ๋Šฅ๋ ฅ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด์ฃ ! ๐Ÿฆธโ€โ™‚๏ธโœจ

๐Ÿ’ก ์žฌ๋Šฅ๋„ท TIP: ์žฌ๋Šฅ๋„ท๊ณผ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ ํ”Œ๋žซํผ์„ ์šด์˜ํ•  ๋•Œ๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋“ค์„ ์ฒ ์ €ํžˆ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ด์š”. ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค ์ œ๊ณต์„ ์œ„ํ•ด ZooKeeper์˜ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์€ ํ•„์ˆ˜์ ์ด๋ž๋‹ˆ๋‹ค!

์ž, ์ด์ œ ZooKeeper๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ๋“ค๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ง€์นจ๋“ค์„ ์ž˜ ๋”ฐ๋ฅด๋ฉด, ZooKeeper๋ฅผ ํ†ตํ•ด ๋”์šฑ ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์ธ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”. ๋ฉ‹์ง€์ง€ ์•Š๋‚˜์š”? ๐ŸŒŸ

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ZooKeeper์˜ ๋ฏธ๋ž˜์™€ ๋Œ€์•ˆ ๊ธฐ์ˆ ๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ ๊ณ ! ๐Ÿš€

๐Ÿ”ฎ ZooKeeper์˜ ๋ฏธ๋ž˜์™€ ๋Œ€์•ˆ ๊ธฐ์ˆ ๋“ค

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ZooKeeper ์—ฌํ–‰์ด ๊ฑฐ์˜ ๋๋‚˜๊ฐ€๊ณ  ์žˆ์–ด์š”. ํ•˜์ง€๋งŒ ๊ธฐ์ˆ ์˜ ์„ธ๊ณ„๋Š” ํ•ญ์ƒ ์ง„ํ™”ํ•˜๊ณ  ์žˆ์ฃ . ZooKeeper์˜ ๋ฏธ๋ž˜๋Š” ์–ด๋–จ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๋Œ€์•ˆ ๊ธฐ์ˆ ๋“ค์ด ์žˆ์„๊นŒ์š”? ํ•จ๊ป˜ ์‚ดํŽด๋ณผ๊นŒ์š”? ๐Ÿš€๐Ÿ”

ZooKeeper์˜ ๋ฏธ๋ž˜

ZooKeeper๋Š” ์—ฌ์ „ํžˆ ๋งŽ์€ ๊ธฐ์—…๋“ค์ด ์‹ ๋ขฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์˜ˆ์š”. ํ•˜์ง€๋งŒ ๊ธฐ์ˆ  ๋ฐœ์ „์— ๋ฐœ๋งž์ถฐ ๊ณ„์† ์ง„ํ™”ํ•˜๊ณ  ์žˆ๋‹ต๋‹ˆ๋‹ค.

  • ์„ฑ๋Šฅ ๊ฐœ์„ : ๋” ํฐ ๊ทœ๋ชจ์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์†์ ์ธ ์„ฑ๋Šฅ ๊ฐœ์„ ์ด ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์–ด์š”.
  • ๋ณด์•ˆ ๊ฐ•ํ™”: ๋”์šฑ ๊ฐ•๋ ฅํ•œ ์ธ์ฆ ๋ฐ ์•”ํ˜ธํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ ํŽธ์˜์„ฑ ํ–ฅ์ƒ: ๋” ์‰ฌ์šด ์„ค์ •๊ณผ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๋“ค์ด ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์–ด์š”.
  • ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์›: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋“ฑ์˜ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ์—์„œ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ’ก TIP: ZooKeeper์˜ ์ตœ์‹  ๋ฒ„์ „๊ณผ ๋กœ๋“œ๋งต์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ์„ฑ๋Šฅ ๊ฐœ์„ ์‚ฌํ•ญ์„ ํ™œ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ์„ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ์–ด์š”!

ZooKeeper์˜ ๋Œ€์•ˆ ๊ธฐ์ˆ ๋“ค

ZooKeeper๊ฐ€ ๊ฐ•๋ ฅํ•˜๊ธด ํ•˜์ง€๋งŒ, ๋ชจ๋“  ์ƒํ™ฉ์— ์ตœ์ ์˜ ์„ ํƒ์€ ์•„๋‹ ์ˆ˜ ์žˆ์–ด์š”. ๋‹ค์–‘ํ•œ ๋Œ€์•ˆ ๊ธฐ์ˆ ๋“ค์ด ๋“ฑ์žฅํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ช‡ ๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณผ๊นŒ์š”?

1. etcd

CoreOS์—์„œ ๊ฐœ๋ฐœํ•œ ๋ถ„์‚ฐ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ๋กœ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์–ด์š”.

  • ์žฅ์ : ๊ฐ„๋‹จํ•œ ์„ค์ •, HTTP/JSON API ์ง€์›, ๊ฐ•๋ ฅํ•œ ์ผ๊ด€์„ฑ
  • ์‚ฌ์šฉ ์‚ฌ๋ก€: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค, ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

2. Consul

HashiCorp์—์„œ ๊ฐœ๋ฐœํ•œ ๋„๊ตฌ๋กœ, ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ์™€ ๊ตฌ์„ฑ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์š”.

  • ์žฅ์ : ๋‚ด์žฅ๋œ DNS ์„œ๋ฒ„, ํ—ฌ์Šค ์ฒดํฌ ๊ธฐ๋Šฅ, ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ง€์›
  • ์‚ฌ์šฉ ์‚ฌ๋ก€: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜, ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ

3. Apache Helix

ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฒ”์šฉ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๋” ๋†’์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•ด์š”.

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

ZooKeeper vs ๋Œ€์•ˆ ๊ธฐ์ˆ : ์–ด๋–ค ๊ฒƒ์„ ์„ ํƒํ•ด์•ผ ํ• ๊นŒ?

์ •๋‹ต์€ ์—†์–ด์š”! ๊ฐ ๊ธฐ์ˆ ๋งˆ๋‹ค ์žฅ๋‹จ์ ์ด ์žˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ตœ์ ์˜ ์„ ํƒ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ๋“ค์„ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”:

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

์˜ˆ๋ฅผ ๋“ค์–ด, ์žฌ๋Šฅ๋„ท๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ์„ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณผ๊นŒ์š”?

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

์ž, ์ด์ œ ZooKeeper์˜ ๋ฏธ๋ž˜์™€ ๋Œ€์•ˆ ๊ธฐ์ˆ ๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์˜ ์„ธ๊ณ„๋Š” ๋Š์ž„์—†์ด ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ์–ด์š”. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋„ ๊ณ„์†ํ•ด์„œ ํ•™์Šตํ•˜๊ณ  ์ ์‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์–ด๋–ค ๊ธฐ์ˆ ์„ ์„ ํƒํ•˜์‹ค ๊ฑด๊ฐ€์š”? ๐Ÿค”

ZooKeeper์— ๋Œ€ํ•œ ์šฐ๋ฆฌ์˜ ์—ฌํ–‰์ด ๊ฑฐ์˜ ๋๋‚˜๊ฐ€๊ณ  ์žˆ์–ด์š”. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ „์ฒด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ  ๋งˆ๋ฌด๋ฆฌ ์ง“๋„๋ก ํ• ๊นŒ์š”? ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ ๊ณ ! ๐Ÿš€

๐ŸŽ“ ZooKeeper ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค: ์ •๋ฆฌ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

์™€์šฐ! ์ •๋ง ๊ธด ์—ฌ์ •์ด์—ˆ์ฃ ? ZooKeeper์˜ ์„ธ๊ณ„๋ฅผ ํƒํ—˜ํ•˜๋ฉด์„œ ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์› ์–ด์š”. ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ  ๋งˆ๋ฌด๋ฆฌ ์ง€์–ด๋ณผ๊นŒ์š”? ์ค€๋น„๋˜์…จ๋‚˜์š”? ์ž, ์‹œ์ž‘ํ•ด๋ณผ๊ฒŒ์š”! ๐Ÿš€๐Ÿ“š

1. ZooKeeper๋ž€?

ZooKeeper๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ์กฐ์ • ์„œ๋น„์Šค์˜ˆ์š”. ๋งˆ์น˜ ๋””์ง€ํ„ธ ์„ธ๊ณ„์˜ ๊ตํ†ต ๊ฒฝ์ฐฐ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋“ค์ด ์กฐํ™”๋กญ๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์ฃ .

2. ZooKeeper์˜ ์ฃผ์š” ํŠน์ง•

  • ๊ฐ„๋‹จํ•œ ๋ถ„์‚ฐ ์กฐ์ • ์„œ๋น„์Šค
  • ๊ณ ์„ฑ๋Šฅ๊ณผ ๊ณ ๊ฐ€์šฉ์„ฑ
  • ์ˆœ์ฐจ์  ์ผ๊ด€์„ฑ
  • ์›์ž์„ฑ ๋ณด์žฅ

3. ZooKeeper์˜ ์•„ํ‚คํ…์ฒ˜

๋ฆฌ๋”์™€ ํŒ”๋กœ์›Œ๋กœ ๊ตฌ์„ฑ๋œ ์•™์ƒ๋ธ”, ๊ณ„์ธต์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋“ฑ ZooKeeper์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๋ฐฐ์› ์–ด์š”.

4. ZooKeeper์˜ ๋™์ž‘ ์›๋ฆฌ

๋ฆฌ๋” ์„ ์ถœ ๊ณผ์ •, ์“ฐ๊ธฐ/์ฝ๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ณผ์ •, ์›Œ์น˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋“ฑ ZooKeeper๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณด์•˜์ฃ .

5. ZooKeeper์˜ ์‹ค์ œ ํ™œ์šฉ

๋ถ„์‚ฐ ๋ฝ, ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ, ์„ค์ • ๊ด€๋ฆฌ ๋“ฑ ZooKeeper๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์‚ดํŽด๋ณด์•˜์–ด์š”.

6. ZooKeeper ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€

๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ œํ•œ, ์ ์ ˆํ•œ ์›Œ์น˜ ์‚ฌ์šฉ, ์„ธ์…˜ ํƒ€์ž„์•„์›ƒ ์„ค์ • ๋“ฑ ZooKeeper๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํŒ๋“ค์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

7. ZooKeeper์˜ ๋ฏธ๋ž˜์™€ ๋Œ€์•ˆ ๊ธฐ์ˆ 

ZooKeeper์˜ ๋ฐœ์ „ ๋ฐฉํ–ฅ๊ณผ etcd, Consul ๊ฐ™์€ ๋Œ€์•ˆ ๊ธฐ์ˆ ๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์–ด์š”.

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

์ž, ์ด์ œ ์ •๋ง ZooKeeper ๋งˆ์Šคํ„ฐ๊ฐ€ ๋‹ค ๋˜์—ˆ๋„ค์š”! ๐ŸŽ‰ ์—ฌ๋Ÿฌ๋ถ„์€ ์ด์ œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋ณต์žกํ•œ ์„ธ๊ณ„์—์„œ ZooKeeper๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์‹์„ ๊ฐ–์ถ”๊ฒŒ ๋˜์—ˆ์–ด์š”. ์ด ์ง€์‹์„ ๋ฐ”ํƒ•์œผ๋กœ ๋” ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”.

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

๊ธฐ์–ตํ•˜์„ธ์š”, ๊ธฐ์ˆ ์˜ ์„ธ๊ณ„๋Š” ํ•ญ์ƒ ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ์–ด์š”. ZooKeeper์— ๋Œ€ํ•ด ๋ฐฐ์šด ๊ฒƒ์ฒ˜๋Ÿผ, ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์— ๋Œ€ํ•ด์„œ๋„ ๋Š์ž„์—†์ด ํ•™์Šตํ•˜๊ณ  ํƒ๊ตฌํ•˜๋Š” ์ž์„ธ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ํ˜ธ๊ธฐ์‹ฌ๊ณผ ์—ด์ •์ด ๋ฉ‹์ง„ ๊ธฐ์ˆ ์˜ ์„ธ๊ณ„๋ฅผ ๋งŒ๋“ค์–ด๊ฐˆ ๊ฑฐ์˜ˆ์š”!

์ž, ์ด์ œ ์ •๋ง ๋์ด๋„ค์š”. ๊ธด ์—ฌ์ •์„ ํ•จ๊ป˜ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ฏธ๋ž˜ ํ”„๋กœ์ ํŠธ์— ZooKeeper๊ฐ€ ํฐ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ผ์š”. ๊ทธ๋Ÿผ, ๋‹ค์Œ์— ๋˜ ๋‹ค๋ฅธ ํฅ๋ฏธ์ง„์ง„ํ•œ ๊ธฐ์ˆ  ์ด์•ผ๊ธฐ๋กœ ๋งŒ๋‚˜์š”! ์•ˆ๋…•ํžˆ ๊ฐ€์„ธ์š”~ ๐Ÿ‘‹๐Ÿ˜Š