분산 시스템의 구원자, 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)나 카프카 같은 기술들이 데이터 유실 없이 안전하게 돌아갈 수 있는 것이죠!

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