
분산 시스템의 세계에서는 여러 서버가 같은 결정을 내리는 것이 매우 중요합니다. 예를 들어, 은행 시스템에서 두 서버가 서로 다른 잔액을 보여준다면 재앙이겠죠.
이런 문제를 해결하기 위해 분산 환경에서 상태를 공유하는 알고리즘이 등장했고, 이를 Consensus Algorithm이라고 부릅니다.
이 알고리즘 중 하나가 바로 RAFT입니다. 오늘은 RAFT의 개념, 탄생 배경, 간단한 예시, 그리고 Paxos와의 비교를 통해 이를 쉽게 풀어보겠습니다.
RAFT는 분산 시스템에서 합의를 이끌어내기 위한 알고리즘입니다. 즉, 여러 대의 서버(노드)가 하나의 리더를 뽑고, 그 리더를 중심으로 모든 노드의 상태를 동일하게 유지하는 방식입니다.
RAFT의 주요 구성 요소는 다음과 같습니다:
📌 핵심 요약:
“RAFT는 여러 서버가 누가 리더인지 결정하고, 그 리더를 통해 모든 서버가 같은 상태를 유지하게 만드는 알고리즘이다.”
RAFT는 기존의 Paxos 알고리즘이 너무 복잡하다는 이유로 탄생했습니다.
📘 참고: RAFT는 2014년 Diego Ongaro와 John Ousterhout의 논문
"In Search of an Understandable Consensus Algorithm"에서 소개되었습니다.
RAFT는 이해 가능한 합의 알고리즘을 목표로, 다음을 지향합니다:
상황:
전자상거래 플랫폼에서 3개의 서버(A, B, C)가 주문 요청을 처리하고 있습니다. 누군가가 상품을 주문할 때, 모든 서버가 같은 순서로 같은 내용을 반영해야 합니다.
📌 만약 A가 다운되면?
B와 C는 다시 투표를 시작해 새로운 리더를 선출하고, 로그를 이어받아 시스템을 계속 운영합니다.
아래 영상은 Raft를 이해하기 쉽게 도식화한 1분 영상이니 시간나실 때 한번 확인해보세요!
Paxos와 RAFT는 같은 문제(분산 합의)를 해결하지만, 접근 방식이 다릅니다.
| 항목 | Paxos | RAFT |
|---|---|---|
| 개념 | 수학적으로 정교하지만 복잡함 | 직관적이고 구현이 쉬움 |
| 리더 | 존재하지 않거나 약한 리더 개념 | 명확한 리더 기반 구조 |
| 학습 난이도 | 어렵고 난해함 | 설명 가능하고 이해 쉬움 |
| 구현 | 다양한 변종 존재, 구현 난이도 높음 | 일관된 방식, 많은 시스템에 적용됨 |
🎯 핵심 요약: Paxos는 강력하지만 복잡하고, RAFT는 이해하기 쉬운 설계를 통해 같은 문제를 더 쉽게 해결합니다.
| 요소 | 설명 |
|---|---|
| 리더 선출 | 누가 명령을 받아 처리할지 정하는 단계 |
| 로그 복제 | 리더가 받은 명령을 다른 노드에 복제 |
| 안전성 보장 | 중단 상황에서도 데이터 일관성 유지 |
RAFT는 복잡한 분산 환경에서 이해하기 쉬운 합의 알고리즘을 제공하며, 실제로도 Etcd, Consul, RethinkDB 등 다양한 시스템에 적용되고 있습니다.