다섯 살도 알 수 있게 · SRE
샤딩이 뭐예요?
샤딩을 손님 명부를 번호별로 나눈 매표 창구 이야기로 풀어봤어요.
창구 하나에 손님 명부 전체가 있어요.이름을 찾으려면 명부 전체를 뒤져야 해요.
손님이 백만 명이면 이름 찾기가 느려요.한 장부에서 다 찾으려니 시간이 걸려요.
번호별로 창구를 나누면 — 각 창구는 적은 명부만 봐요.찾는 시간이 창구 수만큼 짧아져요.
나누는 기준을 정해요번호나 이름으로요
창구마다 적은 양만찾기가 빨라져요
몰리면 또 나눠요리밸런싱이에요
안내판이 필요해요어느 창구인지 알려줘요
나누는 기준과 안내판이 한 세트예요.번호를 보고 바로 맞는 창구로 가요.
번호를 잘못 나누면 한 곳에만 몰려요.그리고 창구를 가로질러 묻는 질문엔 느려요.
한 줄로
샤딩 = 손님 명부를 번호(기준)로 나눠 여러 창구에 조금씩만 맡기는 일. 안내판이 어느 창구인지 알려주고, 한쪽이 몰리면 다시 나눠요.
데이터를 여러 서버(샤드)에 나눠 저장하는 방식이에요. 나누는 기준을 파티션 키라고 불러요. 한 샤드에 몰리는 걸 핫스팟이라 하고, 여러 샤드에 걸친 질문(크로스-샤드 쿼리)은 느려요.
어른들은 이렇게 불러요
- 샤딩
Sharding - 명부를 창구 여러 곳에 나눠 두는 일. 각 창구는 전체가 아니라 일부만 맡아요.
- 파티션 키
Partition key - 나누는 기준. 번호나 이름 앞글자 같은 거예요.
- 핫스팟
Hotspot - 한쪽 창구에만 몰리는 것. 기준을 잘못 고르면 생겨요.
- 리밸런싱
Rebalancing - 몰린 창구를 다시 나누는 일. 핫스팟이 생기면 해요.
- 일관 해싱
Consistent hashing - 재배치를 적게 하는 나누기 방법. 한 줄로만 말하면 '재배치를 줄이는 나누기'예요.
- 크로스-샤드 쿼리
Cross-shard query - 창구 여러 곳을 다 더해야 답이 나오는 질문. 전체 손님 수 같은 질문이 느린 이유예요.
- 복제
Replication - 창구 하나가 아니라 여러 곳에 똑같이 적어 두는 일. 샤딩과는 다른 문제예요 — 양이 아니라 안전을 위해서예요. → 손님 명부를 두 창고에 똑같이
- 수평 확장
Horizontal scaling - 창구를 더 늘리는 방법. 샤딩은 수평 확장의 대표적인 방법이에요.
다음 이야기
손님 명부를 두 창고에 똑같이 →