๐ง ํฉ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ Raft ๊ฐ ๋ฌด์์ธ์ง ์์๋ณด์.
Raft ๋ ํฉ์ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋๋ค. ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ถ์ฐ ์์คํ ๋ถ์ผ์์ ์์ฃผ ๋ณผ ์ ์๋ ์ฉ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ผ์์์ ์ฌ์ฉํ๋ ๊ทธ 'ํฉ์'์ ์๋ฏธ๊ฐ ๋ง๋ค. ๊ทธ๋ผ ๋๊ฐ ํฉ์๋ฅผ ํ๋ค๋๊ฑธ๊น? ๋ฐ๋ก ํ๋ก๊ทธ๋จ๋ผ๋ฆฌ ํฉ์๋ฅผ ํ๋ ๊ฒ์ด๋ค.
๋ถ์ฐ ์์คํ ์ ํ๋์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์ฌ๋ฌ๊ฐ์ ์๋ฒ๊ฐ ์ฐธ์ฌํ๋ ์์คํ ์ด๋ค. ์ด ๋์ ๋ชฉํ๋ 'ํ์ฅ์ฑ ์๊ณ ์์ ํ DB๊ฐ ๋๋ ๊ฒ', '๋๋ ๋ฉ์ธ์ง๋ฅผ ์ ์คํ์ง ์๊ณ ๋ณด๋ด๋ ๊ฒ' ๋ฑ์ด ๋๋ค. ๊ทธ๋ฌ๋๊น ๋ชฝ๊ณ DB, ๋ ๋์ค ๋ฑ์ ํด๋ฌ์คํฐ ๋ชจ๋, ์นดํ์นด ํด๋ฌ์คํฐ ๋ฑ 'ํด๋ฌ์คํฐ'๊ฐ ๋ค์ด๊ฐ๋ ์์คํ ์ด๋ ์ฟ ๋ฒ๋คํฐ์ค์ฒ๋ผ ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ๋ ์์คํ ์์ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉ๋๋ค. ์ด ๋ถ์ฐ ์์คํ ์ ์ฐธ์ฌํ๋ ์๋ฒ ํ๋ํ๋๋ฅผ ๋ ธ๋๋ผ๊ณ ํ์. ๋ ธ๋์ ํํ๋ ๋ค์ํ๋ค. ๋ฌผ๋ฆฌ ์๋ฒ๊ฐ ๋ ์๋ ์๊ณ , ๊ฐ์๋จธ์ ์ ๋์ด ์๋ฒ๊ฐ ๋ ์๋ ์๊ณ , ์ฟ ๋ฒ๋คํฐ์ค pod ์ผ๋ก ๋์ด ์๋ฒ๊ฐ ๋ ์๋ ์๋ค.
์ด์ ๋๊ฐ ํฉ์ํ๋์ง๋ ์์๋ค: ๋ถ์ฐ ์์คํ ์ ๋ ธ๋๋ผ๋ฆฌ! ๊ทธ๋ผ ๋ฌด์์ ํฉ์ํ๋ค๋๊ฑธ๊น? ์์๋ฅผ ํตํด ์์๋ณด์.
๋ ธ๋ 3๊ฐ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๊ฐ ์๋ค. ์ฌ์ฉ์๊ฐ ๋ณด๋ด๋ ์ฝ๊ธฐ, ์ฐ๊ธฐ ์์ฒญ์ ๋ชจ๋ ํ๋์ ๋ ธ๋ - ๋ฆฌ๋ ๋ ธ๋๋ผ๊ณ ํ์ - ์์ ์ฒ๋ฆฌํ๋ค. ๋๋จธ์ง ๋ ๊ฐ๋ ๊ทธ ๋ ธ๋์ ์ฅ์ ๊ฐ ์๊ฒผ์ ๋๋ฅผ ๋๋นํ ๋ฐฑ์ ์ฉ์ผ๋ก, ๋ฐ์ดํฐ ๋ณต์ ๋ง ์ํํ๋ค. ์ฌ์ฉ์๊ฐ ์ฐ๊ธฐ ์์ฒญ์ ๋ณด๋ด๋ฉด ๋ฆฌ๋ ๋ ธ๋๊ฐ ๊ทธ ์์ฒญ์ ์ฝ์ด๋ค์ด๊ณ , ๋ฐ์ดํฐ๋ฅผ ์์ ํ ๋ค์ ๋๋จธ์ง ๋ ๊ฐ ๋ ธ๋์๊ฒ ๋ณต์ ์์ฒญ์ ๋ณด๋ธ๋ค. ๋ฐฑ์ ์ฉ ๋ ธ๋๋ค์ ๋ณต์ ์์ฒญ์ ๋ฐ์์ ์์ ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ค. ๊ทธ๋ฌ๋ค๊ฐ ๋ฆฌ๋ ๋ ธ๋์ ๋ฌธ์ ๊ฐ ์๊ฒจ์ ํต์ ์ด ๋์ง ์๋ ์ํฉ์ด๋ผ๋ฉด ๋ฐฑ์ ์ฉ ๋ ธ๋๋ค์ ๋จ์ ๋ ์ค ๋๊ฐ ๋ฆฌ๋ ๋ ธ๋์ ์ญํ ์ ์์๋ก ๋งก์ ๊ฒ์ธ์ง ๊ฒฐ์ ํด์ผ ํ๋ค.
์ ์์์์ ๋
ธ๋ 3๊ฐ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๊ฐ ์๋ค.
๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ํฉ์๊ฐ ์ด๋ฃจ์ด์ง ์ํฉ์ด๋ค. ์ฆ, ์ฌ์ฉ์์ ์์ฒญ์ ์ด๋ค ๋
ธ๋๊ฐ ์ฒ๋ฆฌํ ์ง, ๋ฆฌ๋ ๋
ธ๋๊ฐ ๋๊ตฌ์ธ์ง, ์ ๋ฆฌ๋ ๋
ธ๋๋ ์ด๋ป๊ฒ ์ ํ ๊ฒ์ธ์ง, ํด๋ฌ์คํฐ์ ์ด์์๋ ๋
ธ๋ ๋ชฉ๋ก์ ๋ฌด์์ธ์ง ๋ฑ ์์คํ
์ด ๋ฉ์ฉกํ๊ฒ ์ ๋์๊ฐ๊ธฐ ์ํด ์ฌ๋ฌ ๋
ธ๋ ๊ฐ ๊ด๊ณ์ ๋ํ ๋ชจ๋ ๊ฒ์ด ํฉ์์ ๋์์ด๋ผ๊ณ ํ ์ ์๋ค. ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ด ๋ถ์ฐ ๋คํธ์ํฌ ์์คํ
์ ๋ฌด๊ฒฐ์ฑ์ ์ง์ผ์ค๋ค.
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ข
๋ฅ๊ฐ ๋ง๋ฏ์ด ํฉ์ ์๊ณ ๋ฆฌ์ฆ๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค. ์ฌ์ฉ์์ ์์ฒญ์ ์ด๋ค ๋
ธ๋๊ฐ ์ฒ๋ฆฌํ ์ง
์ ๋ํ ๋ฐฉ๋ฒ๋ง ํด๋ ์ด๋ค ํฉ์ ์๊ณ ๋ฆฌ์ฆ์์๋ ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋
ธ๋๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ๋ ํ๊ณ , ๋ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์์๋ ํ๋์ ๋
ธ๋์์๋ง ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ด๋ค.
Raft ๋ ผ๋ฌธ ์ฝ๊ธฐ ์๋ฆฌ์ฆ์์๋ ์ด ๋ ผ๋ฌธ์ ๋ฐํ์ผ๋ก Raft ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ฆฌํด ๋๊ฐ๋ ค ํ๋ค.
์ปดํจํฐ๊ณตํ ์ด๋ก ํ๋๋ฅผ ๋ฐฐ์ธ ๋ ๋จผ์ ๊ทธ ์ด๋ก ์ด โ์ด๋ ํ ์ ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๋์งโ๋ฅผ ์ดํด๋ณด๋ฉด์ ๋ค๋ฅธ ์ด๋ก ๊ณผ์ ์ฐจ์ด์ ์ ๋ฐฐ์ฐ๊ณค ํ๋ค. Raft ๋ ์ด๋ค์ง ์์๋ณด์.
We had several goals in designing Raft: it must provide a complete and practical foundation for system building, (โฆ) But our most important goalโand most difficult challengeโwas understandability.
- 4. Designing for understandability
Raft์ 1์์ ๋ฏธ์ ์ โ์ดํดํ๊ธฐ ์ฌ์ด ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋๋ ๊ฒโ์ด๋ค. ์ค์ ๋ก Raft ๊ฐ ์ด๋ค์์ผ๋ก ๋์๊ฐ๋์ง๋ฅผ ์์๋ณด๋ฉด, ์๊ณ ๋ฆฌ์ฆ์ด ๋๋ฌด ๋ณต์กํด์ง๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ์ฌ๋ฌ ์ ํ์ง ์ค ๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ์ ์ ํํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๊ฑธ ๋ณผ ์ ์๋ค.
Raft๊ฐ ์ด๋ ๊ฒ ๋จ์ํจ์ ์ค์ํ๊ฒ ์ฌ๊ธฐ๋ ์ด์ ๋ Paxos ๋ผ๊ณ ํ๋ ๊ธฐ์กด ํฉ์ ์๊ณ ๋ฆฌ์ฆ ๋๋ฌธ์ด๋ค. Paxos ๋ ๋๋ฌด๋๋ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ์ ๋๋ก ์ดํดํ ์ฌ๋์ด ๋ช ์์๋ค. โ๊ทธ๊ฒ ์ ๋ฌธ์ ๋? ์๊ณ ๋ฆฌ์ฆ์ ํญ์ ์ด๋ ต๋ค!!โ ๋ผ๊ณ ์๊ฐํ ์๋ ์๊ฒ ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด ๊ทธ ์๊ณ ๋ฆฌ์ฆ์ ์ค์ ๋ก ์จ๋จน์ ์๊ฐ ์๋ค๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค. ๋๋ถ๋ถ์ Paxos ๊ตฌํ์ฒด๋ ์ฒ์์ ๊ทธ ์๊ณ ๋ฆฌ์ฆ์ ์ฐฉ์คํ ์ ๊ตฌํํ๋ค๊ฐ ์ ์ ์ผ์ฒํฌ๋ก ๋น ์ ธ์ ๋์๋ ์์ ํ ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค๊ณ ํ๋ค. ๊ฒฐ๊ตญ ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ก ์ผ๋ก๋ง ๋จ์ง ์๊ณ ํจ์ฉ์ด ์์ผ๋ ค๋ฉด ๊ทธ ๊ตฌํ์ฒด๋ฅผ ๋ง๋๋ ์ฌ๋์ด ์์๋จน์ ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋์ Raft ์ ๊ถ๊ทน์ ์ธ ๋ชฉํ๋ โ์ดํดํ๊ธฐ ์ฌ์ด ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค์ด์ ์ค์ ๋ถ์ฐ ์์คํ ์ ๋ง๋๋ ๋ฐ์ ํ์ฉ๋ ์ ์๊ฒ ํ์!โ๊ฐ ๋์๋ค. ์ค์ ๋ก ์ด ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ค๋ ์ฌ์ค์ ๋ ผ๋ฌธ ๋ง์ง๋ง ๋ถ๋ถ์์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํตํด ๋ณด์ฌ์ค๋ค.
๋ ผ๋ฌธ์ ์ด 12๊ฐ ์น์ ์ผ๋ก ๋๋๋ค. ์๋ํ์ ์ฑ gpt ์ ํ์ ๋น๋ ค์ 17์ฅ์ง๋ฆฌ ๋ ผ๋ฌธ์ 12๋ฌธ์ฅ์ผ๋ก ์์ฝํด๋ณด์.
1. ์๋ก : Raft๋ ๋ถ์ฐ ์์คํ ์์ ๋ณต์ ๋ก๊ทธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ดํดํ๊ธฐ ์ฌ์ด ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค.
2. ํฉ์ ์๊ณ ๋ฆฌ์ฆ ์๊ตฌ ์ฌํญ: ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ถ์ฐ ์์คํ ์์ ์์ ์ฑ, ํ๋ฐ์ฑ, ๊ทธ๋ฆฌ๊ณ ์ฅ์ ๋ด์ฑ์ ๋ณด์ฅํด์ผ ํฉ๋๋ค.
3. Raft ๊ฐ์: Raft๋ ํฉ์๋ฅผ ๋ฆฌ๋ ์ ์ถ, ๋ก๊ทธ ๋ณต์ , ์์ ์ฑ์ผ๋ก ๋๋์ด ์ผ๊ด๋ ๋ถ์ฐ ๋ก๊ทธ๋ฅผ ์ ์งํฉ๋๋ค.
4. ๋ฆฌ๋ ์ ์ถ: Raft๋ ํฌํ ๊ณผ์ ์ ํตํด ๋ก๊ทธ ๋ณต์ ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์คํ ์ผ๊ด์ฑ์ ์ ์งํ ๋ฆฌ๋๋ฅผ ์ ์ถํฉ๋๋ค.
5. ๋ก๊ทธ ๋ณต์ : ๋ฆฌ๋๋ ๋ก๊ทธ ํญ๋ชฉ์ ํ๋ก์์๊ฒ ๋ณต์ ํ๊ณ , ์ปค๋ฐ๋ ํญ๋ชฉ์ด ์์คํ ์ ์ฒด์ ์ผ๊ด๋๊ฒ ์ ์ฉ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
6. ์์ ์ฑ: Raft๋ ์๊ฒฉํ ๋ฆฌ๋ ๋ฐ ๋ก๊ทธ ๊ด๋ฆฌ ๊ท์น์ ํตํด ์ถฉ๋ํ๋ ๊ฒฐ์ ์ ๋ฐฉ์งํ์ฌ ์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
7. ๋ก๊ทธ ์์ถ: ๋ก๊ทธ ์์ถ์ ์ํ๋ฅผ ์ค๋ ์ท์ผ๋ก ์ ์ฅํ๊ณ ์ค๋๋ ๋ก๊ทธ ํญ๋ชฉ์ ์ญ์ ํ์ฌ ๋ก๊ทธ ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค.
8. ํด๋ผ์ด์ธํธ ์ํธ์์ฉ: ํด๋ผ์ด์ธํธ๋ ๋ฆฌ๋์๊ฒ ์์ฒญ์ ๋ณด๋ด๋ฉฐ, ๋ฆฌ๋๋ ์์ฒญ์ด ์ผ๊ด๋๊ฒ ์ฒ๋ฆฌ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
9. ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ๋ณ๊ฒฝ: Raft๋ ๋ ธ๋ ์ถ๊ฐ ๋๋ ์ ๊ฑฐ์ ๊ฐ์ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ๋ณ๊ฒฝ์ ์งํ ์ค์ธ ์์ ์ ๋ฐฉํดํ์ง ์๊ณ ์ฒ๋ฆฌํฉ๋๋ค.
10. ์ ๊ฑฐ ์ ํ: Raft์ ์ ๊ฑฐ ์ ํ ๋ฉ์ปค๋์ฆ์ ํ์์์ ๋ฐ ๊ธฐํ ์ ์ด๋ฅผ ํตํด ํ ๋ถ์ฐ์ ๋ฐฉ์งํ๊ณ ์์ ์ ์ธ ๋ฆฌ๋ ์ ์ถ์ ๋ณด์ฅํฉ๋๋ค.
11. ๊ตฌํ ๋ฐ ์ฑ๋ฅ: Raft๋ ๊ฐ๋จํ๊ฒ ๊ตฌํ๋์์ผ๋ฉฐ, ์ค์ ์์ฉ์์ ๊ฐ๋ ฅํ ์ฑ๋ฅ๊ณผ ์ ๋ขฐ์ฑ์ ์ ์ฆํฉ๋๋ค.
12. ๊ฒฐ๋ก : Raft๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ฑ๋ฅ์ ๊ฐ์ถ ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ์ค์ฉ์ ์ธ ๋ถ์ฐ ์์คํ ์ ์ ํฉํฉ๋๋ค.
์ด ์ค ๋์ฌ๊ฒจ ๋ณผ๋งํ ์ฅ์ [3. Raft ๊ฐ์, 4. ๋ฆฌ๋ ์ ์ถ, 5. ๋ก๊ทธ ๋ณต์ , 7. ๋ก๊ทธ ์์ถ, 9. ํด๋ฌ์คํฐ ๊ตฌ์ฑ์ ๋ณ๊ฒฝ, 10. ์ ๊ฑฐ ์ ํ] ์ ๋๋ค. ์ด ์ฅ์์ Raft ์ ๋์ ๋ฐฉ์์ ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ ์๋ค. [6. ์์ ์ฑ] ์ฅ์์๋ Raft ๊ฐ ์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ ๋์ํด๋ ์ฌ๋ฌ ์ฃ์ง์ผ์ด์ค๋ฅผ ๋ค ์ปค๋ฒํ ์ ์๋ค๋ ์ฌ์ค์ ์ฆ๋ช ํ๋ค. ์ฆ, Raft ์๊ณ ๋ฆฌ์ฆ์ ๋ฌด๊ฒฐ์ฑ์ ๋ท๋ฐ์นจํ๊ธฐ ์ํ ์ฅ์ผ๋ก ๋ณด๋ฉด ๋๋ค. [8. ํด๋ผ์ด์ธํธ ์ํธ์์ฉ] ์์๋ Raft ๋ฅผ ์ฌ์ฉํ๋ ๋ถ์ฐ ์์คํ ์ ๋ํ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ์ญํ ์ ํด์ผ ํ๋์ง ์๋ ค์ฃผ๊ณ ์๋ค.
Raft ์๊ณ ๋ฆฌ์ฆ์ด ๋ถ์ฐ ์์คํ ์ ์ ๋๋ก ์ ์งํ๊ธฐ ์ํด ์ด๋ค ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์์๋ณด์. ๋ค์ ํฌ์คํ ์์๋ raft ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์์ ๋ฆฌ๋ ์ ์ถ ๊ณผ์ ์ ๋ค๋ฃฐ ๊ฒ์ด๋ค.