테넌트별 동적 워크플로

Dynamic tenant workflows

테넌트가 올린 실행 코드를 요청 시 로드하고 중단 후에도 같은 코드로 이어갑니다.

···
html
<div class="scene"><div class="title">TENANT CODE ROUTING</div><div class="tenantTabs"><span id="tenantA">TENANT A</span><span id="tenantB">TENANT B</span></div><div class="flow"><div class="tile">LOADER</div><div class="flowArrow">→</div><div class="tile" id="tenantCode">A: REVIEW</div><div class="flowArrow">→</div><div class="tile" id="resume">SLEEP</div></div><div class="muted" id="tenantState">Resume routes back to tenant A</div></div>
css
.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)}}.tenantTabs{display:flex;gap:6px}.tenantTabs span{border:1px solid var(--line);border-radius:6px;padding:5px 9px}.tenantTabs .selected{border-color:var(--accent);color:var(--accent)}.flow{display:flex;align-items:center;gap:4px;flex:1}.flow .tile{flex:1;padding:10px 2px}.flowArrow{color:var(--accent)}#tenantCode{border-color:var(--accent)}#resume{color:var(--accent)}
js
let phase=0;function tick(){const a=phase%2===0;document.getElementById('tenantA').classList.toggle('selected',a);document.getElementById('tenantB').classList.toggle('selected',!a);document.getElementById('tenantCode').textContent=a?'A: REVIEW':'B: APPROVE';document.getElementById('resume').textContent=phase%4<2?'SLEEP':'RESUME';document.getElementById('tenantState').textContent='Resume routes back to tenant '+(a?'A':'B');phase++}tick();setInterval(tick,1100);document.querySelector('.scene').addEventListener('pointerdown',tick)

2026년 공개된 Cloudflare Dynamic Workflows는 한 로더가 테넌트 ID로 코드를 선택해 지속 워크플로 엔진에 연결합니다. 단계가 몇 시간 뒤 재개되어도 엔진은 다시 해당 테넌트의 실행 코드로 돌아갑니다. 유휴 테넌트의 코드를 계속 실행해 둘 필요가 없습니다.

데모는 같은 시작 요청이 테넌트 A와 B의 서로 다른 단계로 분기하고 각각 재개되는 모습을 보여줍니다. 동적 코드를 실행하는 플랫폼은 코드 격리, 버전 고정, 권한을 별도로 설계해야 합니다.

언제 쓰나

고객마다 다른 자동화 코드를 실행하는 멀티테넌트 플랫폼에 검토합니다.

페이지로 열기 ↗