๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ”ฌweb application/- distributed system

[distributed system] CAP ์ด๋ก ๊ณผ PACELC ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ

by Wonit 2023. 11. 12.

๋ชฉ์ฐจ

  • TL;DR
  • ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ 3 ๊ฐ€์ง€ Gaurantee
  • CAP ์ด๋ก 
    • CP ์‹œ์Šคํ…œ
    • AP ์‹œ์Šคํ…œ
    • CAP ์‹œ์Šคํ…œ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด์œ 
  • CAP ์ด๋ก ์˜ ํ•œ๊ณ„
  • PACELC ์ด๋ก 

 

TL;DR

 

 

์ด๋ฒˆ ๊ธ€์˜ ํ•ต์‹ฌ์„ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  • CAP ์ด๋ก 
    • ํŒŒํ‹ฐ์…˜์ด ํ•ญ์ƒ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ C, A ์ค‘ ํ•˜๋‚˜๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ์ด๋ก 
    • Consistency
    • Availability
    • Partition Tolerance
  • CAP ์ด๋ก ์˜ ํ•œ๊ณ„
    • ์™„๋ฒฝํ•œ CP, AP ์‹œ์Šคํ…œ์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค
    • ๋Œ€๋ถ€๋ถ„์˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์€ CP ์™€ AP ์‚ฌ์ด ์–ด๋””์ฏค์ด๋‹ค
  • PACELC ์ด๋ก 
    • partition ์ƒํ™ฉ๊ณผ ์•„๋‹Œ(else) ์ƒํ™ฉ์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ๊ฐ trade off ์˜ ์•ž ๊ธ€์ž๋ฅผ ๋”ด ์ด๋ก 
      • ํŒŒํ‹ฐ์…˜ partition ์ƒํ™ฉ์ผ ๊ฒฝ์šฐ Avaliabilty ์™€ Consistency ์‚ฌ์ด์—์„œ ๊ณ ๋ฏผํ•˜๊ณ 
      • ์•„๋‹Œ(Else) ์ƒํ™ฉ์—์„œ๋Š” Latency ์™€ Consistency ์‚ฌ์ด์—์„œ ๊ณ ๋ฏผํ•œ๋‹ค

 

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ 3 ๊ฐ€์ง€ Gaurantee

 

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ธ๋“œ(node)๋ผ ๋ถˆ๋ฆฌ๋Š” ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค๋“ค์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ์œ ๋ช…ํ•œ 3๊ฐ€์ง€์˜ guarantee ๊ฐ€ ์กด์žฌํ•œ๋‹ค

 

  1. ์ผ๊ด€์„ฑ, Consistency
  2. ๊ฐ€์šฉ์„ฑ, Availability
  3. ํŒŒํ‹ฐ์…˜ ๋‚ด์„ฑ(๊ฐ๋‚ด ํ˜น์€ ํ—ˆ์šฉ), Partition Tolerance

 

์ผ๊ด€์„ฑ, Consistency

 

consistency ๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ํ•ญ์ƒ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋งž์ถ”๋Š” gaurantee ์ด๋‹ค.

 

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

 

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

 

๊ฐ€์šฉ์„ฑ, Availability

 

availability ๋Š” ์ˆ˜์‹ ๋œ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด ๊ณ„์†ํ•ด์„œ ์‘๋‹ต์„ ํ•  ์ˆ˜ ์žˆ๋Š” gaurantee ๋ฅผ ์˜๋ฏธํ•œ๋‹ค

 

 

๋งŒ์•ฝ ํŠน์ • ๋…ธ๋“œ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์—์„œ ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š๋”๋ผ๋„ ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค์ด ์ˆ˜์‹ ๋œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

์ด๋Š” ๊ฐ€์šฉ์„ฑ์„ ๊ฐ€์žฅ ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ๋ณด์žฅํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค

 

ํŒŒํ‹ฐ์…˜ ๊ฐ๋‚ด, Partition Tolerance

 

partition ์€ DB ์˜ partitioning ์ด๋‚˜ kafka ์˜ partition ๊ณผ ๋‹ค๋ฅด๋‹ค.

 

CAP ์ด๋ก  ๋ฌธ๋งฅ์—์„œ์˜ partition ์€ ๋ฐ”๋กœ ์žฅ์• ์ด๋‹ค.

 

partition ์€ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

network ๊ฐ€ ๋ถˆ์•ˆ์ •ํ•ด์„œ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, computing engine ์ด ์ผ์‹œ์ ์œผ๋กœ down ๋œ ๊ฒƒ์„ ๋ชจ๋‘ partition ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

partition tolerance ๋Š” ์ด๋Ÿฌํ•œ partition ์ƒํ™ฉ์—์„œ์˜ recovery gaurantee ๋ฅผ ์˜๋ฏธํ•œ๋‹ค

 

CAP ์ด๋ก 

 

CAP ์ด๋ก ์€ ๋ฐ”๋กœ ์•ž์„  3๊ฐ€์ง€์˜ guarantee ๋กœ ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ๋‹ค.

 

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค์ด ํ•˜๋‚˜์˜ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•˜๋‚˜์ธ ๊ฒƒ ์ฒ˜๋Ÿผ clustered ๋˜์–ด ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ์ฃผ์š”ํ•œ ํŠน์„ฑ์€ ๋ฐ”๋กœ ๋…ธ๋“œ๊ฐ„์˜ Liveness ์ด๋‹ค.

 

๋…ธ๋“œ๊ฐ„์˜ Liveness ๊ฐ€ ์ง€๊ฒจํ‚ค์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•˜๋‹ค.

 

์•ž์„œ ์ด์•ผ๊ธฐํ•œ๊ฒƒ ์ฒ˜๋Ÿผ ์šฐ๋ฆฌ๊ฐ€ ํ•ญ์ƒ network ๋ฅผ ์‹ ๋ขฐํ•˜์ง€ ์•Š๋Š”์ , ์–ธ์ œ๋“ ์ง€ computing engine ์€ down ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•œ๋‹ค๋ฉด partition ์ธ ์ƒํ™ฉ์€ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ํ•ญ์ƒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ถˆ๊ฐ€ํ•ญ๋ ฅ์ด๋‹ค.

 

CAP ์ด๋ก ์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ Partition ์ƒํ™ฉ์ด ํ•ญ์ƒ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , Partition ์ด ๋ฐœ์ƒํ•˜๋ฉด Availability ์™€ Consistency ์‚ฌ์ด์—์„œ ์„ ํƒ์„ ํ•ด์•ผํ•œ๋‹ค๋Š” ์ด๋ก ์ด๋‹ค

 

CAP ๋ฅผ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ์‹œ์Šคํ…œ์€ ์กด์žฌํ•  ์ˆ˜ ์—†๋‹ค. ์šฐ๋ฆฌ๋Š” 2๊ฐ€์ง€์˜ guarantee ์—์„œ trade off ๋ฅผ ๊ณ ๋ คํ•ด ํ•œ ๊ฐ€์ง€๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค

 

1-1. CAP ์ด๋ก  - CP ์‹œ์Šคํ…œ

 

Consistency + Partition Tolerance

 

CP ์‹œ์Šคํ…œ์€ Partition ์ƒํ™ฉ์—์„œ ์ผ๊ด€์„ฑ(Consistency) ๋ฅผ ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค๋Š” ์‹œ์Šคํ…œ์ด๋‹ค

 

 

CP ์‹œ์Šคํ…œ์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ๊ฐ€ ์•„๋‹๊นŒ ์‹ถ๋‹ค.

 

๋Œ€ํ‘œ์ ์œผ๋กœ RDBMS ๋Š” CP ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ CP ์‹œ์Šคํ…œ์€ Primary-Secondary ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ์ด ๋˜๊ณ  p ์™€ s ์‚ฌ์ด์— ๊ณ„์†ํ•ด์„œ heartbeat checking ์„ ํ†ตํ•ด liveness ๋ฅผ ํ™•์ธํ•œ๋‹ค.

 

๋งŒ์•ฝ primary node ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋‹ค๋ฉด secondary ์ค‘ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ primary ๊ฐ€ ๋œ๋‹ค.

 

์ด๋•Œ, consistency ๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ์š”์ฒญ์„ blocking ํ•˜๋Š”๋ฐ, ์ด๋Š” ํŒŒํ‹ฐ์…˜์ด ํ•ด๊ฒฐ๋  ๋•Œ ๊นŒ์ง€ blocking ํ•˜๊ฒŒ ๋œ๋‹ค.

 

ํŒŒํ‹ฐ์…˜์ด ๋ณต๊ตฌ๋  ๋•Œ ๊นŒ์ง€ ์š”์ฒญ์„ blocking ํ•˜๊ธฐ ๋•Œ๋ฌธ์— availability ๋Š” ๋‚ฎ์•„์ง€๊ฒŒ ๋œ๋‹ค.

 

1-2. CAP ์ด๋ก  - AP ์‹œ์Šคํ…œ

 

Availability + Partition Tolerance

 

AP ์‹œ์Šคํ…œ์€ Partition ์ƒํ™ฉ์—์„œ ๊ฐ€์šฉ์„ฑ(Availability) ์„ ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค๋Š” ์‹œ์Šคํ…œ์ด๋‹ค

 

 

AP ์‹œ์Šคํ…œ์€ ์ผ๋ช… Turntable consistency ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

 

์ด ๊ตฌ์กฐ๋Š” Primary ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” Primaryless, Masterless ๊ตฌ์กฐ์ด๋‹ค. ์ฆ‰ ๋ชจ๋‘๊ฐ€ Primary ์ด๋ฉฐ Secondary ๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ž˜์„œ ๋ชจ๋“  ๋…ธ๋“œ๋กœ write ์—ฐ์‚ฐ๊ณผ read ์—ฐ์‚ฐ์ด ๋ถ„๋ฐฐ๋  ์ˆ˜ ์žˆ๊ณ , write ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋™๊ธฐํ™”ํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.

 

๊ทธ๋ž˜์„œ ๋งŒ์•ฝ ํŒŒํ‹ฐ์…˜ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์š”์ฒญ์„ ๋‹ค๋ฅธ node ๋กœ ๋ณด๋‚ด๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์šฉ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

 

primary ๊ฐ€ ์—†์–ด์„œ ๋…ธ๋“œ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ธฐ๊นŒ์ง€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ version ์„ ๊ฐ€์ ธ consistency ๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ๊นจ์ง€๋Š” ์ƒํ™ฉ์ด ์กด์žฌํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ(write) ์ž‘์—…์— ๋Œ€ํ•ด์„œ ๊ฒฐ๊ตญ ๋ชจ๋“  ๋…ธ๋“œ์— ๋„๋‹ฌํ•  ๊ฒƒ์ž„์„ ์˜๋ฏธํ•˜๋Š” Eventual Consistency ๋ฅผ ๋ณด์žฅํ•œ๋‹ค

 

1-3. CAP ์ด๋ก  - ์™œ CAP ๋ฅผ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ์‹œ์Šคํ…œ์€ ์กด์žฌํ•  ์ˆ˜ ์—†์„๊นŒ?

 

Partition ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, Consistency ์™€ Availability ๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ partitioned node ๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค๊ณ  cluster ์—์„œ ์ œ์™ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿผ ๋ณต๊ตฌ๋‚˜ ์ •ํ•ฉ์— ๋Œ€ํ•œ ์‹ ๊ฒฝ์„ ๋” ์ด์ƒ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ Consistency ์™€ Availability ๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋งŒ์กฑ๋  ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ํŒŒํ‹ฐ์…˜์ด ํ•ญ์ƒ ์กด์žฌํ•  ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๊ณ„์†ํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด node ๋ฅผ ๋ฐฉ์ถœ์‹œํ‚จ๋‹ค๋ฉด ๋‹จ์ผ ๋…ธ๋“œ๋กœ ์ˆ˜๋ ดํ•  ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋Ÿผ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์ด ๋” ์ด์ƒ ์•„๋‹ˆ๊ฒŒ ๋œ๋‹ค. CAP ์ด๋ก ์€ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ธ๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋” ์ด์ƒ CAP ๊ฐ€ ํ•„์š” ์—†์–ด์ง„๋‹ค.

 

CA ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ธ€์„ ๋ณด๋ฉด ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋กœ MySQL ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์‚ฌ์‹ค์ƒ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์ธ ๊ฒฝ์šฐ๋Š” ๋ถ„์‚ฐ ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๊ธฐ์— CAP ์ด๋ก ์„ ์ ์šฉํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ์—†์–ด ์ง€๋Š” ๊ฒƒ์ด๋‹ค.

 

2. CAP ์ด๋ก ์˜ ํ•œ๊ณ„

 

๋ชจ๋“  ์ด๋ก ์ด ๊ทธ๋ ‡๋“ฏ, ํ˜„์‹ค์— ๋ชจ๋“  ๊ฒƒ์„ 100% ์ ์šฉํ•˜๊ธฐ๋ž€ ์‰ฝ์ง€ ์•Š๋‹ค.

 

CAP ์ด๋ก ๋„ ๊ทธ๋Ÿฌํ•œ๋ฐ, CAP ์ด๋ก ์€ ํฌ๊ฒŒ 3๊ฐ€์ง€ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

  1. ์™„๋ฒฝํ•œ CP, AP ์‹œ์Šคํ…œ์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€๋ถ€๋ถ„์€ CP ์™€ AP ์‚ฌ์ด ์–ด๋””์ฏค์ด๋‹ค
  2. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ์š”์†Œ์ธ ์„ฑ๋Šฅ๊ณผ ์ง€์—ฐ์‹œ๊ฐ„์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋‹ค.
  3. ์šฐ๋ฆฌ์˜ ์‹œ์Šคํ…œ์€ ํ•ญ์ƒ partitioned ์ƒํ™ฉ์ด ์•„๋‹ˆ๋‹ค

 

์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ PACELC ๋ผ๋Š” ์ด๋ก ์ด ์กด์žฌํ•˜๋Š”๋ฐ, ํ•œ ๋ฒˆ ํ™•์ธํ•ด๋ณด์ž

 

3. PACELC ์ด๋ก 

 

PACELC ์ด๋ก ์€ ์•ž์„  CAP ์ด๋ก ์˜ ํ•œ๊ณ„๋กœ ์ธํ•ด ํƒ„์ƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

ํ˜„์‹ค์—์„œ๋Š” Partition ์ƒํ™ฉ๊ณผ ์•„๋‹Œ(Else) ์ƒํ™ฉ์ด ํ•จ๊ป˜ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , 2๊ฐ€์ง€ ์ƒํ™ฉ์„ ๋‚˜๋ˆ  ๊ฐ๊ฐ ์–ด๋–ค gaurantee ๋ฅผ ์„ ํƒํ•  ๊ฒƒ์ธ์ง€ ๋‚˜๋ˆ ๋†“์€ ๊ฒƒ์ด๋‹ค.

 

์ฒ˜์Œ์— ์†Œ๊ฐœํ–ˆ๋˜ 3๊ฐ€์ง€์˜ Gaurantee ์— Latency Gaurantee ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ PACELC ์ด๋ก ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ๋ถ„ํ•œ๋‹ค

 

  • Partition ์ƒํ™ฉ
    • ์„ ํƒ์ง€ 1. Availability
    • ์„ ํƒ์ง€ 2. Consistency
  • Else ์ƒํ™ฉ
    • ์„ ํƒ์ง€ 1. Latency
    • ์„ ํƒ์ง€ 2. Consistency

 

์ด๋Ÿฌํ•œ Gaurantee ๋“ค์„ ํ†ตํ•ด์„œ ๋‹ค์Œ 4๊ฐ€์ง€ ์กฐํ•ฉ(PA/EL, PA/EC, PC/EL, PC/EC)์ด ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋“ค์„ ํŒŒํ‹ฐ์…˜์ด ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋จผ์ € ๊ตฌ๋ถ„ํ•ด๋ณด์ž

 

3-1. ํŒŒํ‹ฐ์…˜์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๊ฐ€์šฉ์„ฑ์„ ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” PA System

 

ํŒŒํ‹ฐ์…˜์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๊ฐ€์šฉ์„ฑ์„ ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค๋ฉด PA ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์•ž์„œ ์„ค๋ช…ํ•œ ๋ฐ”๋กœ๋Š” AP System ๊ณผ ๋™์ผํ•˜๋‹ค.

 

ํŠน์ • ๋…ธ๋“œ๊ฐ€ ๋น„์ •์ƒ์ ์ด๋ผ๋„ ๋ชจ๋“  ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜์—ฌ ์ตœ์ข…์  ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค

 

๊ทธ ์™ธ์˜ ์ƒํ™ฉ์—์„œ๋Š” ๋‹ค์Œ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

  1. PA/EL
  2. PA/EC

 

PA/EL

 

PA/EC ์‹œ์Šคํ…œ์€ partition ์ƒํ™ฉ์—์„œ๋Š” ๊ฐ€์šฉ์„ฑ์ด ์ค‘์š”ํ•˜๊ณ  ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ์†๋„๊ฐ€ ์šฐ์„ ์ธ ์‹œ์Šคํ…œ์ด๋‹ค

 

๋Œ€ํ‘œ์ ์œผ๋กœ apache cassandra ๋‚˜ dynamo ์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ์ด ๊ทธ๋Ÿฌํ•˜๋‹ค

 

 

cassandra ๋Š” ํ„ดํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋กœ ์–ธ์ œ๋‚˜ ๋™์ผํ•˜๊ฒŒ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ primary ์ด๋ฉฐ secondary ์ด๊ธฐ์— ๊ฐ€์šฉ์„ฑ๊ณผ ์„ฑ๋Šฅ(low latency)์ด ๋†’๋‹ค.

 

PA/EC

 

PA/EC ์‹œ์Šคํ…œ์€ partition ์ƒํ™ฉ์—์„œ๋Š” ๊ฐ€์šฉ์„ฑ์ด ์ค‘์š”ํ•˜๊ณ  ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ์ผ๊ด€์„ฑ์ด ์šฐ์„ ์ธ ์‹œ์Šคํ…œ์ด๋‹ค

 

 

๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” MongoDB ๊ฐ€ ๊ทธ๋ ‡๋‹ค

 

MongoDB ๋Š” replication ์˜ ๋ฐ์ดํ„ฐ ์‹ฑํฌ๊ฐ€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— secondary ์— ๋ณต์ œ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋  ์ˆ˜ ์žˆ์œผ๋‚˜ ๊ฐ€์šฉ์„ฑ์ด ๋†’๋‹ค.

 

ํ•˜์ง€๋งŒ MongoDB ๋Š” non-locking cosistent read ์˜ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋ฒ•์ธ MVCC ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— consistency ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค

 

3-2. ํŒŒํ‹ฐ์…˜์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ผ๊ด€์„ฑ์„ ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” PC System

 

ํŒŒํ‹ฐ์…˜์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์ผ๊ด€์„ฑ์„ ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค๋ฉด PC System ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์•ž์„œ ์„ค๋ช…ํ•œ ๋ฐ”๋กœ๋Š” CP System ๊ณผ ๋™์ผํ•˜๋‹ค.

 

ํŠน์ • ๋…ธ๋“œ๊ฐ€ ๋น„์ •์ƒ์ ์ด๋ผ๋ฉด ์š”์ฒญ์„ block ํ•˜์—ฌ ์ผ๊ด€์„ฑ์„ ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค.

 

๊ทธ ์™ธ์˜ ์ƒํ™ฉ์—์„œ๋Š” ๋‹ค์Œ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค

  1. PC/EC
  2. PC/EL

PC/EC System

 

PC/EL ์‹œ์Šคํ…œ์€ partition ์ด๋“  ๊ทธ ์™ธ๋“  (else) ๋ชจ๋‘ Consistency ๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค

 

 

ํ˜„์กดํ•˜๋Š” data storage service ์ค‘์— RDBMS ๊ฐ€ ๊ทธ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ์ด๋‹ค.

 

MySQL ์ด๋‚˜ Postgresql ๊ณผ ๊ฐ™์€ rdb ๋Š” ACID ๋ฅผ ํ†ตํ•ด ๋Š˜ consistent operation ๋งŒ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค

 

PC/EL System

 

PC/EL System ์€ partition ์ธ ์ƒํ™ฉ์—์„œ๋Š” Consistency ๋ฅผ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ๊ทธ ์™ธ์˜ ์ƒํ™ฉ์—์„œ๋Š” ์†๋„๋ฅผ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค.

 

์ด ํŠน์„ฑ์„ ๊ฐ€์ง„ ์‹œ์Šคํ…œ์ด ๋งŽ์ง€ ์•Š์€๋ฐ, ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์€ Yahoo ์˜ PNUTS ๋ผ๋Š” DBMS ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

๋Œ“๊ธ€