쉐어드 낫씽 아키텍처(Shared-Nothing Architecture)는 각 노드가 메모리, 디스크, CPU를 공유하지 않고 완전히 독립적으로 동작하는 분산 시스템 설계다. 마이클 스톤브레이커가 1986년 제안했다.
핵심 원칙
공유 없음(Nothing Shared):
❌ 공유 메모리 (Shared Memory)
❌ 공유 디스크 (Shared Disk, SAN)
✅ 각 노드: CPU + RAM + 로컬 디스크 독립
유일한 통신 수단: 네트워크 메시지
장점:
- 선형 확장(Linear Scalability)
- 단일 실패점 없음
- 독립적 업그레이드
vs 다른 아키텍처
| 아키텍처 | 메모리 | 디스크 | 확장성 | 예시 |
|---|
| Shared Everything | 공유 | 공유 | 제한적 | 단일 서버 |
| Shared Disk | 독립 | 공유 | 중간 | Oracle RAC |
| Shared Nothing | 독립 | 독립 | 선형 | Cassandra, Kafka |
sql
-- 논리적 Shared-Nothing: 샤딩
-- 사용자 ID 기반 파티셔닝
-- 샤드 1 (user_id % 3 = 0)
CREATE TABLE users_0 PARTITION OF users
FOR VALUES WITH (MODULUS 3, REMAINDER 0);
-- 샤드 2 (user_id % 3 = 1)
CREATE TABLE users_1 PARTITION OF users
FOR VALUES WITH (MODULUS 3, REMAINDER 1);
-- 샤드 3 (user_id % 3 = 2)
CREATE TABLE users_2 PARTITION OF users
FOR VALUES WITH (MODULUS 3, REMAINDER 2);
적용 사례
Cassandra:
- 일관된 해싱(Consistent Hashing)으로 데이터 분산
- 각 노드 독립 디스크
- 복제 팩터로 가용성 보장
Kafka:
- 파티션별 독립 브로커
- 공유 상태 없음
- 컨슈머 그룹 독립
Redis Cluster:
- 16384개 해시 슬롯을 노드에 분배
- 각 노드 독립 메모리
관련 개념