-
Consistency Model์ ์ข ๋ฅML engineer/System designs 2023. 1. 2. 21:55๋ฐ์ํ
๐ 4 mins read
# Consistency
๋ถ์ฐ ์์คํ ํ๊ฒฝ์์ consistency๋ ์ฌ๋ฌ ๊ฐ์ง ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ํ ๊ฐ์ง๋ ๊ฐ ๋ ํ๋ฆฌ์นด ๋ ธ๋๊ฐ ํน์ ์๊ฐ์ ํญ์ ๋์ผํ ๋ฐ์ดํฐ view๋ฅผ(๋์ผํ read ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ฑ๋ ๊ฒ) ๊ฐ์ง๋ ๊ฒ์ ์๋ฏธํ๋๊ฑธ ์ ์์ฃ . ๋ ๋ค๋ฅธ ์๋ฏธ๋ก๋ ์ฌ๋ฌ read request์ ๋ํด์ ๊ฐ์ฅ ์ต๊ทผ์ write ๋ ๊ฐ์ ๋ฆฌํดํ๋ ๊ฒ์ ์๋ฏธํ ์ ์๊ณ ์. Consistency๋ฅผ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ๋ ๋ค์ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ ๊ฐ์ง ์ธ์๋ consistency์ ๋ํ ์ ์๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก consistency model์ ์ถ์ํ๋ ๊ฐ๋ ์ผ๋ก ๋ถ์ฐ ์์คํ ๋ด์์ read, write, modification๋ฑ์ ๋ํด ์ด๋ค ๋์์ด ์ ํฉํ์ง ๋ฐ์ ธ ๋ณผ ์ ์๋๋ก ์ ์ ๋ฉ๋๋ค.
์ดํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณ ํ ๋ ๊ตฌ์ฑ์์๋ก ๋ณ๋์ ์ ์ฅ์ ๋ด์ง๋ DB๋ฅผ ์ด์ฉํ๊ฒ ๋๋๋ฐ ์ด๋ค consistency ๋ชจ๋ธ์ด ์๊ณ ์ด๋ค ์ํฉ์ ์ ํฉํ์ง๋ฅผ ์์ ๋ฌ์ผํฉ๋๋ค.
Consistency ๋ชจ๋ธ์ ์ ๊ทน๋จ์๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฐ๋์ ๋ฐ๋ฅธ ๋ถ๋ฅ๊ฐ ์๊ณ ์ ๊ทน๋จ ์ฌ์ด์์ ํํํ ๋ชจ๋ธ๋ค์ด ์กด์ฌํฉ๋๋ค.
[์ฃผ์1] ACID ์ CAP theorem์ ์๋ก ๋น์ทํ๋ฏ ํ๋, ๋ค๋ฅธ ์ ์์ ๋๋ค.
[์ฃผ์2] ์์ 4๊ฐ์ง ๋ชจ๋ธ ์ด์ธ์๋ ๋ค์ํ ๋ชจ๋ธ์ด ์๋๋ฐ, ๋ํ์ ์ธ ๊ฒ๋ค๋ง ๋์ดํ์ต๋๋ค.์์ฝํ์๋ฉด,
- ACID ๋ ๊ฐ๋ณ ๋ ธ๋์์์ ๋ฐ์ดํฐ consistency๋ฅผ,
- CAP์ ์ ์ฒด ํด๋ฌ์คํฐ๋ด์์์ consistency๋ฅผ ์๋ฏธํฉ๋๋ค.
์ฆ, ACID๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ operation์ด ์ฒ๋ฆฌ ๋๋ ๋์์ consistency๋ฅผ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ ์ด์ผ๊ธฐํ๋๊ฒ์ด๊ณ , CAP์ ๋ถ์ฐ ์์คํ ๋ด์์ ์ฌ๋ฌ replica ๋ ธ๋๋ค ๊ฐ์ consistency๋ฅผ ๋ณด์ฅํ๋ ๋ฐฉ์์ ๋ํด์ ์ด์ผ๊ธฐ ํ๋๊ฒ์ ๋๋ค.
1. Eventual Consistency
๋จผ์ ๊ฐ์ฅ ์ฝํ consistency ๋ ๋ฒจ์ธ eventual consistency๋, ๋จ์ด ๊ทธ๋๋ก, ์๊ฐ์ด ์ถฉ๋ถํ ํ๋ฅธ ๋ค์๋ ์ ์ฒด ์์คํ (ํด๋ฌ์คํฐ ๋ด์ ๋ ธ๋๋ค๊ฐ์) ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ค๋๊ฒ์ ๋๋ค.
์ฆ, read ๋์์์ ํญ์ ์ต์ ๊ฐ์ ๋ณด์ฅํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ์ ํฉํ ๋ชจ๋ธ์ธ๊ฑฐ์ฃ .
์ด์จ๊ฑฐ๋, ๋ชจ๋ read request์ ๋ํด์ ์ด๋ค replica ๋ ธ๋์์ ์๋ต์ ๋ด๋ ค์ฃผ๋ ๋์ผํ ๊ฐ์ ๋ด์ด์ฃผ๊ธฐ๋ง ํ๋ค๋ฉด, consistent ํ๊ธด ํ๊ฒ์ด์ฃ . ๋ค๋ง, ๊ฐ์ด ์ค์๊ฐ์ผ๋ก ์ต์ ์ด ์๋ ์ ์๋ค๋๊ฒ๋ง ๋นผ๊ณ ๋ง์ด์ฃ .
์๋์ ํ ์ด๋ธ์ ํตํด ๋ถ์ฐ ์์คํ ๋ด์์ ์์คํ ์ ์ํ์ ๋ฐ๋ผ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ณผ์ ๊ณผ, read ๊ฒฐ๊ณผ๋ฅผ ๋ณด์์ฃ .
Time Value Operation Read result t1 x = 2 - 2 t2 x = 215write ( x = 15 ) 2 : ์์ง ๊ฐ์ ์ ์ฅํ๊ณ replica์ ์ ํ ์ค ์ธ ์ํ t3 x = 15 read ( x ) 15 : ๊ฐ์ด ๋ชจ๋ replica์ ๊ฐฑ์ ๋ ์ํ ๋ํ์ ์ผ๋ก ์ด๋ฐ ๋์์ด ์ ๋นํ ๊ฒฝ์ฐ๋ DNS ์๋ฒ (๋๋ฉ์ธ ๋ค์ ๊ด๋ฆฌ ์์คํ )๊ฐ ์๊ฒ ์ฃ ?
- ์ต์ ์ฑ์ด ๋์์ ์น๋ช ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์์ํ ๋๊น ๋ง์ด์ฃ .2. Causal Consistency
Eventual consistency ๋ชจ๋ธ ๋ณด๋ค ์ฝ๊ฐ ๋ ์ต์ ์ฑ์ ์ ์งํ๋ ๋ฐฉํฅ์ผ๋ก ๋ณํ์ ํ๋ฉด, causal consistency ๋ชจ๋ธ์ด ์๋๋ฐ, ์ฌ๊ธฐ์ ๋ฐ์ดํฐ operation์ ์์กด์ฑ ์ ๋ฌด์ ๋ฐ๋ผ ๋๊ฐ์ง๋ก ๋๋์ด ์ฒ๋ฆฌ ํ๋ ๋ฐฉ์์ ๋๋ค.
์์กด์ฑ์ด ์๋ operation์ dependent ํน์ causally-related operation์ด๋ผ ๋ถ๋ฅด๋๋ฐ์, ๋ง ๊ทธ๋๋ก ์์กด์ฑ์ด ์๋ ๋ช ๋ น๋ค์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ ํ๋๊ฒ์ ๋ณด์ฅํฉ๋๋ค.
์์ ์์์์ ๋ ํ๋ก์ธ์ค p1 ๊ณผ p2 ๋ causally related operation์ ์ํํฉ๋๋ค.
p1์ ์์ ์ด ์ ํ๋์ด์ผ b๊ฐ ์กด์ฌํ๊ณ b๋ฅผ y์ write ํ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ .๋ํ์ ์ธ ๊ฒฝ์ฐ๋ก, SNS๋ ์ปค๋ฎค๋ํฐ ๊ฒ์ํ ๋ฑ์์ ์ฌ์ฉ๋๋ ๋๊ธ ์์คํ ์ด ์์ต๋๋ค. ๋ต๋๊ธ์ ๋ฌ๊ธฐ ์ํด์๋ ๋๊ธ์ด ๋จผ์ ์ ์ฅ ๋ ๋ค์์ ํด๋น ๋๊ธ์ ๋ํ ๋ต๋๊ธ์ ์ ์ฅ ํ ์ ์์ผ๋๊น์. ์ผ๋ จ์ ๋์์ด ์ ํ ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ค๊ณ ํฉ๋๋ค.
- ๊ฐ๋ น ํน์ ๋๊ธ์ด ํด๋ฌ์คํฐ ๋ด์ ํ ๋ ธ๋ a์๋ ์ ์ฅ๋์๋๋ฐ ์ ์ฒด replica์ ์ ํ ๋๊ธฐ ์ ์ ํด๋น ๋๊ธ์ ๋ํ ๋ต๋๊ธ์ด ์ ์ฅ๋๋ฉด, ์์ง a ์ด์ธ์ ๋ ธ๋์๋ ์ฒซ๋ฒ์งธ ๋๊ธ์ด ์ ์ฅ๋์ง ์์์ผ๋, ๋ต๋๊ธ์ ๋ํ ์ ๋ณด๊ฐ ๋จผ์ ์ ์ฅ๋์ด์ ์๋๋ค๋ ๊ฒ์ด์ฃ . (๊ฐ ๋ ธ๋ ๋จ์๋ก ์ ํ ๋๊ธ์ด ์ ์ฅ ๋ ๋ค์์ ๋ต๋๊ธ์ด ์ ์ฅ๋์ด์ผํ๋ ๊ตฌ์กฐ)
3. Sequential Consistency
ํ ๋จ๊ณ ๋ ๋์๊ฐ์ ์กฐ๊ธ ๋ strictํ ์์คํ ์ผ๋ก๋ ์์คํ ์์ ์ ์ํ ํน์ ์์๊ฐ ๋ณด์ฅ๋๋๋ก ํ๋ consistency ๋ชจ๋ธ์ ๋๋ค. ์ฌ์ ํ global clock์ ๋ํ ์ค์๊ฐ ์ต์ ์ฑ์ ๋ณด์ฅํ์ง ์์ง๋ง, ํน์ ์กฐ๊ฑดํ์ ์ ์๋ ์์๋ ๋ฐ๋์ ๋ณด์ฅ๋๋๋ก ํ๋๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด ์ข ๋ ์ค๋ช ์ด ์ ๋ฟ์ํ ๋ฐ์, SNS ๋ด์์ ์ด์ฉ์ ์ ์ฅ์์ ์ ์ฒด ํผ๋์ ์ค์๊ฐ ์์๋ ์ ํํ์ง ์์๋ ๋์ง๋ง, ํน์ ์น๊ตฌ/๊ณ์ ์ด ์ ๋ก๋ํ ํฌ์คํ ์ ๋ฐ๋์ ํด๋น ์ ์ ๊ฐ ์ ๋ก๋ํ ์์๋ฅผ ๋ณด์ฅํด์ผ ํ๊ฒ ์ฃ . ๋ฐ๋ผ์ ์ด๋ฐ ๊ฒฝ์ฐ์ sequential consistency๋ฅผ ์ด์ฉํ๊ฒ ๋ฉ๋๋ค.
4. Strict Consistency
๋ง์ง๋ง์ผ๋ก strict consistency ๋ชจ๋ธ์ ๋ค๋ฅธ ๋ง๋ก linearizability ๋ผ๋ ์์ฑ์ผ๋ก๋ ๋ถ๋ฅด๋๋ฐ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์์ค์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๋ชจ๋ธ์ ๋๋ค. ๊ทธ ์ด๋ค replica ๋ ธ๋๊ฐ read ์์ฒญ์ ๋ฐ๋๋ผ๋ ๋ฐ๋์ ์ต์ ๊ฐ์ผ๋ก ๊ฐฑ์ ๋ ๊ฒฐ๊ณผ๋ง์ ์ฝ์ ์ ์๋๋ก ๋ณด์ฅํ๋ ๋ชจ๋ธ์ ๋๋ค. Write ๋ modification์ด ์ํ๋๋ค๋ฉด, ํด๋น ์์ ์ด ์๋ฃ ๋์๋ค๋ ack๊ฐ ํ์ธ ๋ ๋๋ง ํด๋น ๊ฐ์ ๋ํ read๋ฅผ ์ํํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฐ์์ผ๋ก ์ ์ฒด ํด๋ฌ์คํฐ ๋ ธ๋์ ์ต์ ๊ฐ์ด ๊ฐฑ์ ์ด ์๋ฃ ๋์์๋๋ง ack๋ฅผ ๋ฐ์์์ผ์ ํด๋ผ์ด์ธํธ๊ฐ ํญ์ ์์คํ ์ ์ต์ ๊ฐ์ ์ฝ๋๋ก ํ๋๊ฒฝ์ฐ๋ ์ํ ๊ณ์ข ์์คํ ๊ฐ์ ๊ณณ์์๋ ๋ฐ๋์ ์ต์ ๊ฐฑ์ ๋ state๋ก๋ง ๋์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค. ๋๋ ํจ์ค์๋ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํด์ผํ๋ ๊ณ์ ์๋ฒ์ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ์ต์ ๊ฐ ํ๋๋ง์ผ๋ก ์ํ๊ฐ ์ ์ง๋์ด์ผ๊ฒ ์ฃ ?
ํ์ง๋ง, strictness๊ฐ ๊ฐํ ์๋ก ์ ์ฒด ํด๋ฌ์คํฐ์ ์ต์ ์ ๋ณด๊ฐ ๊ฐฑ์ ๋์ด์ผ ํ๋ฏ๋ก ์์คํ ์ ์๋ต์๊ฐ์ด ๋๋ ค์ง ์ ์์ต๋๋ค. ๊ทธ๋์ ์ต์ ์ฑ์ ์ต๋ํ ์ ์งํ๋, ํญ์ ์ด๋ฐ ๋๊ธฐํ๋ฅผ ์๊ตฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ ์ด๋์ ๋ ๋น๋๊ธฐ์ฑ์ ๊ฐ์ถฐ ์๋ต์๊ฐ์ ํ๋ณดํ๊ธฐ๋ ํฉ๋๋ค.
## Quorum based Consistency
ํฌํ ๋ฐฉ์์ quorum ๋ฐฉ๋ฒ๋ก ์ธ๋ฐ ๊ฐ๋จํ ํํํ๋ฉด,
w + r > n
w : minimum write nodes
r : minimum read nodes
n : nodes in the quorum group์ฆ, ๋ ธ๋๋ฅผ ๋ฌถ์ด์ ์ด n ๊ฐ์ ๋ ธ๋๊ฐ ์๋ค๊ณ ํ๋ฉด, w, r ์ ์ ์ ํด๋ก๋๋ค.
ํด๋ฌ์คํฐ์ ์์ฒญ์ด ๋ค์ด์์๋ ์ต์ ๊ฐ์ ํด๋นํ๋ w / r ๋งํผ์ ๋ ธ๋๊ฐ ๋์ผํ ์๋ต์ ํ ๊ฒฝ์ฐ์๋ง operation์ ์ํํ๋๊ฒ์ด์ฃ .
๋ฐ๋ผ์, ์ด ๊ฒฝ์ฐ์๋ 3๊ฐ์ ๋ ธ๋๊ฐ ์๊ณ w, r = 2 ๋ผ๊ณ ๊ฐ์ ํ๋ฉด, ์ต์ 2๊ฐ์ ๋ ธ๋๊ฐ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด ํด๋น ๊ฐ์ด ์ต์ ๊ฐ์ด๋ผ ์๊ฐํ๊ฒ ๋ค๋ ๊ฒ์ ๋๋ค. (๋๊ฒ ํด๋ฌ์คํฐ๋ ํ์๊ฐ์ ๋ ธ๋๋ผ๊ณ ๊ฐ์ ํ๊ณ w = r= (n+1)/2 ๋ฃฐ์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.)- ํ์ง๋ง ์ด๋ฐ ๋ฐฉ์์๋ ๋ฆฌ์คํฌ๊ฐ ๋ฐ๋ฅด๋๋ฐ, ์ต์ ๊ฐ์ด ๋์ธ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์์คํ ์ availability๋ฅผ ํฌ์ํ๊ฑฐ๋ ์ต์ ์ฑ์ ํฌ์ํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฐ์์ผ๋ก ๋น๋๊ธฐ์ฑ์ ๊ฐ์ง๋ ์์คํ ์ ์์ ํ strictํ consistency๋ฅผ ๋ณด์ฅํ ํ์๋ ์์๋์๋ง ์ฌ์ฉํด์ผ๊ฒ ์ฃ ?
์ค๋ ์ดํด๋ณธ ๋ด์ฉ์ ๋ณด๋ฉด, consistency ๊ฐ๋์ ๋ฐ๋ผ ์์คํ ์ ์ต์ ์ฑ๊ณผ ์๋ต ์๋๋ ์๋ก trade off๊ด๊ณ์ ์๋๊ฑธ ์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์์คํ ์ ๊ตฌํํ ๋ ์ด๋ค ๋ชจ๋ธ์ด ์ ํฉํ ๊ธฐ๋ฅ์ธ๊ฐ๋ฅผ ์ ํ๋จํด์ ์ค๊ณํด์ผ๊ฒ ์ฃ .๋ฐ์ํ'ML engineer > System designs' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
IaaS / PaaS / SaaS (0) 2023.09.22 Domain Name System (DNS) ๊ฐ์ (0) 2023.01.22 ๋ถ์ฐ ์์คํ ๋์์ธ (0) 2023.01.19