5분만에 이해하는 RAFT 합의 알고리즘

원혜린·2025년 5월 25일
post-thumbnail

분산 시스템의 세계에서는 여러 서버가 같은 결정을 내리는 것이 매우 중요합니다. 예를 들어, 은행 시스템에서 두 서버가 서로 다른 잔액을 보여준다면 재앙이겠죠.
이런 문제를 해결하기 위해 분산 환경에서 상태를 공유하는 알고리즘이 등장했고, 이를 Consensus Algorithm이라고 부릅니다.

이 알고리즘 중 하나가 바로 RAFT입니다. 오늘은 RAFT의 개념, 탄생 배경, 간단한 예시, 그리고 Paxos와의 비교를 통해 이를 쉽게 풀어보겠습니다.


1️⃣ RAFT란 무엇인가?

RAFT는 분산 시스템에서 합의를 이끌어내기 위한 알고리즘입니다. 즉, 여러 대의 서버(노드)가 하나의 리더를 뽑고, 그 리더를 중심으로 모든 노드의 상태를 동일하게 유지하는 방식입니다.

RAFT의 주요 구성 요소는 다음과 같습니다:

  • 리더 선출(Leader Election): 하나의 노드를 리더로 선출
  • 로그 복제(Log Replication): 리더가 명령어(로그)를 팔로워 노드에 복제
  • 안정성 보장(Safety): 시스템이 중단되더라도 일관성을 유지

📌 핵심 요약:
“RAFT는 여러 서버가 누가 리더인지 결정하고, 그 리더를 통해 모든 서버가 같은 상태를 유지하게 만드는 알고리즘이다.”


2️⃣ RAFT는 왜 만들어졌을까?

RAFT는 기존의 Paxos 알고리즘이 너무 복잡하다는 이유로 탄생했습니다.

  • Paxos는 강력하지만 이해하고 구현하기가 매우 어렵습니다.
  • RAFT는 이를 더 쉽게 설명하고 구현할 수 있도록 설계되었습니다.

📘 참고: RAFT는 2014년 Diego Ongaro와 John Ousterhout의 논문
"In Search of an Understandable Consensus Algorithm"에서 소개되었습니다.

RAFT는 이해 가능한 합의 알고리즘을 목표로, 다음을 지향합니다:

  • 모듈화(Modularity): 리더 선출, 로그 복제를 명확히 분리
  • 직관적 설계(Intuitiveness): 순서대로 설명할 수 있는 알고리즘
  • 구현 용이성(Ease of Implementation): 절차가 복잡하니 이해가 어렵고 구현이 어려워, 실제로 Paxos를 구현한 라이브러리가 거의 없었고 일부 분산 시스템이 내부적으로 사용하는 정도였음

3️⃣ 예시로 보는 RAFT

💡 시나리오: 마이크로서비스에서의 주문 처리 시스템

상황:
전자상거래 플랫폼에서 3개의 서버(A, B, C)가 주문 요청을 처리하고 있습니다. 누군가가 상품을 주문할 때, 모든 서버가 같은 순서로 같은 내용을 반영해야 합니다.

  1. 서버 간 투표를 통해 서버 A가 리더로 선출됩니다.
  2. 클라이언트가 “고객 X의 주문 요청”을 A에게 보냅니다.
  3. A는 해당 요청을 자신의 로그에 기록하고, B와 C에게도 똑같이 보내 복제를 시도합니다.
  4. 과반수(B, C)로부터 확인을 받으면, A는 “이 주문을 확정(Commit)”하고 클라이언트에게 응답을 보냅니다.
  5. B와 C도 같은 로그를 커밋하면서, 모든 서버는 동일한 상태를 유지합니다.

📌 만약 A가 다운되면?
B와 C는 다시 투표를 시작해 새로운 리더를 선출하고, 로그를 이어받아 시스템을 계속 운영합니다.

아래 영상은 Raft를 이해하기 쉽게 도식화한 1분 영상이니 시간나실 때 한번 확인해보세요!


🔁 Paxos와의 차이점

PaxosRAFT는 같은 문제(분산 합의)를 해결하지만, 접근 방식이 다릅니다.

항목PaxosRAFT
개념수학적으로 정교하지만 복잡함직관적이고 구현이 쉬움
리더존재하지 않거나 약한 리더 개념명확한 리더 기반 구조
학습 난이도어렵고 난해함설명 가능하고 이해 쉬움
구현다양한 변종 존재, 구현 난이도 높음일관된 방식, 많은 시스템에 적용됨

🎯 핵심 요약: Paxos는 강력하지만 복잡하고, RAFT는 이해하기 쉬운 설계를 통해 같은 문제를 더 쉽게 해결합니다.


🧾 마무리 정리

요소설명
리더 선출누가 명령을 받아 처리할지 정하는 단계
로그 복제리더가 받은 명령을 다른 노드에 복제
안전성 보장중단 상황에서도 데이터 일관성 유지

RAFT는 복잡한 분산 환경에서 이해하기 쉬운 합의 알고리즘을 제공하며, 실제로도 Etcd, Consul, RethinkDB 등 다양한 시스템에 적용되고 있습니다.


📚 같이 읽어보면 좋은 자료

profile
백엔드 개발자

0개의 댓글