분산 시스템의 구원자, Raft란?
여러 대의 컴퓨터(서버)가 하나의 팀처럼 움직일 때, 가장 중요한 건 "모두가 같은 데이터(상태)를 가지고 있느냐"입니다. 이걸 합의(Consensus)라고 하죠.
예전에는 Paxos(팍소스)라는 알고리즘을 썼지만, 너무 어려워서 외계인이 만들었다는 소문이 돌 정도였어요. 그래서 2013년에 "제발 좀 이해하기 쉽게 만들자!"며 등장한 것이 바로 Raft입니다.
👑 Raft의 핵심: "리더가 다 한다"
Raft는 복잡한 문제를 세 가지로 쪼개서 해결합니다. 마치 민주주의 국가의 선거와 행정 시스템과 비슷해요.
1. 리더 선출 (Leader Election)
서버들은 세 가지 상태 중 하나에 있게 됩니다.
- 리더(Leader): 모든 명령을 내리는 대장.
- 후보자(Candidate): 리더가 되고 싶어 출마한 상태.
- 팔로워(Follower): 리더의 명령을 듣는 시민.
작동 원리: 평소엔 리더가 팔로워들에게 "나 살아있어!"라는 신호(Heartbeat)를 보냅니다. 만약 일정 시간 동안 신호가 안 오면? 팔로워 중 하나가 "내가 리더 할래!"라며 투표를 시작하고, 과반수의 표를 얻으면 새로운 리더가 됩니다.
2. 로그 복제 (Log Replication)
리더가 결정되면, 이제 클라이언트의 요청을 처리합니다.
- 클라이언트가 리더에게 "A를 10으로 바꿔줘"라고 요청합니다.
- 리더는 이 기록(Log)을 자기 장부에 적고, 모든 팔로워에게 전달합니다.
- 팔로워 절반 이상이 "나도 적었어!"라고 응답하면, 리더는 그제야 "성공!"이라고 확정(Commit) 짓고 결과를 클라이언트에게 알려줍니다.
이 과정을 통해 모든 서버가 똑같은 데이터를 갖게 됩니다.
3. 안전성 (Safety)
Raft의 가장 강력한 규칙입니다. "과거 기록이 누락된 서버는 절대 리더가 될 수 없다"는 원칙이죠. 덕분에 서버 한두 대가 고장 났다가 돌아와도 데이터가 꼬이지 않고 최신 상태로 유지됩니다.
💡 요약하자면?
Raft는 "강력한 리더"를 중심으로 돌아가는 시스템입니다.
- 선거를 통해 리더를 뽑고,
- 리더가 모든 기록을 관리하며,
- 과반수의 동의를 얻어 데이터를 확정합니다.
이 알고리즘 덕분에 우리가 쓰는 쿠버네티스(etcd)나 카프카 같은 기술들이 데이터 유실 없이 안전하게 돌아갈 수 있는 것이죠!