๋ถ์ฐ ์์คํ ์์ Consistency, Availability, Partition tolerance ์ด ์ธ ๊ฐ์ง๋ฅผ ๋ชจ๋ ๋ง์กฑํ๋ ๊ฑด ๋ถ๊ฐ๋ฅ
1. CAP ์ด๋ก ์ด๋?
CAP = Consistency / Availability / Partition Tolerance
์ธ ๊ฐ์ง ์ค ๋ ๊ฐ์ง๋ง ๋ณด์ฅ ๊ฐ๋ฅ
2. CAP ํญ๋ชฉ
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 |