CAP ์ •๋ฆฌ๋ž€?

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์€ ์›ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ํŠน์„ฑ, ์ผ๊ด€์„ฑ, ๊ฐ€์šฉ์„ฑ, ๋ถ„ํ•ญ ๋‚ด์„ฑ ์ค‘ ๋‘ ๊ฐ€์ง€๋งŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ์„ ์ฆ๋ช…ํ•œ ์ •๋ฆฌ

์ผ๊ด€์„ฑ(Consistency)

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

CAP ์™€ NoSQL

NoSQL DB๋Š” ๋ถ„์‚ฐ ๋„คํŠธ์›Œํฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•˜๋‹ค. ์ˆ˜์ง ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•œ RDB์™€ ๋‹ฌ๋ฆฌ NoSQL DB ์—์„œ๋Š” ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์„ค๊ณ„์— ๋”ฐ๋ผ ๋ถ„์‚ฐ๋œ๋‹ค. ์ฆ‰, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒํ˜ธ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ์„ฑ์žฅ ๋„คํŠธ์›Œํฌ์—์„œ ๋น ๋ฅด๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

Info

NoSQL DB๋Š” CAP ์ค‘ ๋‘ ๊ฐœ์˜ ํŠน์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. CP ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค

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

CAP ์™€ MongoDB

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

CAP ์™€ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค

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

IBM - CAP A Beginnerโ€™s Guide to CAP Theorem for Data Engineering