지속적 전달과 배포

Continuous delivery and deployment

검증된 빌드를 환경별 게이트에 통과시켜 운영으로 보냅니다.

···
html
<div class="stage" data-phase="0"><div class="title">ONE ARTIFACT, THREE GATES</div><div class="row gates"><div class="panel">build<br><b>v7</b></div><i></i><div class="panel">test</div><i></i><div class="panel">stage</div><i></i><div class="panel">prod</div></div><div class="sub status">artifact v7 waits at gate</div></div>
css
.stage{width:min(94vw,760px);height:min(88vh,330px);padding:clamp(9px,2.6vmin,20px);border:1px solid var(--line);border-radius:14px;background:var(--surface);font:600 clamp(12px,2.5vmin,16px)/1.3 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;display:flex;flex-direction:column;gap:clamp(6px,1.7vmin,12px);overflow:hidden;position:relative}.stage *{min-width:0}.stage .title{color:var(--accent);font-weight:800}.stage .sub{color:var(--muted)}.stage .row{display:flex;align-items:center;gap:clamp(5px,1.6vmin,12px)}.stage .panel{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(6px,1.6vmin,12px)}.stage .mono{font-family:ui-monospace,SFMono-Regular,monospace;font-size:clamp(12px,2.5vmin,15px)}.stage .grow{flex:1}.stage .on{color:var(--accent)}.gates{flex:1;justify-content:center}.gates .panel{min-width:18%;text-align:center}.gates i{width:clamp(10px,4vmin,35px);height:2px;background:var(--line)}.gates .panel:not(:first-child){color:var(--muted);transition:color .3s,background .3s}.stage[data-phase="1"] .gates .panel:nth-of-type(2),.stage[data-phase="2"] .gates .panel:nth-of-type(2),.stage[data-phase="2"] .gates .panel:nth-of-type(3){color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--surface));border-color:var(--accent)}.stage[data-phase="2"] .status:after{content:' · ready to promote'}
js
const stage=document.querySelector('.stage');let phase=0;function advance(){phase=(phase+1)%3;stage.dataset.phase=String(phase)}const timer=setInterval(advance,1200);stage.addEventListener('pointerdown',()=>{clearInterval(timer);advance()})

지속적 전달은 배포 가능한 산출물을 늘 준비하고, 지속적 배포는 검증된 변경을 자동으로 운영까지 보냅니다. 두 방식 모두 같은 산출물을 환경 사이에 승격시키는 편이 재빌드 차이를 줄입니다.

데모는 테스트, 스테이징, 운영 게이트를 순서대로 여는 흐름입니다. 운영 게이트는 승인이나 관측 지표로 제어할 수 있으며, 실패하면 승격을 중단해야 합니다.

언제 쓰나

릴리스 과정을 반복 가능하게 만들고 환경별 승인 지점을 분명히 할 때 사용합니다.

페이지로 열기 ↗