๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš€ Backend

[Database] CAP ์ด๋ก  (CAP Theorem)

by dev.py 2025. 5. 12.

1. CAP ์ด๋ก 

๐ŸŽฏ ํ•ต์‹ฌ ํ•œ ์ค„ ์š”์•ฝ

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์ผ๊ด€์„ฑ, ๊ฐ€์šฉ์„ฑ, ๋ถ„ํ• ํ—ˆ์šฉ์„ฑ ์ค‘ 2๊ฐœ๋งŒ ์„ ํƒ ๊ฐ€๋Šฅ

๐Ÿ“– ๊ธฐ๋ณธ ๊ฐœ๋…

CAP๋ž€?

  • C: Consistency (์ผ๊ด€์„ฑ) - ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ
  • A: Availability (๊ฐ€์šฉ์„ฑ) - ํ•ญ์ƒ ์‘๋‹ต ๊ฐ€๋Šฅ
  • P: Partition Tolerance (๋ถ„ํ• ํ—ˆ์šฉ์„ฑ) - ๋„คํŠธ์›Œํฌ ๋Š์–ด์ ธ๋„ ๋™์ž‘

์™œ 3๊ฐœ ๋‹ค ์•ˆ ๋˜๋‚˜?

๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ์‹œ โ†’ ์ผ๊ด€์„ฑ vs ๊ฐ€์šฉ์„ฑ ์ค‘ ์„ ํƒํ•ด์•ผ ํ•จ

 

์ถœ์ฒ˜ : https://www.researchgate.net/figure/sualization-of-CAP-theorem_fig2_282679529

 

โš–๏ธ 3๊ฐ€์ง€ ์กฐํ•ฉ

์„ ํƒ ์˜๋ฏธ ์‚ฌ์šฉ ์šฉ๋„ ์˜ˆ์‹œ
CP ์ •ํ™•์„ฑ ์šฐ์„  ์„œ๋น„์Šค ์ค‘๋‹จ ํ—ˆ์šฉ ๋ˆ, ์˜๋ฃŒ MongoDB, Redis
AP ์†๋„ ์šฐ์„  ๋ฐ์ดํ„ฐ ์ฐจ์ด ํ—ˆ์šฉ SNS, ์˜์ƒ Cassandra, DynamoDB
CA ์ด๋ก ์ƒ๋งŒ ์กด์žฌ ๋ถ„์‚ฐํ™˜๊ฒฝ ๋ถˆ๊ฐ€ ๋‹จ์ผ์„œ๋ฒ„ MySQL, PostgreSQL

 

 

๐Ÿ’ก ์‹ค๋ฌด ์„ ํƒ๋ฒ•

CP ์„ ํƒ โ†’ ์ •ํ™•ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ

  • ์€ํ–‰ (๊ณ„์ขŒ์ด์ฒด)
  • ๊ฒฐ์ œ ์‹œ์Šคํ…œ
  • ์žฌ๊ณ  ๊ด€๋ฆฌ

AP ์„ ํƒ โ†’ ๋นจ๋ผ์•ผ ํ•˜๋Š” ๊ฒƒ

  • ํŽ˜์ด์Šค๋ถ (์ข‹์•„์š”)
  • ์œ ํŠœ๋ธŒ (์กฐํšŒ์ˆ˜)
  • ๋กœ๊ทธ ์ˆ˜์ง‘

 

๐Ÿ—ฃ๏ธ ๋ฉด์ ‘ ์งˆ๋ฌธ & ๋‹ต๋ณ€

Q: CAP ์ด๋ก  ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

A: ๋ถ„์‚ฐ์‹œ์Šคํ…œ์—์„œ ์ผ๊ด€์„ฑ, ๊ฐ€์šฉ์„ฑ, ๋ถ„ํ• ํ—ˆ์šฉ์„ฑ ์ค‘ 2๊ฐœ๋งŒ ๋ณด์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ด๋ก ์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ์‹œ ์ผ๊ด€์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ ์ค‘ ํ•˜๋‚˜๋ฅผ ํฌ๊ธฐํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Q: CP์™€ AP ์ฐจ์ด์ ์€?

A:

  • CP: ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ (์€ํ–‰, ๊ฒฐ์ œ)
  • AP: ๋น ๋ฅธ ์‘๋‹ต์ด ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ (SNS, ์ฝ˜ํ…์ธ )

Q: ์‹ค์ œ ์‹œ์Šคํ…œ ์˜ˆ์‹œ๋Š”?

A:

  • MongoDB(CP): ๋งˆ์Šคํ„ฐ ์žฅ์•  ์‹œ ์ƒˆ ๋งˆ์Šคํ„ฐ ์„ ์ถœ๊นŒ์ง€ ์“ฐ๊ธฐ ์ค‘๋‹จ
  • Cassandra(AP): ์ผ๋ถ€ ๋…ธ๋“œ ์žฅ์• ํ•ด๋„ ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ๊ณ„์† ์„œ๋น„์Šค

๐ŸŽฏ ์•”๊ธฐ ํฌ์ธํŠธ

CAP = Consistency + Availability + Partition ์ค‘ 2๊ฐœ๋งŒ!
CP = ์ •ํ™•์„ฑ ์šฐ์„  (์€ํ–‰)
AP = ์†๋„ ์šฐ์„  (SNS)

์‹œ์Šคํ…œ ๋ถ„๋ฅ˜

CP๊ณ„์—ด: MongoDB, Redis, HBase
AP๊ณ„์—ด: Cassandra, DynamoDB, Couchbase  
CA๊ณ„์—ด: MySQL, PostgreSQL (๋‹จ์ผ์„œ๋ฒ„๋งŒ)

 

 

 

'๐Ÿš€ Backend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[FastAPI] N+1 Problem  (0) 2025.05.07
[Swift + Supabase] OAuth - Sign in with Apple  (0) 2025.04.28
[FastAPI] Middleware ๋ฏธ๋“ค์›จ์–ด (CORS, Logging)  (0) 2025.04.20
[FastAPI] SSE (Server-Sent Events)  (0) 2025.04.16
[FastAPI] SQLModel  (0) 2025.03.14