CAP ์ ๋ฆฌ๋?
๋ถ์ฐ ์์คํ
์ ์ํ๋ ์ธ ๊ฐ์ง ํน์ฑ, ์ผ๊ด์ฑ, ๊ฐ์ฉ์ฑ, ๋ถํญ ๋ด์ฑ ์ค ๋ ๊ฐ์ง๋ง ์ ๊ณตํ ์ ์์์ ์ฆ๋ช
ํ ์ ๋ฆฌ
์ผ๊ด์ฑ(Consistency)
- ์ด๋ค ๋ ธ๋์ ์ฐ๊ฒฐ๋์๋์ง์ ๋ฌด๊ดํ๊ฒ ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ๋์ผ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์์ ์๋ฏธํ๋ค.
- ๋ฐ์ดํฐ๊ฐ ํ๋์ ๋ ธ๋์ ๊ธฐ๋ก๋ ๋๋ง๋ค ์ด ๋ฐ์ดํฐ๋ ์ฐ๊ธฐ๊ฐ โ์ฑ๊ณตโ์ผ๋ก ๊ฐ์ฃผ๋๊ธฐ ์ ์ ์์คํ ์ ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ก ์ฆ์ ์ ๋ฌ๋๊ฑฐ๋ ๋ณต์ ๋์ด์ผ ํ๋ค. ๊ฐ์ฉ์ฑ(Availability)
- ํ๋ ์ด์์ ๋ ธ๋๊ฐ ์๋ ์ค์ง๋ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ต์ ๋ฐ์์ ์๋ฏธํ๋ค.
- ๋ถ์ฐ ์์คํ ์ ๋ชจ๋ ์์ ์ค์ธ ๋ ธ๋๋ ์์ธ ์์ด ๋ชจ๋ ์์ฒญ์ ๋ํด ์ ํจํ ์๋ต์ ๋ฆฌํดํ๋ค. ๋ถํ ๋ด์ฑ(Partition tolerance)
- ๋ถํ (Partition)์ด๋ ๋ถ์ฐ ์์คํ ๋ด์ ๋คํธ์ํฌ ๋จ์ , ์ฆ ๋ ๋ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ์ด ์ ์ค๋๊ฑฐ๋ ์ผ์์ ์ผ๋ก ์ง์ฐ๋ ์ํ๋ฅผ ๋งํ๋ค.
- ๋ถํ ๋ด์ฑ(Partition Tolerance)์ด๋ ์์คํ ์ ๋ ธ๋ ๊ฐ์ ๋ค์์ ๋คํธ์ํฌ ๋จ์ ์๋ ๋ถ๊ตฌํ๊ณ ํด๋ฌ์คํฐ๊ฐ ๊ณ์ํด์ ์๋ํจ์ ์๋ฏธํ๋ค.
CAP ์ NoSQL
NoSQL DB๋ ๋ถ์ฐ ๋คํธ์ํฌ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ๋ค. ์์ง ํ์ฅ์ด ๊ฐ๋ฅํ RDB์ ๋ฌ๋ฆฌ NoSQL DB ์์๋ ์ํ ํ์ฅ์ด ๊ฐ๋ฅํ๊ณ ์ค๊ณ์ ๋ฐ๋ผ ๋ถ์ฐ๋๋ค. ์ฆ, ์ฌ๋ฌ ๊ฐ์ ์ํธ ์ฐ๊ฒฐ๋ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ์ฑ์ฅ ๋คํธ์ํฌ์์ ๋น ๋ฅด๊ฒ ํ์ฅํ ์ ์๋ค.
Info
NoSQL DB๋ CAP ์ค ๋ ๊ฐ์ ํน์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ฅ๋๋ค. CP ๋ฐ์ดํฐ ๋ฒ ์ด์ค
- ๊ฐ์ฉ์ฑ์ ํฌ์์ํค๋ฉด์ ์ผ๊ด์ฑ๊ณผ ๋ถํ ๋ด์ฑ์ ์ ๊ณต
- ๋ ๋ ธ๋ ๊ฐ์ ๋ถํ ์ด ๋ฐ์ํ๋ฉด, ์์คํ ์ ๋ถํ ์ด ํด๊ฒฐ๋ ๋๊น์ง ์ผ๊ด๋์ง ์์ ๋ ธ๋๋ฅผ ์ข ๋ฃ(์ฆ, ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๊ฒ)ํด์ผ ํ๋ค. AP ๋ฐ์ดํฐ ๋ฒ ์ด์ค
- AP ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๊ด์ฑ์ ํฌ์์ํค๋ฉด์ ๊ฐ์ฉ์ฑ๊ณผ ๋ถํ ๋ด์ฑ์ ์ ๊ณต
- ๋ถํ ์ด ๋ฐ์ํ์ ๋ ๋ชจ๋ ๋ ธ๋๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ๋ก ์ ์ง๋์ง๋ง ์๋ชป๋ ๋ถํ ์ ๋์ธ ๋ ธ๋๋ ๋ค๋ฅธ ๋ ธ๋๋ณด๋ค ์ค๋๋ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํดํ ์ ์๋ค.
- ๋ถํ ์ด ํด๊ฒฐ๋๋ฉด AP ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ธ๋๋ฅผ ์ฌ๋๊ธฐํํ์ฌ ์์คํ ์ ๋ชจ๋ ๋ถ์ผ์น๋ฅผ ๋ณต๊ตฌํ๋ค. CA ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ชจ๋ ๋ ธ๋์์ ์ผ๊ด์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ์์คํ ์ ์๋ ๋ ๋ ธ๋ ์ฌ์ด์ ๋ถํ ์ด ์์ผ๋ฉด ์ผ๊ด์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ด๊ฒฐํจ์ฑ์ ์ ๊ณตํ ์ ์๋ค.
- ๋ถ์ฐ ์์คํ ์์๋ ๋ถํ ์ ํผํ ์ ์์ผ๋ฏ๋ก CA ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์กด์ฌํ ์ ์๋ค.
CAP ์ MongoDB
- MongoDB๋ CP ๋ฐ์ดํฐ ์ ์ฅ์์ด๋ฉฐ ๊ฐ์ฉ์ฑ์ ํฌ์์ํค๋ฉด์ ์ผ๊ด์ฑ์ ์ ์งํ์ฌ ๋คํธ์ํฌ ๋ถํ ์ ํด๊ฒฐํ๋ค.
- MongoDB๋ย ๋จ์ผ ๋ง์คํฐย ์์คํ ์ผ๋ก, ๊ฐย ๋ณต์ ๋ณธ ์ธํธ์๋ ๋ชจ๋ ์ฐ๊ธฐ ์กฐ์์ ์์ ํ๋ ํ๋์ ๊ธฐ๋ณธ ๋ ธ๋๋ง ์์ ์ ์๋ค.
- ๋์ผํ ๋ณต์ ๋ณธ ์ธํธ์ ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ 1์ฐจ ๋ ธ๋์ ์กฐ์ ๋ก๊ทธ๋ฅผ ๋ณต์ ํ์ฌ ์์ฒด ๋ฐ์ดํฐ ์ธํธ์ ์ ์ฉํ๋ 2์ฐจ ๋ ธ๋์ด๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๋ 1์ฐจ ๋ ธ๋์์ ์ฝ์ง๋ง, ์ด๋ 2์ฐจ ๋ ธ๋์์๋ ์ฝ์ ์ ์๋๋ก ํ์ฉํ๋ย ์ฝ๊ธฐ ํ๊ฒฝ ์ค์ ์ ์ง์ ํ ์๋ ์๋ค.
- 1์ฐจ ๋ ธ๋๊ฐ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๊ฒ ๋๋ฉด, ๊ฐ์ฅ ์ต๊ทผ์ ์กฐ์ ๋ก๊ทธ๊ฐ ์๋ 2์ฐจ ๋ ธ๋๊ฐ ์ 1์ฐจ ๋ ธ๋๋ก ์ ์ ๋๋ค.
- ๋ค๋ฅธ ๋ชจ๋ 2์ฐจ ๋ ธ๋๊ฐ ์ ๋ง์คํฐ๋ฅผ ๋ฐ๋ผ์ก์ผ๋ฉด ํด๋ฌ์คํฐ๋ฅผ ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ์ด ๊ฐ๊ฒฉ ๋์ ์ฐ๊ธฐ ์์ฒญ์ ํ ์ ์์ผ๋ฏ๋ก, ๋ฐ์ดํฐ๋ ์ ์ฒด ๋คํธ์ํฌ์์ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค.
CAP ์ ๋ง์ดํฌ๋ก ์๋น์ค
- CAP ์ ๋ฆฌ๋ฅผ ์ดํดํ๋ฉด ์ฌ๋ฌ ์์น์์ ์คํ ์ค์ธ ๋ง์ดํฌ๋ก ์๋น์ค ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์ค๊ณํ ๋ ์ต์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๋ ๋ฐ ๋์์ด ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋น ๋ฅด๊ฒ ๋ฐ๋ณตํ๊ณ ์ํ์ผ๋ก ํ์ฅํ๋ ๊ธฐ๋ฅ์ด ํ์์ด์ง๋ง, ๊ถ๊ทน์ ์ผ๊ด์ฑ์ ํ์ฉํ ์ ์๋ ๊ฒฝ์ฐ Cassandra ๋๋ย Apache CouchDB์ ๊ฐ์ AP ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ์ฉ์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์ํค๊ณ ๋ฐฐ์น๋ฅผ ๊ฐ์ํํ ์ ์๋ค.
- ๋ฐ๋๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ด eCommerce ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์ง๋ถ ์๋น์ค์์์ ๊ฐ์ด ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ํฌ๊ฒ ์์กดํ๋ ๊ฒฝ์ฐ์๋ PostgreSQL ๋ฑ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ์ ์๋ค.
Links
IBM - CAP A Beginnerโs Guide to CAP Theorem for Data Engineering