์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ํ๋ก๊ทธ๋๋จธ์ค
- sw expert academy
- redux
- JavaScript
- react
- maeil-mail
- ์ฝ๋ฉํ ์คํธํฉ๊ฒฉ์๋๊ธฐ
- ํ ์ฝํ ์ฝ
- ์๋ฐ
- ํญํด99
- ๋ฆฌ์กํธ
- react-router
- ์ด์ฝํ
- Python
- redux-saga
- C++
- createSlice
- programmers
- Algorithm
- redux-toolkit
- java
- SW
- ๋งค์ผ๋ฉ์ผ
- ์๊ณ ๋ฆฌ์ฆ
- Get
- useDispatch
- json-server
- react-redux
- ํญํดํ๋ฌ์ค
- axios
- Today
- Total
Binary Journey
[๋งค์ผ๋ฉ์ผ] CAP ์ ๋ฆฌ์ ๋ํด์ ์๊ณ ๊ณ์ ๊ฐ์? ๋ณธ๋ฌธ
[๋งค์ผ๋ฉ์ผ] 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 ์ ๋ฆฌ์ ์ค์ ์ ์ฉ
- ์ํ ์์คํ
(CP ๋ชจ๋ธ)
- ์ก๊ธ ์ ๋ชจ๋ ๋ ธ๋๊ฐ ๋์ผํ ์์ก ์ ๋ณด๋ฅผ ์ ์งํด์ผ ํจ → ์ผ๊ด์ฑ์ด ์ค์
- ๋คํธ์ํฌ ๋จ์ ์ ์์คํ ์ด ์ ์ ๋ฉ์ถ๋๋ผ๋ ์ผ๊ด์ฑ์ ๋ณด์ฅํด์ผ ํจ
- SNS ํผ๋ ์์คํ
(AP ๋ชจ๋ธ)
- ๋คํธ์ํฌ ์ฅ์ ๊ฐ ์์ด๋ ์๋น์ค๋ ๊ณ์ ์ ๊ณตํด์ผ ํจ → ๊ฐ์ฉ์ฑ์ด ์ค์
- ์ผ๊ด์ฑ์ด ์กฐ๊ธ ๋จ์ด์ง๋๋ผ๋ ์ฌ์ฉ์ ๊ฒฝํ์ด ์ฐ์
- ์ด์ปค๋จธ์ค ์ฌ๊ณ ๊ด๋ฆฌ ์์คํ
(CP ๋๋ AP)
- ์ค์๊ฐ ์ฌ๊ณ ํ์ธ์ด ํ์ํ ๊ฒฝ์ฐ CP ์ ํ
- ๋คํธ์ํฌ ์ฅ์ ์๋ผ๋ ์ฃผ๋ฌธ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ค๋ฉด AP ์ ํ