데이터 노드 클러스터에 접근하기위한 REST, 또는 gRPC 인터페이스를 제공한다.
무상태 서비스로 확장성을 고려한다.
배치 서비스를 호출하여 데이터를 저장할 노드를 선정한다.
배치 서비스
데잍를 데이터 노드 클러스터 중 어느 노드에 저장할지 결정한다.
내부적으로 가상 클러스터 지도를 유지하며, 이를 바탕으로 원본과 사본이 다른 노드에 저장되도록 한다.
모든 데이터 노드의 하트비트를 확인하며, 팩서스(Paxos), 래프트(Raft) 등의 분산 합의 알고리즘을 사용하여 데이터 노드 클러스터의 리더를 선출한다.
새로운 노드가 추가되면, 이를 가상 클러스터 지도에 추가하고 아래 정보를 반환한다.
❗ Paxos, Raft 알고리즘
분산 합의 알고리즘은 분산 시스템에서 여러 노드가 일관된 상태를 유지하고 데이터를 동기화하기 위해 사용되는 알고리즘임.
두 알고리즘의 특징은 다음과 같다.
Paxos
- 역할: Proposer, Acceptor, Learner (노드가 다중 역할 가능)
- 과정: 2단계 커밋 (Prepare → Accept)
- 특징: 이론적 완성도 높음, 구현 복잡, 최적화 가능성 많음
- 사용: Google Chubby, Microsoft Azure
Raft
- 역할: Leader, Follower, Candidate (한 노드 = 한 역할)
- 과정: 리더 선출 → 로그 복제 (임기 기반)
- 특징: 이해/구현 쉬움, 강한 리더십, 단순한 설계
- 사용: etcd, Consul
가장 단순한 방안은 객체 데이터 각각을 파일로 저장하는 것임.
따라서 작은 객체들을 하나의 큰 파일(수 GB)로 모아서 저장