쿠버네티스의 두뇌, 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 #분산시스템 #일관성

Read more

제로 트러스트(Zero Trust) 보안 모델의 이해

보안 패러다임이 '경계 보안'에서 '자산 보호' 중심으로 변화하고 있습니다. 그 중심에 있는 제로 트러스트(Zero Trust)의 개념과 핵심 원칙을 정리해 봅니다. 1. 제로 트러스트의 정의 기존의 보안 모델이 네트워크 경계(Perimeter)를 설정하고 내부 사용자를 신뢰하는 방식이었다면, 제로 트러스트는 "그 무엇도 신뢰하지 않는다&

By Victor Lee

IT 보안의 이름표, CVE란 무엇인가요? (초보자 가이드)

안녕하세요! IT 보안의 세계에 발을 들이면 가장 먼저 마주하게 되는 약어 중 하나가 바로 CVE입니다. 오늘은 보안 뉴스나 업데이트 공지에서 자주 보이는 이 'CVE'가 정확히 무엇인지, 왜 중요한지 아주 쉽게 정리해 보겠습니다. 1. CVE란 무엇인가요? CVE는 Common Vulnerabilities and Exposures의 약자로, 쉽게 말해 "공개적으로 알려진 보안

By Victor Lee

SBOM이란 무엇인가? (Software Bill of Materials 정리)

최근 소프트웨어 보안과 공급망 관리에서 가장 뜨거운 키워드 중 하나인 SBOM(Software Bill of Materials)에 대해 자세히 알아보겠습니다. 1. 왜 SBOM이 중요한가요? 요즘 개발되는 소프트웨어는 처음부터 끝까지 직접 모든 코드를 작성하는 경우가 드뭅니다. 대부분 오픈소스와 외부 라이브러리를 조합하여 만들어집니다. 문제는 바로 여기서 시작됩니다. "우리가 만든 서비스 안에 어떤

By Victor Lee

SIEM이란 무엇일까? — 로그를 연결하면 공격이 보인다

인터넷 서비스를 운영하다 보면 수많은 기록이 남습니다. 누가 로그인했는지, 어떤 파일을 열었는지, 어떤 API를 호출했는지. 이런 기록들을 우리는 로그(log)라고 부릅니다. 그런데 로그가 쌓이면 쌓일수록 한 가지 문제가 생깁니다. "이걸 다 어떻게 봐?" 로그 하나하나는 아무 문제가 없어 보인다 아래 세 가지 이벤트를 따로 보면 어떨까요? * 로그인

By Victor Lee