샤딩과 복제
샤딩은 데이터를 서로 다른 조각으로 '나누어' 용량과 처리량을 늘리는 확장 기법이고, 복제는 똑같은 값을 여러 서버에 '겹쳐' 고장에 대비하는 가용성 기법이다. 목적이 정반대인 두 동작을 실제 시스템은 나눈 조각을 다시 복제하는 식으로 함께 쓴다.
목차
1. 개요
샤딩과 복제란 분산 시스템이 데이터를 감당하는 두 가지 기본 동작으로, 샤딩(분할)은 큰 데이터를 서로 다른 조각으로 갈라 여러 서버에 흩어 두는 것이고 복제(중복)는 똑같은 값을 여러 서버에 사본으로 겹쳐 두는 것이다.1 이름이 비슷해 자주 뒤섞이지만 목적은 정반대다. 샤딩은 한 대가 못 버티는 용량과 처리량을 여러 대로 늘리는 '확장'이 목적이고, 복제는 한 대가 죽어도 데이터를 잃지 않고 서비스를 잇는 '가용성'이 목적이다. 그래서 실제 시스템은 둘 중 하나만 고르지 않고, 나눈 조각을 다시 겹쳐 두는 식으로 함께 쓴다. 이 두 동작은 큰 파일을 블록으로 쪼개 복제하는 분산 파일 시스템, 누가 쓰기를 맡을지 정하는 마스터-슬레이브 구조, 요청을 서버별로 흩뿌리는 로드밸런싱, 자주 쓰는 데이터를 앞단에 얹어 두는 캐시 메모리와 맞물려 돌아간다.
2. 상세
2.1. 샤딩 — 데이터를 '나누기'
샤딩은 한 대의 데이터베이스가 감당 못 할 만큼 커진 데이터를 '샤드'라 부르는 작은 조각으로 쪼개, 여러 서버에 나눠 담는 기법이다. 도서관 장서를 한 서가에 다 못 꽂으면 ㄱㄷ, ㄹㅁ 하는 식으로 서가를 갈라 꽂는 것과 같다. 각 서버는 전체가 아니라 자기 몫의 조각만 책임지므로, 서버를 보탤수록 담을 수 있는 총량과 한꺼번에 처리할 수 있는 양이 함께 늘어난다.
2.2. 샤드 키와 핫스팟 — 잘못 나누면 한쪽만 붐빈다
어느 데이터를 어느 샤드로 보낼지 정하는 기준을 샤드 키라 한다. 이 기준이 한쪽으로 쏠리면 특정 서버에만 데이터와 요청이 몰리는데, 이렇게 한 조각만 지나치게 붐비는 현상을 핫스팟이라 한다.2 서가를 갈라 놓았는데 인기 도서가 죄다 한 서가에 몰려 그 앞에만 줄이 길어지는 꼴이다. 그래서 샤딩에는 '나누기만 하면 저절로 고르게 퍼진다'가 아니라 '고르게 흩어지는 좋은 기준을 골라야 한다'는 조건이 따라붙는다.
2.3. 복제 — 데이터를 '베끼기'
복제는 똑같은 값을 여러 서버에 사본으로 겹쳐 두는 기법이고, 목적은 안정성이다. 한 서버가 고장 나도 같은 값을 든 다른 서버가 그 몫을 이어받아 데이터가 사라지지 않고, 읽기 요청도 여러 사본으로 나눠 받을 수 있다. 다만 사본이 많을수록 좋기만 한 것은 아니다. 모든 사본을 최신으로 맞추는 데 드는 비용과 쓰기 부담이 사본 수만큼 함께 불어나기 때문이다.
2.4. 동기 복제와 비동기 복제 — 언제 '끝났다'고 할까
사본을 맞추는 시점을 두고 두 방식이 갈린다.3 동기 복제는 모든 사본이 변경을 반영할 때까지 기다린 뒤에야 '끝났다'고 처리한다. 데이터가 어긋날 일이 없어 안전하지만, 기다리는 만큼 느리다. 비동기 복제는 대표 서버가 먼저 끝내 응답하고 사본에는 시차를 두고 전해 준다. 빠르지만 그 시차 동안 아직 갱신 안 된 옛값이 읽힐 수 있다. 안전을 살 것인가 속도를 살 것인가의 맞바꿈이다.
2.5. 둘의 결합 — 나누고 나서 겹친다
실제 대규모 시스템은 샤딩과 복제를 함께 쓴다. 먼저 데이터를 샤드로 갈라 부하를 분산하고, 그 각 샤드를 다시 여러 사본으로 복제해 고장에 대비한다. 나누기만 하면 조각 하나가 죽을 때 그 몫이 통째로 사라지고, 겹치기만 하면 한 대의 용량 한계를 못 넘는다. 그래서 둘은 경쟁하는 기법이 아니라 서로의 빈틈을 메우는 짝이다.
3. 수능에서는 이렇게 나온다
평가원은 샤딩과 복제를 '나눔과 겹침의 목적 대비'로 묻는다. 구체적인 출제 이력은 아래 위젯을 참조하라. 이런 각도로 나온다.
- 비교·대조: 두 기법의 목적을 슬쩍 뒤바꾼 선지가 대표 함정이다.4 '복제는 용량을 늘리려는 것'이라거나 '샤딩은 고장에 대비하는 것'이라는 식으로 목적을 맞바꿔 놓는다.
- 조건·결과: 샤드 키가 치우치면 핫스팟이 생긴다처럼, 특정 조건이 성립할 때 따라오는 결과를 묻는다.
- 저울질(trade-off): 사본을 늘리면 가용성은 오르지만 그만큼 일관성을 맞추는 부담이 커지고, 동기 복제를 고르면 안전한 대신 속도를 잃는 식으로 이득과 비용을 나란히 놓고 따지게 한다.
4. 헷갈리기 쉬운 것들
| 흔한 오해 | 왜 틀렸나 | 바르게 이해하기 |
|---|---|---|
| 샤딩과 복제는 결국 같은 말이다 | 샤딩은 서로 '다른' 조각을 나눠 두지만, 복제는 '똑같은' 값을 여러 곳에 겹쳐 둔다 | 나눔은 확장, 겹침은 가용성으로 목적을 대비해 외운다 |
| 복제본은 많을수록 무조건 좋다 | 사본이 늘면 안정성은 오르지만 모두 최신으로 맞추는 비용도 같이 커진다 | 가용성 이득과 일관성 비용은 한 몸처럼 붙어 다니는 맞바꿈 관계다 |
| 비동기 복제도 언제나 최신값을 준다 | 비동기는 시차를 두고 사본에 전해 주므로 아직 안 바뀐 옛값을 돌려줄 수 있다 | 빠름을 얻는 대신 아주 잠깐 옛 데이터가 섞이는 것을 받아들이는 셈이다 |
| 샤드는 어떤 기준으로 나눠도 알아서 고르게 퍼진다 | 샤드 키가 한쪽으로 쏠리면 특정 노드에만 데이터가 몰려 핫스팟이 된다 | 고르게 흩어지는 좋은 기준을 골라야 한다는 조건이 붙는다 |
5. 관련 개념
- 분산 시스템 — 샤딩·복제가 부품으로 들어가는 상위 구조
- 분산 파일 시스템 — 파일을 블록으로 나누고 다시 복제하는 대표 사례
- 마스터-슬레이브 구조 — 복제에서 누가 쓰기를 맡고 누가 읽기를 받을지 정하는 역할 구조
- 로드밸런싱 — 나뉜 서버들로 요청을 고르게 보내는 분배 기법
- 캐시 메모리 — 자주 쓰는 데이터를 앞단에 얹어 응답을 앞당기는 성능 기법
각주
-
정의와 개념 관계는 평가원 기출 기반 배경지식 자료(기술·분산 시스템)의 공식 문서 합성 서술을 따랐다. ↩
-
샤딩에서 '샤드 키'는 핫스팟과 짝으로 등장하는 개념이다. '치우친 기준 → 한쪽 쏠림'이라는 인과를 미리 세워 두면 선지 판정이 훨씬 빨라진다. ↩
-
동기와 비동기는 '끝났다고 말하는 시점'으로 가르면 헷갈리지 않는다. 사본까지 다 기다렸다가 끝이면 동기, 나부터 끝내 놓고 사본은 나중이면 비동기다. ↩
-
목적을 뒤바꾼 선지가 이 단원의 함정이 된다. '샤딩=용량 확장, 복제=고장 대비'를 한 문장으로 붙여 외워 두면 이런 뒤집기를 반사적으로 걸러낼 수 있다. ↩
출제 사례(아직 매칭된 출제 기록이 없어요)
이 개념이 어느 시험·지문에 등장했는지의 기록입니다. 개념 자체의 난이도가 아니라 출제 맥락을 보여줍니다.
출제 기록이 확인되면 여기에 시험·지문·문항이 채워집니다.
이 문서를 가리키는 문서
잘못된 내용을 발견하셨나요? 신고해 주시면 검토 후 반영합니다.