다섯 살도 알 수 있게 · SRE

멱등성이 뭐예요?

멱등성을 같은 번호의 티켓은 한 번만 인정해 주는 매표 창구 이야기로 풀어봤어요.

어? 안 눌렸나... 또!결제20,000원20,000원돈이 두 번 나갔어요결제가 멈칫해서 손님이 '결제하기'를 두 번 눌러요

결제가 멈칫해서 손님이 버튼을 두 번 눌러요.걱정돼서 한 번 더 누른 것뿐인데, 돈은 두 번 나가요.

결제어, 또 왔네 — 처음 보는 요청이구나!요청 A요청 A둘 다 결제 처리됨같은 요청이 또 오면, 처음 보는 요청인 줄 알고 또 처리해요

같은 요청이 또 오면, 처음 보는 요청인 줄 알고 또 처리해요.번호가 없으면 구분할 방법이 없어요.

결제No.482No.482No.482? 이미 처리했어요, 한 번만요!같은 번호 티켓이 또 오면, '이미 처리했어요' 하고 한 번만 인정해요티켓마다 고유 번호를 붙이면, 두 번 보내도 결과는 한 번이에요

같은 번호 티켓이 또 오면 — '이미 처리했어요' 하고 한 번만 인정해요.번호 덕분에, 두 번 보내도 결과는 한 번이에요.

요청마다 번호를 붙여요고유한 번호예요
같은 번호는 한 번만처리는 한 번뿐이에요
두 번 보내도 안전해요이게 멱등이에요
번호 없는 요청은 위험몇 번 받았는지 몰라요
번호 있음No.482가 두 번 와도→ 결제는 한 번No.482한 번만 결제번호 없음요청이 두 번 오면→ 결제도 두 번??두 번 결제번호 없는 요청은 위험해요

번호가 있고 없고의 차이예요.번호가 있으면 안전하고, 없으면 그대로 두 번 처리돼요.

번호 저장 창고No.481, 482, 483...영원히는 못 저장해요유효기간이 필요해요저장도 자원이 들고, 재시도와 짝을 이뤄요

번호를 저장해 두는 것도 자원이 들어요.영원히는 못 저장해서 유효기간을 둬요. 재시도와 늘 짝을 이뤄요.

한 줄로

멱등성 = 같은 요청(같은 티켓 번호)이 두 번 와도 결과는 한 번만 처리되게 만드는 일.

Idempotency. 같은 요청을 여러 번 보내도 한 번 보낸 것과 결과가 같은 성질이에요. 멱등 키(idempotent key)로 요청을 구분하고, 이미 처리한 키는 저장해 뒀다가 중복을 걸러내요. 네트워크가 끊겨 재시도할 때 특히 중요해요.

어른들은 이렇게 불러요

멱등성
Idempotency
두 번 보내도 결과가 같은 성질. 한 번 보낸 것과 똑같아요.
멱등 키
Idempotent key
티켓에 적힌 고유 번호. 이 번호로 같은 요청인지 구분해요.
중복 제거
Deduplication
같은 번호 티켓을 걸러내는 일. 두 번째부터는 처리하지 않아요.
재시도
Retry
끊기면 다시 보내는 것. 멱등성이 있어야 재시도가 안전해요.
결제 중복 방지
Duplicate payment prevention
결제에서 멱등성을 쓰는 가장 흔한 예. 같은 결제 번호면 한 번만 돈을 받아요.
at-least-once / exactly-once
At-least-once / Exactly-once
전달 방식 이름들. 이름만 알아둬도 충분해요 — 한 번 이상 올 수도, 딱 한 번만 올 수도 있어요.
자연히 멱등한 연산
Naturally idempotent operations
몇 번을 해도 똑같은 연산. '최댓값을 10으로 설정' 같은 거예요 — 두 번 해도 여전히 10이에요.
티켓/요청 ID
Ticket / Request ID
요청마다 붙는 고유 번호 그 자체. 멱등 키와 같은 역할을 해요.
다음 이야기
줄이 길어지면 직원을 더 부르기 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →