다섯 살도 알 수 있게 · SRE
멱등성이 뭐예요?
멱등성을 같은 번호의 티켓은 한 번만 인정해 주는 매표 창구 이야기로 풀어봤어요.
결제가 멈칫해서 손님이 버튼을 두 번 눌러요.걱정돼서 한 번 더 누른 것뿐인데, 돈은 두 번 나가요.
같은 요청이 또 오면, 처음 보는 요청인 줄 알고 또 처리해요.번호가 없으면 구분할 방법이 없어요.
같은 번호 티켓이 또 오면 — '이미 처리했어요' 하고 한 번만 인정해요.번호 덕분에, 두 번 보내도 결과는 한 번이에요.
요청마다 번호를 붙여요고유한 번호예요
같은 번호는 한 번만처리는 한 번뿐이에요
두 번 보내도 안전해요이게 멱등이에요
번호 없는 요청은 위험몇 번 받았는지 몰라요
번호가 있고 없고의 차이예요.번호가 있으면 안전하고, 없으면 그대로 두 번 처리돼요.
번호를 저장해 두는 것도 자원이 들어요.영원히는 못 저장해서 유효기간을 둬요. 재시도와 늘 짝을 이뤄요.
한 줄로
멱등성 = 같은 요청(같은 티켓 번호)이 두 번 와도 결과는 한 번만 처리되게 만드는 일.
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 - 요청마다 붙는 고유 번호 그 자체. 멱등 키와 같은 역할을 해요.
다음 이야기
줄이 길어지면 직원을 더 부르기 →