분산 시스템의 구원자, Raft란?

여러 대의 컴퓨터(서버)가 하나의 팀처럼 움직일 때, 가장 중요한 건 "모두가 같은 데이터(상태)를 가지고 있느냐"입니다. 이걸 합의(Consensus)라고 하죠.

예전에는 Paxos(팍소스)라는 알고리즘을 썼지만, 너무 어려워서 외계인이 만들었다는 소문이 돌 정도였어요. 그래서 2013년에 "제발 좀 이해하기 쉽게 만들자!"며 등장한 것이 바로 Raft입니다.


👑 Raft의 핵심: "리더가 다 한다"

Raft는 복잡한 문제를 세 가지로 쪼개서 해결합니다. 마치 민주주의 국가의 선거와 행정 시스템과 비슷해요.

1. 리더 선출 (Leader Election)

서버들은 세 가지 상태 중 하나에 있게 됩니다.

  • 리더(Leader): 모든 명령을 내리는 대장.
  • 후보자(Candidate): 리더가 되고 싶어 출마한 상태.
  • 팔로워(Follower): 리더의 명령을 듣는 시민.
작동 원리: 평소엔 리더가 팔로워들에게 "나 살아있어!"라는 신호(Heartbeat)를 보냅니다. 만약 일정 시간 동안 신호가 안 오면? 팔로워 중 하나가 "내가 리더 할래!"라며 투표를 시작하고, 과반수의 표를 얻으면 새로운 리더가 됩니다.

2. 로그 복제 (Log Replication)

리더가 결정되면, 이제 클라이언트의 요청을 처리합니다.

  1. 클라이언트가 리더에게 "A를 10으로 바꿔줘"라고 요청합니다.
  2. 리더는 이 기록(Log)을 자기 장부에 적고, 모든 팔로워에게 전달합니다.
  3. 팔로워 절반 이상이 "나도 적었어!"라고 응답하면, 리더는 그제야 "성공!"이라고 확정(Commit) 짓고 결과를 클라이언트에게 알려줍니다.

이 과정을 통해 모든 서버가 똑같은 데이터를 갖게 됩니다.


3. 안전성 (Safety)

Raft의 가장 강력한 규칙입니다. "과거 기록이 누락된 서버는 절대 리더가 될 수 없다"는 원칙이죠. 덕분에 서버 한두 대가 고장 났다가 돌아와도 데이터가 꼬이지 않고 최신 상태로 유지됩니다.


💡 요약하자면?

Raft는 "강력한 리더"를 중심으로 돌아가는 시스템입니다.

  • 선거를 통해 리더를 뽑고,
  • 리더가 모든 기록을 관리하며,
  • 과반수의 동의를 얻어 데이터를 확정합니다.

이 알고리즘 덕분에 우리가 쓰는 쿠버네티스(etcd)나 카프카 같은 기술들이 데이터 유실 없이 안전하게 돌아갈 수 있는 것이죠!