서킷 브레이커는 원격 서비스 실패가 이어질 때 회로를 열어 추가 호출을 빠르게 거절합니다. 대기 후 일부 요청만 통과시키는 반열림 상태에서 회복 여부를 확인합니다.
데모는 닫힘, 열림, 반열림을 순환하며 통과와 차단 경로를 바꿉니다. 임계치와 복구 대기 시간을 실제 서비스 특성에 맞춰 정해야 합니다.
언제 쓰나
느리거나 불안정한 외부 서비스가 호출자를 연쇄적으로 지연시킬 수 있을 때 사용합니다.
연속 실패 때 호출을 잠시 막고 탐침 요청으로 회복을 확인합니다.
<div class="scene"><div class="title">CIRCUIT STATE MACHINE</div><div class="row breaker"><div class="tile">CALLER</div><div id="gate" class="gate">CLOSED</div><div class="tile">SERVICE</div></div><div id="result" class="result">Request passes → response</div><div class="states"><span id="closed">CLOSED</span><span id="open">OPEN</span><span id="half">HALF-OPEN</span></div></div>.scene{width:min(94vw,760px);height:min(86vh,320px);padding:clamp(10px,2.5vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);font:500 clamp(11px,1.3vw,16px)/1.25 "Pretendard Variable",Pretendard,-apple-system,sans-serif;display:flex;flex-direction:column;gap:clamp(7px,1.6vmin,12px);overflow:hidden}.scene *{box-sizing:border-box}.title{font-weight:750;color:var(--accent)}.muted{color:var(--muted)}.mono{font-family:ui-monospace,monospace}.row{display:flex;align-items:center;justify-content:center;gap:clamp(5px,1.4vmin,12px);flex:1;min-height:0}.tile{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(6px,1.6vmin,12px);text-align:center;min-width:0}.on{border-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 12%,var(--surface))!important}.pulse{animation:pulse 1.6s infinite alternate}@keyframes pulse{to{border-color:var(--accent);transform:translateY(-3px)}}.breaker .tile{flex:1}.gate{border:2px solid var(--accent);border-radius:50%;width:29%;aspect-ratio:1;max-height:95px;display:grid;place-items:center;color:var(--accent);text-align:center}.result{padding:6px;background:var(--bg);border-radius:5px;text-align:center}.states{display:flex;justify-content:space-between;gap:4px;font-size:clamp(11px,1.2vw,14px)}.states .on{color:var(--accent);font-weight:750}const states=['CLOSED','OPEN','HALF-OPEN'];let n=0;function tick(){const s=states[n%3];document.getElementById('gate').textContent=s;document.getElementById('result').textContent=['Request passes → response','Calls fail fast; remote spared','One probe checks recovery'][n%3];['closed','open','half'].forEach((id,i)=>document.getElementById(id).classList.toggle('on',i===n%3));n++}tick();setInterval(tick,1000)서킷 브레이커는 원격 서비스 실패가 이어질 때 회로를 열어 추가 호출을 빠르게 거절합니다. 대기 후 일부 요청만 통과시키는 반열림 상태에서 회복 여부를 확인합니다.
데모는 닫힘, 열림, 반열림을 순환하며 통과와 차단 경로를 바꿉니다. 임계치와 복구 대기 시간을 실제 서비스 특성에 맞춰 정해야 합니다.
느리거나 불안정한 외부 서비스가 호출자를 연쇄적으로 지연시킬 수 있을 때 사용합니다.