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

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

by dev.py 2025. 5. 12.
๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ Consistency, Availability, Partition tolerance ์ด ์„ธ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅ

1. CAP ์ด๋ก ์ด๋ž€?

CAP = Consistency / Availability / Partition Tolerance

์„ธ ๊ฐ€์ง€ ์ค‘ ๋‘ ๊ฐ€์ง€๋งŒ ๋ณด์žฅ ๊ฐ€๋Šฅ

 

2. CAP ํ•ญ๋ชฉ

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

 

1. Consistency

์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋…ธ๋“œ์— ์ ‘๊ทผํ•˜๋“ , ํ•ญ์ƒ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์•ผ ํ•จ. 

์ฆ‰, ์“ฐ๊ธฐ ์ž‘์—…์ด ๋ฐœ์ƒํ•œ ํ›„ ๋ชจ๋“  ๋ณต์ œ๋ณธ์ด ์ฆ‰์‹œ ์—…๋ฐ์ดํŠธ๋˜์–ด์•ผ ํ•จ.

2. Availability

์‹œ์Šคํ…œ์€ ํ•ญ์ƒ ์š”์ฒญ์— ์‘๋‹ตํ•ด์•ผ ํ•จ. 

์„ฑ๊ณตํ•˜๋“  ์‹คํŒจํ•˜๋“  ์‘๋‹ต์ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ ˆ๋Œ€ ์‹œ์Šคํ…œ์ด ์ค‘๋‹จ๋˜๋ฉด ์•ˆ ๋จ.

3. Partition Tolerance

์‹œ์Šคํ…œ ๋‚ด ๋…ธ๋“œ ๊ฐ„ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋Š๊ฒจ๋„, ์ „์ฒด ์‹œ์Šคํ…œ์€ ์ •์ƒ ์ž‘๋™ํ•ด์•ผ ํ•จ.

 

3. ์กฐํ•ฉ ์˜ˆ์‹œ

์กฐํ•ฉ ์ผ๊ด€์„ฑ (C) ๊ฐ€์šฉ์„ฑ (A) ๋ถ„ํ•  ํ—ˆ์šฉ์„ฑ (P) ํŠน์ง• ์˜ˆ์‹œ
CP โœ… โŒ โœ… ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๋ณด์žฅ MongoDB, Redis, HBase
AP โŒ โœ… โœ… ๋น ๋ฅธ ์‘๋‹ต, ๋ฐ์ดํ„ฐ๋Š” ๋‚˜์ค‘์— ์ •ํ•ฉ Cassandra, DynamoDB
CA โœ… โœ… โŒ ๋‹จ์ผ ์„œ๋ฒ„ ํ™˜๊ฒฝ์ด๋‚˜ ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋Š” ๋‚ด๋ถ€ ์‹œ์Šคํ…œ

์ „ํ†ต์ ์ธ RDBMS ์‚ฌ์šฉ ์‹œ
MySQL, MariaDB, PostgreSQL

CP ์œ ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ์ผ๊ด€์„ฑ๊ณผ ๋ถ„ํ•  ํ—ˆ์šฉ์„ฑ ๋ณด์žฅ 
  • ๋„คํŠธ์›Œํฌ ๋ถ„ํ• ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ผ๋ถ€ ๋…ธ๋“œ๋Š” ์š”์ฒญ์„ ๋ฐ›์„ ์ˆ˜ ์—†๊ฒŒ ๋จ (๊ฐ€์šฉ์„ฑ ํฌ๊ธฐ) 
  • ์˜ˆ์‹œ: HBase, MongoDB, Redis

AP ์œ ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 

  • ๊ฐ€์šฉ์„ฑ๊ณผ ๋ถ„ํ•  ํ—ˆ์šฉ์„ฑ ๋ณด์žฅ 
  • ๋ชจ๋“  ๋…ธ๋“œ๋Š” ํ•ญ์ƒ ์‘๋‹ตํ•˜์ง€๋งŒ, ์ผ์‹œ์ ์œผ๋กœ ์ผ๊ด€์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ์Œ 
  • ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ์ค‘์—๋Š” ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ 
  • ์ดํ›„ ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด eventually consistent ์ƒํƒœ๋กœ ๋ณต๊ตฌ 
  • ์˜ˆ์‹œ: Cassandra, Couchbase, DynamoDB 

CA ์œ ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 

  • ์ผ๊ด€์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ ๋ณด์žฅ 
  • ๋ถ„ํ• ์ด ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋งŒ ๊ฐ€๋Šฅ ์ด๋ก ์ ์œผ๋กœ๋งŒ ๋ถ„์‚ฐ 
  • CA ์‹œ์Šคํ…œ ์กด์žฌ ๊ฐ€๋Šฅ, ์‹ค์ œ๋กœ๋Š” ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅ 
  • ํ•˜์ง€๋งŒ MySQL, PostgreSQL, MariaDB ๊ฐ™์€ RDBMS๋Š” ๋‹จ์ผ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ๋Š” CA ๋ชจ๋ธ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ\

4. ์„ ํƒ ๊ธฐ์ค€ 

  • CP: ์€ํ–‰, ๊ฑฐ๋ž˜ ์‹œ์Šคํ…œ ๋“ฑ ์ •ํ•ฉ์„ฑ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค 
  • AP: SNS, ์•Œ๋ฆผ ์‹œ์Šคํ…œ ๋“ฑ ๋น ๋ฅธ ์‘๋‹ต์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค

'๐Ÿš€ 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