다섯 살도 알 수 있게 · SRE

샤딩이 뭐예요?

샤딩을 손님 명부를 번호별로 나눈 매표 창구 이야기로 풀어봤어요.

매표 창구손님 명부김··· 박··· 이···백만 명 전부 여기창구 하나에 손님 명부 전체가 있어요

창구 하나에 손님 명부 전체가 있어요.이름을 찾으려면 명부 전체를 뒤져야 해요.

백만 명 중에 그 이름을 찾는 중...줄이 점점 길어져요손님이 백만 명이면 한 장부에서 이름 찾기가 느려요

손님이 백만 명이면 이름 찾기가 느려요.한 장부에서 다 찾으려니 시간이 걸려요.

1-250251-500501-750751-1000번호별로 창구를 나누면, 각 창구는 적은 명부만 봐요창구가 네 개면, 찾는 시간도 4분의 1이 돼요

번호별로 창구를 나누면 — 각 창구는 적은 명부만 봐요.찾는 시간이 창구 수만큼 짧아져요.

나누는 기준을 정해요번호나 이름으로요
창구마다 적은 양만찾기가 빨라져요
몰리면 또 나눠요리밸런싱이에요
안내판이 필요해요어느 창구인지 알려줘요
안내판번호 601 → 4번 창구4번나누는 기준(번호·이름)과 안내판이 한 세트예요

나누는 기준과 안내판이 한 세트예요.번호를 보고 바로 맞는 창구로 가요.

1번번호를 잘못 나누면 한 곳에만 몰려요전체 손님 수는?창구 네 곳을 다 더해야 해요...창구를 가로질러 묻는 질문엔 느려요

번호를 잘못 나누면 한 곳에만 몰려요.그리고 창구를 가로질러 묻는 질문엔 느려요.

한 줄로

샤딩 = 손님 명부를 번호(기준)로 나눠 여러 창구에 조금씩만 맡기는 일. 안내판이 어느 창구인지 알려주고, 한쪽이 몰리면 다시 나눠요.

데이터를 여러 서버(샤드)에 나눠 저장하는 방식이에요. 나누는 기준을 파티션 키라고 불러요. 한 샤드에 몰리는 걸 핫스팟이라 하고, 여러 샤드에 걸친 질문(크로스-샤드 쿼리)은 느려요.

어른들은 이렇게 불러요

샤딩
Sharding
명부를 창구 여러 곳에 나눠 두는 일. 각 창구는 전체가 아니라 일부만 맡아요.
파티션 키
Partition key
나누는 기준. 번호나 이름 앞글자 같은 거예요.
핫스팟
Hotspot
한쪽 창구에만 몰리는 것. 기준을 잘못 고르면 생겨요.
리밸런싱
Rebalancing
몰린 창구를 다시 나누는 일. 핫스팟이 생기면 해요.
일관 해싱
Consistent hashing
재배치를 적게 하는 나누기 방법. 한 줄로만 말하면 '재배치를 줄이는 나누기'예요.
크로스-샤드 쿼리
Cross-shard query
창구 여러 곳을 다 더해야 답이 나오는 질문. 전체 손님 수 같은 질문이 느린 이유예요.
복제
Replication
창구 하나가 아니라 여러 곳에 똑같이 적어 두는 일. 샤딩과는 다른 문제예요 — 양이 아니라 안전을 위해서예요. → 손님 명부를 두 창고에 똑같이
수평 확장
Horizontal scaling
창구를 더 늘리는 방법. 샤딩은 수평 확장의 대표적인 방법이에요.
다음 이야기
손님 명부를 두 창고에 똑같이 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →