다섯 살도 알 수 있게 · SRE

재시도와 백오프가 뭐예요?

재시도와 백오프를 거절당하면 잠깐 쉬었다 다시 줄서는 손님 이야기로 풀어봤어요.

창구거절당했어요... 또 줄서야지거절당한 손님이 바로바로 계속 다시 줄서서 창구가 더 바빠져요

거절당한 손님이 바로바로 계속 다시 줄서서 창구가 더 바빠져요.쉬지 않고 바로 다시 시도하면 창구가 쉴 틈이 없어요.

창구거절당한 손님들이 다 같이 동시에 다시 줄서요다들 한꺼번에 바로 다시 시도하면 몰림이 더 심해져요

다들 한꺼번에 바로 다시 시도하면 몰림이 더 심해져요.거절당한 손님들이 똑같은 순간에 다 같이 돌아와요.

창구조금 쉬었다가 다시 줄서요잠깐 쉬었다가, 사람마다 조금씩 다르게 다시 줄서요한꺼번에 몰리지 않게요

잠깐 쉬었다가, 사람마다 조금씩 다르게 다시 줄서요.한꺼번에 몰리지 않게요.

바로 말고 잠깐 쉬기숨 고르고요
점점 더 오래 쉬기지수 백오프예요
사람마다 조금 다르게지터예요
너무 여러 번이면 포기다른 방법으로요
1번째 실패1초+지터2번째 실패2초+지터3번째 실패4초+지터성공실패할 때마다 쉬는 시간이 점점 길어지고, 사람마다 살짝 다르게 쉬어요

실패할 때마다 쉬는 시간이 점점 길어지고, 사람마다 살짝 다르게 쉬어요.1초, 2초, 4초... 배로 늘어나요.

계속 쉬었다 또 시도... 끝이 없어요규칙최대 3번까지만그래도 안 되면 그만두기→ 서킷 브레이커로무한정 재시도하면 끝까지 기다리기만 해요 — 최대 횟수를 정해 포기할 줄도 알아야 해요

무한정 재시도하면 끝까지 기다리기만 해요.최대 횟수를 정해 포기할 줄도 알아야 해요.

한 줄로

재시도와 백오프 = 거절당하면 바로 다시 말고 잠깐 쉬었다, 실패할수록 점점 더 오래 쉬면서, 사람마다 살짝 다르게 다시 줄서는 일. 너무 많이 실패하면 포기해요.

실패한 요청을 다시 보내되, 매번 대기 시간을 두 배로 늘리는 것을 지수 백오프라고 해요. 대기 시간에 무작위 편차를 더하는 걸 지터라고 하고, 이게 없으면 모두가 같은 순간에 다시 몰리는 thundering herd가 생겨요. 최대 재시도 횟수를 넘으면 포기하고 서킷 브레이커 같은 다른 방법으로 넘어가야 해요.

어른들은 이렇게 불러요

재시도
Retry
실패하면 다시 줄서는 것. 바로 하면 오히려 더 몰려요.
지수 백오프
Exponential backoff
실패할수록 쉬는 시간을 두 배씩 늘리는 것. 1초, 2초, 4초... 이렇게 늘어나요.
지터
Jitter
쉬는 시간에 사람마다 살짝 무작위로 다르게 주는 것. 다 같이 동시에 몰리는 걸 막아요.
최대 재시도 횟수
Max retry count
몇 번까지 다시 시도하고 그만둘지 정한 수. 이게 없으면 끝없이 기다리기만 해요.
타임아웃
Timeout
한 번 시도에 얼마나 기다릴지 정한 한도. 타임아웃이 지나야 '실패'로 치고 재시도를 시작해요.
서킷 브레이커
Circuit breaker
아예 안 되는 곳엔 재시도도 그만두고 안 보내는 빨간 버튼. 최대 횟수를 넘기면 이쪽으로 넘어가요. → 고장나면 누르는 빨간 버튼
멱등성
Idempotency
같은 요청을 여러 번 보내도 결과가 한 번과 같은 성질. 재시도해도 안전하려면 이 성질이 꼭 필요해요.
백프레셔
Backpressure
안쪽이 꽉 차면 입구가 미리 속도를 늦추는 것. 재시도가 너무 많아지면 결국 이것도 함께 필요해져요. → 입구를 잠깐 막기
다음 이야기
같은 티켓으로 두 번 못 타요 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →