쿠버네티스의 두뇌, etcd는 왜 Raft를 선택했을까?

1. etcd란 무엇인가?

etcd는 분산 시스템에서 가장 중요한 데이터를 보관하는 '분산 키-값(key-value) 저장소'입니다.

단순히 데이터를 저장하는 곳이 아니라, 시스템의 '설정 값'이나 '상태'를 관리하는 곳이죠. 우리가 잘 아는 쿠버네티스(Kubernetes)가 전체 클러스터의 상태를 저장하기 위해 선택한 시스템이 바로 이 etcd입니다. 만약 etcd가 멈추거나 데이터가 꼬이면, 수천 대의 서버로 이루어진 클러스터 전체가 마비될 정도로 중요합니다.


2. etcd는 왜 Raft 기반일까?

etcd의 개발팀이 수많은 알고리즘 중 Raft를 선택한 이유는 명확합니다.

① 절대 깨지 않는 일관성 (Strong Consistency)

설정 데이터는 조금이라도 서버마다 다르면 큰 사고가 납니다. A 서버는 "서버 3대 띄워!"라고 알고 있는데, B 서버는 "1대만 띄워!"라고 알고 있으면 안 되니까요. Raft는 과반수 동의(Quorum)를 얻어야만 데이터를 확정하기 때문에 모든 서버가 항상 같은 데이터를 보게 해줍니다.

② 고가용성 (High Availability)

etcd는 여러 대의 서버로 클러스터를 구성합니다. 그중 한두 대가 죽어도 나머지 서버들이 Raft 선거를 통해 즉시 새로운 리더를 뽑아 서비스를 계속 유지합니다. "무슨 일이 있어도 멈추지 않는 저장소"가 필요한 etcd에게 딱 맞는 옷이죠.


3. etcd 안에서 Raft가 일하는 방식

etcd에 데이터를 저장하는 과정은 Raft의 '로그 복제' 과정과 정확히 일치합니다.

  1. Write 요청: 사용자가 etcd에 데이터를 쓰려고 하면, 무조건 Raft 리더에게 요청이 전달됩니다.
  2. 로그 전파: 리더는 이 요청을 로그로 만들어서 다른 etcd 노드들에게 뿌립니다.
  3. 합의 및 저장: 과반수 노드가 기록을 완료하면, 비로소 실제 저장소(Storage)에 데이터를 반영합니다.

4. 요약: 왜 etcd인가?

결국 etcd가 Raft를 사용하는 이유는 **"가장 중요한 데이터를, 가장 안전하고, 가장 단순하게 관리하기 위해서"**입니다. Paxos보다 구현이 쉬운 Raft 덕분에 etcd는 높은 안정성과 성능을 모두 잡을 수 있었고, 오늘날 클라우드 생태계의 표준 저장소가 되었습니다.

#etcd #Raft #Kubernetes #분산시스템 #일관성