๊ด€๋ฆฌ ๋ฉ”๋‰ด

Binary Journey

[๋งค์ผ๋ฉ”์ผ] CAP ์ •๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ๊ณ„์‹ ๊ฐ€์š”? ๋ณธ๋ฌธ

daily/maeil-mail challenge

[๋งค์ผ๋ฉ”์ผ] CAP ์ •๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ๊ณ„์‹ ๊ฐ€์š”?

binaryJournalist 2025. 1. 22. 15:14
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ๋งค์ผ๋ฉ”์ผ์€ ๊ธฐ์ˆ ๋ฉด์ ‘ ๊ด€๋ จ ์งˆ๋ฌธ์„ ๋ฉ”์ผ๋กœ ๋งค์ผ ๋ณด๋‚ด์ฃผ๋Š” ๊ตฌ๋… ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก๋งค์ผ๋ฉ”์ผ ์ฑŒ๋ฆฐ์ง€๋Š” ์ œ ๊ฐœ์ธ์ ์ธ ์ฑŒ๋ฆฐ์ง€๋กœ ๋งค์ผ๋ฉ”์ผ์—์„œ ๋ณด๋‚ด์ฃผ๋Š” ํ•˜๋ฃจ์น˜ ๋ฉ”์ผ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

CAP ์ •๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ๊ณ„์‹ ๊ฐ€์š”?

 

(2025.01.22)

 

 

CAP ์ •๋ฆฌ๋Š” ๋ถ„์‚ฐ ์ปดํ“จํŒ… ์‹œ์Šคํ…œ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์œผ๋กœ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์ผ๊ด€์„ฑ(Consistency), ๊ฐ€์šฉ์„ฑ(Availability), ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ํ—ˆ์šฉ(Partition Tolerance) ์ค‘์—์„œ ์ตœ๋Œ€ ๋‘ ๊ฐ€์ง€๋งŒ ๋™์‹œ์— ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด๋ก ์ž…๋‹ˆ๋‹ค. ์ด๋Š” 2000๋…„ Eric Brewer๊ฐ€ ๋ฐœํ‘œํ•œ ์ •๋ฆฌ๋กœ, ์ดํ›„ Seth Gilbert์™€ Nancy Lynch๊ฐ€ ์ฆ๋ช…ํ•˜์—ฌ ์ด๋ก ์ ์œผ๋กœ ํ™•๋ฆฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • CP ์‹œ์Šคํ…œ์€ ์ผ๊ด€์„ฑ๊ณผ ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ํ—ˆ์šฉ์„ ๋ณด์žฅํ•˜์ง€๋งŒ ๊ฐ€์šฉ์„ฑ์ด ํฌ์ƒ๋จ (ex. HBase, MongoDB)
  • AP ์‹œ์Šคํ…œ์€ ๊ฐ€์šฉ์„ฑ๊ณผ ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ํ—ˆ์šฉ์„ ๋ณด์žฅํ•˜์ง€๋งŒ ์ผ๊ด€์„ฑ์ด ํฌ์ƒ๋จ (ex. DynamoDB, Cassandra)
  • CA ์‹œ์Šคํ…œ์€ ์ด๋ก ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋„คํŠธ์›Œํฌ ๋ถ„ํ• ์ด ์กด์žฌํ•˜๋Š” ํ˜„์‹ค์—์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅ

๋”ฐ๋ผ์„œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์„ค๊ณ„ ์‹œ CAP ์ •๋ฆฌ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์„œ๋น„์Šค ํŠน์„ฑ์— ๋งž๋Š” ์„ ํƒ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 


 

 

๋ชจ๋ฒ” ๋‹ต์•ˆ

 


 

์ฃผ์š” ๊ฐœ๋…

 

 

๐Ÿ“Œ CAP ์ •๋ฆฌ์˜ 3๊ฐ€์ง€ ์š”์†Œ

 

1๏ธโƒฃ ์ผ๊ด€์„ฑ(Consistency)

  • ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•จ
  • ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ฉด ํ•ญ์ƒ ์ตœ์‹  ๋ฐ์ดํ„ฐ์—ฌ์•ผ ํ•จ
  • ์ผ๋ฐ˜์ ์ธ RDBMS์—์„œ ๊ฐ•๋ ฅํ•œ ํŠธ๋žœ์žญ์…˜์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌ

 

2๏ธโƒฃ ๊ฐ€์šฉ์„ฑ(Availability)

  • ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด ์œ ํšจํ•œ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
  • ์ผ๋ถ€ ๋…ธ๋“œ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์ „์ฒด ์‹œ์Šคํ…œ์€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ด์•ผ ํ•จ
  • ์ผ๋ถ€ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ผ๋„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”

 

3๏ธโƒฃ ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ํ—ˆ์šฉ(Partition Tolerance)

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

 

 

โš–๏ธ CAP ์ •๋ฆฌ์— ๋”ฐ๋ฅธ ์‹œ์Šคํ…œ ์œ ํ˜•

 

CAP ์ •๋ฆฌ์— ๋”ฐ๋ฅด๋ฉด ์„ธ ๊ฐ€์ง€ ์†์„ฑ ์ค‘ ๋‘ ๊ฐ€์ง€๋งŒ ์„ ํƒ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ์‹œ์Šคํ…œ ์„ค๊ณ„์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œ ํ˜•์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

 

์œ ํ˜• ์„ค๋ช…
CP (Consistency + Partition Tolerance) ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋„คํŠธ์›Œํฌ ๋ถ„ํ• ์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ, ์ผ๋ถ€ ์š”์ฒญ์— ์‘๋‹ตํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ
(ex. HBase, MongoDB)
AP (Availability + Partition Tolerance) - ๊ฐ€์šฉ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋„คํŠธ์›Œํฌ ๋ถ„ํ• ์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ, ์ตœ์‹  ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Œ
(ex. DynamoDB, Cassandra)

- ํŒŒํ‹ฐ์…˜ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒฝ์šฐ ๋™๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ์ผ๊ด€์„ฑ ๋ณด์žฅ ๊ฐ€๋Šฅ
CA (Consistency + Availability) ์ผ๊ด€์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ์œ ์ง€ํ•˜์ง€๋งŒ, ๋„คํŠธ์›Œํฌ ๋ถ„ํ• ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ
(์ด๋ก ์ ์œผ๋กœ๋งŒ ๊ฐ€๋Šฅ, ์‹ค์ œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ์กด์žฌํ•˜๊ธฐ ์–ด๋ ค์›€)

 

 

์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ๋Š” CP ๋˜๋Š” AP ๋ชจ๋ธ์„ ์„ ํƒํ•ด์•ผ ํ•˜๋ฉฐ, ๋„คํŠธ์›Œํฌ ๋ถ„ํ• ์ด ํ˜„์‹ค์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์™„๋ฒฝํ•œ CA ์‹œ์Šคํ…œ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ†ต์ƒ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ์žฅ์• ๋Š” ํ”ผํ•  ์ˆ˜ ์—†๋Š” ์ผ๋กœ ์—ฌ๊ฒจ์ง€๋ฏ€๋กœ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋ถ„ํ•  ๋‚ด์„ฑ์€ ํฌ์ƒํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

 

 

 

โœ… CAP ์ •๋ฆฌ์˜ ์‹ค์ „ ์ ์šฉ

 

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