์ด๋ฒ ์๋ฆฌ์ฆ์์๋ In Search of an Understandable Consensus Algorithm
(Extended Version) ๋ฅผ ์ฝ๊ณ ์ ๋ฆฌํฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ๋ค์ ๋ถ๋ถ์ ๋ค๋ฃน๋๋ค:- Raft ๊ฐ์: Raft๋ ์ผ๊ด๋ ๋ถ์ฐ ๋ก๊ทธ๋ฅผ ์ ์งํ๊ธฐ ์ํด ํ์ํ ๋์์ ๋ฆฌ๋ ์ ์ถ, ๋ก๊ทธ ๋ณต์ , ์์ ์ฑ 3๊ฐ์ง ์์ ์ผ๋ก ๋๋์ด ์ ๋ฆฌํ๋ค.
- ๋ฆฌ๋ ์ ์ถ: Raft๋ ํฌํ ๊ณผ์ ์ ํตํด ๋ก๊ทธ ๋ณต์ ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์คํ ์ผ๊ด์ฑ์ ์ ์งํ ๋ฆฌ๋๋ฅผ ์ ์ถํ๋ค.
Raft ๋ ๋ณต์ ๋ ๋ก๊ทธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. Raft ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ๋ชจ๋์์๋ 1๊ฐ์ ๋ฆฌ๋๊ฐ write/read ์์ฒญ์ ๋ชจ๋ ์ฒ๋ฆฌํ๊ณ , N๊ฐ์ ํ๋ก์๊ฐ ๋ก๊ทธ๋ฅผ ๋ณต์ ํ๋ ์ญํ ์ ํ๋ค. ์ฆ, ํ๋ก์๋ ๋ฆฌ๋์ ๋ค๋ฅธ ํ๋ก์ ๋ ธ๋๊ฐ ์ฃฝ์์ ๋๋ฅผ ๋๋นํ ๋ฐฑ์ ์ญํ ๋ง ์ํํ๋ค. Raft ๋ ๊ฐํ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์๋ต ์ง์ฐ์ ์ฝ๊ฐ ํฌ๊ธฐํ๋๋ก ์ค๊ณ๋์๋ค. Kafka (KRaft ๋ฒ์ ), MongoDB, RabbitMQ ๋ฑ์์ Raft ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.
Raft ์๊ณ ๋ฆฌ์ฆ์๋ 2๊ฐ์ง ๋ชฉํ๊ฐ ์๋ค. 1์์ ๋ชฉํ๋ ์ดํดํ๊ธฐ ์ฌ์ด ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋๋ ๊ฒ์ด๊ณ , 2์์ ๋ชฉํ๋ ์ค์ ๋ถ์ฐ ์์คํ ์ ์ค๊ณํ๋๋ฐ ์ฐ์ผ ์ ์๋ ๊ธฐ๋ฐ์ ์ ๊ณตํ๋ ๊ฒ์ด๋ค. ์ โ์ค์ฉ์ ์โ๋ณด๋ค โ์ดํดํ๊ธฐ ์ฌ์โ์ด ์ฐ์ ์์๊ฐ ๋ ๋๋๊ณ ๋ฌป๋๋ค๋ฉด, ๊ทธ๋ ์ง ์์ ๋ถ์ฐ ์์คํ ์ ์ดํดํ๊ธฐ๊ฐ ๋๋ฌด ์ด๋ ต๊ณ ๊ตฌํํ๊ธฐ ๊น๋ค๋ก์์ ์ ๋๋ก ์จ๋จน๋๋ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. Raft ์ ๋น๊ต๋๋ Paxos ๋ผ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๊ทธ๋ ๋ค.
์ดํดํ๊ธฐ ์ฌ์ด ๋ถ์ฐ ์์คํ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค๊ธฐ ์ํด ์๋ ๋๊ฐ์ง ์ ๋ต์ ์ฌ์ฉํ๊ณ Raft ๊ฐ ํ์ํ๋ค.
ํ๋์ฉ ์ดํด๋ณด์.
์ปดํจํฐ ๊ณตํ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๋ฉด์ ํญ์ ๋ง์ฃผ์น๋ ๊ทธ divide and conquer ๊ฐ ๋ง๋ค. ๋ ผ๋ฌธ์์๋ โํฉ์ ์๊ณ ๋ฆฌ์ฆโ์ด๋ผ๋ ๋ณต์กํด๋ณด์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ 3๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๋๋์ด ํ๋์ฉ ์ ๋ณตํ๋ ๊ณผ์ ์ด ๋์จ๋ค.
์ฌ๊ธฐ์ ๋งํ๋ โ์ํโ๋ ๋ถ์ฐ ์์คํ
ํด๋ฌ์คํฐ์ ์ ์ฒด์ ์ธ ์ํ๋ฅผ ๋งํ๋ค. ์๋ฅผ ๋ค์ด โ๋ฆฌ๋ ๋
ธ๋ 1๊ฐ๊ฐ ์ฃฝ์์โ, โํ๋ก์ ๋
ธ๋ 1๊ฐ๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฆฌ๋, ํ๋ก์ ๋
ธ๋๊ฐ ๋ชจ๋ ์ฃฝ์์โ, โ๋ฆฌ๋ ์ ์ถ ๊ณผ์ ์ด ๋๋์ง ์์๋๋ฐ ๊ฐ์๊ธฐ ์์ ์ด ๋ฆฌ๋๋ผ๊ณ ์ฃผ์ฅํ๋ ๋
ธ๋๊ฐ ๋ํ๋จโ ๊ฐ์๊ฒ ์๋ค. (๋ณด๊ธฐ๋ง ํด๋ ์ฌ๋ฐ๋ ๋ง์์ด ์ํ ์ํฉ!)
Raft ์์๋ ์ ๋ฐ ์๋๋ฆฌ์ค ํ๋ํ๋๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋๋ก ์ํฉ์ ์ฌํํ๊ฒ ํด๊ฒฐํ๊ณ ์ ํ๋ค. ์ ๋ฐ ์ํฉ์ ์์ ํ ๋ฐฉ์งํ ์๋ ์์ง๋ง ์ต๋ํ ๋น ๋ฅด๊ฒ ๋ณต๊ตฌ๋ ์ ์๋๋ก ๋ง๋ ๊ฒ์ด๋ค. ๊ทธ ์์ ์ค ํ๋๋ก โ๋ฆฌ๋์๊ฒ ๋ชจ๋ ๊ฑธ ๋งก๊ธฐ๋โ ๋ถ๋ถ์ด ์๋ค. P2P ๊ฐ ์๋ ๋ฆฌ๋-ํ๋ก์ ๊ตฌ์ฑ์ด๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ ๋ณต์ ๊ณผ์ ์ด ๊ฐ๊ฒฐํด์ง ๊ฒ์ด๋ค.
Raft ์ ์ ๋ฐ์ ์ธ ๋์ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์์๋ณด์. ํ์ด๋ณด๊ธฐ ํธํ๊ฒ ์งง๊ฒ ์ ๋ฆฌํด๋ณด๋ฉดโฆ
term
์ผ๋ก ๊ด๋ฆฌ. ์ฆ, ์ผ์ข
์ logical clock,term
์ ์์ ์์ : ๋ฆฌ๋ ์ ์ถ์ด ์์๋ ๋term
์ด ์ข
๋ฃ๋๋ ์์ term
์๋ ์ต๋ 1๊ฐ (!= ์ ํํ 1๊ฐ)์ ๋ฆฌ๋๊ฐ ์กด์ฌcurrent term
์ ๊ฐ๊ณ , ๋ค๋ฅธ ๋
ธ๋์ ํต์ ํ ๋ ํญ์ ์ด๊ฑธ ์ฃผ๊ณ ๋ฐ๋๋ค.โฆ ๋๋ต ์ด๋ ๊ฒ ๋๋ค. ์ด๋ฒ์๋ Raft ๋ ธ๋ ์ค์์ ํต์ฌ ์ญํ ์ ๋งก๊ณ ์๋ ๋ฆฌ๋ ๋ ธ๋๋ฅผ ์ด๋ป๊ฒ ์ ์ถํ๋์ง ์์๋ณด์. ๋ฆฌ๋ ์ ์ถ์ divide and conquer ๋ฅผ ํตํด ์ฐพ์ 3๊ฐ์ง ๋ฏธ์ ์ค ํ๋์ด๊ธฐ๋ ํ๋ค.
์ธ์ , ์ด๋ป๊ฒ, ์ ํ๋๊ฐ?
๊ฐ์ฅ ์ฌ์ด ๋ต๋ณ๋ถํฐ ํด๋ณด์. ์ ํ๋๊ฐ? ๋ฆฌ๋ ์ญํ ๋ ธ๋๊ฐ ์์ด์ผ ์ฌ์ฉ์ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ ๋ก๊ทธ ๋ณต์ ๋ฅผ ๊ด๋ฆฌํ๋ ์ฃผ์ฒด๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, Raft ์์ P2P๊ฐ ์๋ ๋ฆฌ๋-ํ๋ก์ ์ํคํ ์ฒ๋ฅผ ์ ํํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฆฌ๋ ์ ์ถ์ ์ธ์ ํด์ผํ๋์ง ์์๋ณด์. ์ง๊ด์ ์ผ๋ก ๋๋ตํ๊ธฐ๋ ์ฝ๋ค. โ๋ฆฌ๋๊ฐ ์์ ๋, ๊ทธ๋ฌ๋๊น ๋งจ ์ฒ์ ํด๋ฌ์คํฐ๊ฐ ์์ํ์ ๋๋ ์ด์์๋ ๋ฆฌ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋โ์ด๋ค. ๊ทธ๋ฌ๋ฉด ์ด ์ํฉ์ ์ด๋ป๊ฒ ์์์ฑ ์ ์์๊น?
๋จผ์ ๋งจ ์ฒ์ ํด๋ฌ์คํฐ๊ฐ ์์ํ ๋ ๋ฆฌ๋๋ฅผ ์ ์ถํ๋ ๋ฐฉ๋ฒ์ ์ฝ๋ค. ์ฌ์ค ์ ์ถ ๊ณผ์ ์ด ํ์์๋ค. ํด๋ฌ์คํฐ ์ด๊ธฐ ์ค์ ๊ฐ์ ์ด๋ค ๋ ธ๋๊ฐ ๋ฆฌ๋๊ฐ ๋ ์ง ์ ํ ํด์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฌธ์ ๋ ๊ทธ ๋ค์์ด๋ค. ์ ๋์ํ๋ ๋ฆฌ๋ ๋ ธ๋์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค๋ ์ฌ์ค์ โ์๋์ผ๋กโ ์์์ฑ๊ณ โ์๋์ผ๋กโ ์ ๊ฑฐ๋ฅผ ์์ํ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
๋ฆฌ๋ ์ ์ถ์ ํธ๋ฆฌ๊ฑฐํ๊ธฐ ์ํด heartbeat ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ค. ๋ฆฌ๋ ๋ ธ๋๋ ์์ ์ด ์ด์์์์ ๋ชจ๋ ํ๋ก์์๊ฒ ์ผ์ ํ ์ฃผ๊ธฐ๋ก ์ ์กํ๋ค. ๋ ธ๋ ๊ฐ ํต์ ์ RPC ๋ฅผ ์ฌ์ฉํ๊ณ ๋ณ๋ ฌ ์ ์กํ๋ค๊ณ ํ์์ผ๋ ์ด heartbeat ๋ RPC ๋ฅผ ํตํด ๋ณ๋ ฌ์ ์ผ๋ก ์ ์กํ๋ค.(๊ทธ๋ ์ง ์์ผ๋ฉด ๋๋ฆฌ๋ค!) ์ด RPC ๋ฅผ AppendEntries RPC ๋ผ๊ณ ํ์. ๋ฆฌ๋๋ ๋ด์ฉ๋ฌผ์ด ๋น์ด์๋ ๋น AppendEntries RPC ๋ฅผ ํ๋ก์์๊ฒ ์ ์กํ๋ค.
ํ๋ก์๋ ๋ฆฌ๋๊ฐ ์ผ์ ์๊ฐ์ด ์ง๋๋๋ก heartbeat ๋ฅผ ์ ์กํ์ง ์์ผ๋ฉด ๋ฆฌ๋ ๋ ธ๋์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค๊ณ ๊ฐ์ฃผํ๊ณ ์ ๋ฆฌ๋๋ฅผ ๋ฝ๊ธฐ ์ํ ํฌํ๋ฅผ ์์ํ๋ค. ์ด ๋ โ์ผ์ ์๊ฐโ์ election timeout ์ด๋ผ๊ณ ํ๋ค. Election timeout ์ด ๋ฐ๋ก ๋ฆฌ๋ ์ ์ถ์ ์ํ ํธ๋ฆฌ๊ฑฐ์ธ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด election timeout ์ ์ด๋ป๊ฒ ์ ํ ๊น? ์ด๋ป๊ฒ ํด์ผ ๋ฆฌ๋๊ฐ ๋ฉ์ฉกํ๊ฒ ์ด์์๋ ์ํฉ๊ณผ ์ฅ์ ๊ฐ ์๊ธด ์ํฉ์ ๊ตฌ๋ถํ ์ ์๋ ์ ์ ํ ๊ฐ์ ์ฐพ์์ ์ ํ ์ ์์๊น? ์ ์ด์์๋ ๋ฆฌ๋๊ฐ ๋ณด๋ธ AppendEntries RPC(heartbeat) ๊ฐ ํ๋ก์์๊ฒ ๋ฏธ์ฒ ๋๋ฌํ๊ธฐ ์ ์ election timeout ์ด ๋ฐ์ํ๋ฉด ๊ณค๋ํ๋ค. ๋ํ ์๋ก ๋ค๋ฅธ ๋ ํ๋ก์๊ฐ ๋์ผํ election timeout ๊ฐ์ ๊ฐ์ ธ์ ๋์์ ํ์์์์ด ๋ฐ์ํด์๋ ์๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ ํ๋ก์๊ฐ ๋์์ ์ ๊ฑฐ๋ฅผ ์์ํ ๊ฒ์ด๊ณ ์๋ก์๊ฒ ํฌํ ์์ฒญ์ ๋ณด๋ด๋ ๋ฑ ๋ณต์กํ ์ํฉ์ด ์๊ธธ ์ ์๋ค.
Raft ์์๋ ์์ ๋งํ ๊ฒ์ฒ๋ผ ์ต๋ํ ์ฌํํ ๋ฐฉ๋ฒ์ ํํ๋ค. ๋๋ค์ผ๋ก ๊ฐ ๋ ธ๋๋ณ election timeout ์ ํ ๋นํ๋ ๊ฒ์ด๋ค. ์ด ๋๋ค๊ฐ์ ์ term ์ด ์์๋ ๋๋ง๋ค ๊ณ์ ๋ฐ๋๋ค. ๊ฐ๋ฅํ 1๊ฐ์ ์๋ฒ๋ง election timeout ์ด ๋ฐ์ํ๋๋กํ์ฌ split vote ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์๋ค.
๋ฌผ๋ก ์ด ๋ ๋๋ค ๊ฐ์ ๋ฒ์๋ ์ ํด๋๋๋ค. ๋ฆฌ๋๊ฐ ๋ณด๋ธ AppendEntries RPC(heartbeat) ๊ฐ ํ๋ก์์๊ฒ ๋๋ฌํ ์ ๋์ ์๊ฐ์ ๋ฒ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ ผ๋ฌธ์์๋ ๊ณ ์ ๋ ๊ฐ์ election timeout ์ ์ง์ ํ๋ฉด ์๊พธ ์ฝ๋ ์ผ์ด์ค๊ฐ ์๊ฒจ์ ์๊ณ ๋ฆฌ์ฆ์ด ๋ณต์กํด์ก๋ค๊ณ ์ธ๊ธํ๋ค.
์์ฝํ์๋ฉด, ํ๋ก์๊ฐ ์ ๊ฑฐ๋ฅผ ์์ํ๋ฉฐ ๊ทธ ์์ ์ ๋ฆฌ๋๊ฐ ๋ณด๋ธ heartbeat ์ ํธ๋ฅผ ๋ฐ์ง ๋ชปํ ์ฑ ์์ ์ election timeout ์ด ์ง๋ฌ์ ๋์ด๋ค.
์ ๊ฑฐ๋ฅผ ์์ํ๊ธฐ ์ ์ ์ดํดํด์ผ ํ๋ ๊ฐ๋ ์ด ํ๋ ์๋ค. ๋ฐ๋ก โQuorum ์ ์กฑ์โ ๊ฐ๋ ์ด๋ค. ์ ์กฑ์๋ ์ ์์ด ํฉ์๊ฐ ๋๊ธฐ ์ํด ์ ์์ ์ฐฌ์ฑํด์ผ ํ๋ ๋ ธ๋์ ์ต์ ๊ฐ์๋ฅผ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด ์ ์ฒด ๋ ธ๋๊ฐ 5๊ฐ์ด๊ณ ์ ์กฑ์๊ฐ 2์ผ ๋, โ1๋ฒ ๋ ธ๋๊ฐ ๋ฆฌ๋๋ค.โ ๋ผ๋ ์ ์์ ๋ํด ์ต์ 2๊ฐ ๋ ธ๋๋ง ์ฐฌ์ฑํ๋ฅผ ๋์ ธ๋ ๋ชจ๋ ๋ ธ๋๋ 1๋ฒ ๋ ธ๋๊ฐ ๋ฆฌ๋๋ผ๊ณ ์๊ฐํด์ผ ํ๋ค.
์ฌ๊ธฐ์ ์ ์กฑ์์ ์ค์์ฑ์ด ๋ํ๋๋ค. ์ ์ฒด ๋ ธ๋๊ฐ 5๊ฐ, ์ ์กฑ์๊ฐ 2๋ผ๋ฉด ์ด์ํ ์ํฉ์ด ๋ฒ์ด์ง ์ ์๋ค. 1๋ฒ๊ณผ 2๋ฒ์ด โ1๋ฒ์ด ๋ฆฌ๋๋คโ์ ์ฐฌ์ฑํ๊ณ 3๋ฒ๊ณผ 4๋ฒ์ด โ3๋ฒ์ด ๋ฆฌ๋๋คโ์ ์ฐฌ์ฑํ๋ค๋ฉด โ๋ฆฌ๋๋ 1๋ฒ๊ณผ 3๋ฒ์ด๋คโ๊ฐ ์ต์ข ํฉ์๊ฐ ๋์ด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์์๋ ์ ์กฑ์๋ก ๊ณผ๋ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
์ ์ด์ ์ ๊ฑฐ๊ฐ ์์๋๋ฉด ์ด๋ป๊ฒ ๋๋์ง ์์๋ณด์. ๊ทธ๋ฆฌ๊ณ โ์ง์ง๋ก ๋๋ค timeout์ ๋๋ฉด ๋ชจ๋ ๊ฒ ํด๊ฒฐ๋๋์งโ๋ ์์๋ณด์.
์ผ ์ฐ๋ฆฌ ๋ฆฌ๋ ์ฃฝ์๊ฑฐ๊ฐ์๋ฐ ์๋ก ํ๋ ๋ฝ์์ผ๊ฒ ๋ค. ์ผ๋จ ๋ ํ๋ณด๋ก ๋ฑ๋กํ๊ณ ์ฐฌ์ฑํ ํ๋! ๋๋ค๋ ๋ต์ฅ ์ค
์ฌ๊ธฐ๊น์ง๋ ์ฌํํ๋ค. ๊ทธ๋ฐ๋ฐ 3๊ฐ์ง ์ํฉ์ ์ด๋ค ์ํฉ์ผ๊น?
๊ฐ ์ํฉ์ด ์ด๋ป๊ฒ ๋ฐ์ํ ์ ์๋์ง (how), ๋ฐ์ํ ๋ค์์๋ ์ด๋ป๊ฒ ๋๋์ง (and) ์ดํด๋ณด์.
๋ ํฐ term๊ฐ์ผ๋ก heartbeat ๊ฐ ๋ค์ด์๊ตฐ. ๋ด current term ๋ ์
๋ฐ์ดํธํ๊ณ ๋ฆฌ๋ ๋
ธ๋ ์ ๋ณด๋ ์
๋ฐ์ดํธํด์ผ๊ฒ ์ด
๋ผ๊ณ ํ๋จํ๋ค.term ๊ฐ์ด ๋ด๊ฐ ๊ฐ๊ณ ์๋๊ฑฐ๋ณด๋ค ํฌ๊ณ heartbeat ๋ฉ์ธ์ง๋ค. ๋ด๊ฐ ์ฃฝ์ ์ฌ์ด์ ์ ๋ฆฌ๋๊ฐ ์๊ฒผ๊ตฐ
ํ๊ณ ํ๋ก์ ์ํ๋ก ๋์๊ฐ๋ค.์ ๋ชจ๋ฅด๊ฒ ๊ณ ๋ election timeout ์ง๋ฌ์ผ๋๊น ์ ํฌํ ์์ํฉ๋๋ค~ ๋ ํ๋ณด๋ก ๋ฐ๊พธ๊ณ ์ฐฌ์ฑํ 1๊ฐ ๋์ง. ๋ํฌ๋ ๋ต์ฅ ์ค
์ด๋ผ! ์ปค๋ฒํ์ง ๋ชปํ๋ ์ผ์ด์ค๊ฐ ๋ฐ๊ฒฌ๋์๋ค. ํ์ง๋ง ์ด๋ ๋ง ๊ทธ๋๋ก โ์ด๋ก ์โ์ ์ผ์ด๋ค. Split vote ๊ฐ ์์ํ ์ ์ง๋๋ ค๋ฉด ์ผ์ ๋ฒ์ ๋ด์์ ๊ฑฐ์ ๋ช ms ์ฐจ์ด๋ก ์์ฃผ ๋น์ทํ ๊ฐ์ election timeout ๊ฐ์ด ํด๋ฌ์คํฐ ๋ด์ ๋ชจ๋ ๋ ธ๋์๊ฒ ํ ๋น๋์ด์ผ ํ๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ๋๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ๋ ํ๋ฅ ์ ๋งค์ฐ ๋ฎ๋ค. ๊ทธ๋ฌ๋ ค๊ณ ๋๋ค์ ์ฐ๋ ๊ฒ์ด๋ค.
๋ฆฌ๋-ํ๋ก์ ๊ตฌ์กฐ์ธ Raft ์์๋ ๋ฆฌ๋ ์ ์ถ ๊ณผ์ ์ ๋จ์ํํ๊ธฐ ์ํด ๋ช๊ฐ์ง ์ ๋ต์ ์ฌ์ฉํ๋ค.
๋ํ ์ต๋ 1๊ฐ์ ๋ฆฌ๋๋ง ์กด์ฌํ ์ ์๋๋ก ์์ ์ฅ์น๋ฅผ ๋ง๋ จํ๋ค.
์ด๋ฅผ ํตํด ๊ณ ๋ คํด์ผ ํ ์ํฉ์ ์๋ฅผ ์ค์ด๊ณ ์ด๋ก ์์ผ๋ก ๋ฐ์ ๊ฐ๋ฅํ split vote ์ํฉ์ ์ต๋ํ ๋ฐฉ์งํ๊ณ ์ ํ๋ค. (์นดํ์นด, ๋ชฝ๊ณ DB, RabbitMQ ๋ฑ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฐ์ด๊ณ ์๋๊ฑธ ๋ณด๋ฉด ์ ๋ง ์ด๋ก ์์์๋ง ๋ฐ์ํ๋ ์๋๋ฆฌ์ค์ธ๋ฏํ๋ค. ํน์ ์ฌ์ฉํ๋ ์ชฝ์์ ์ฝ๊ฐ์ ์ปค์คํ ์ ํ๊ฑฐ๋..!)
๋ค์ ํฌ์คํ ์์๋ ๋ก๊ทธ ๋ณต์ ๊ณผ์ ์ ์์ธํ ์์๋ณด์. ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์งํค๊ธฐ ์ํด ์ญ์๋ term ๊ฐ์ ํ์ฉํ๋ค.