Files
progcode/web/public/assets/editorial/2024/feature-flags-2024-cleanup-gate.svg
T
huncode 04dbb60f16
Build and deploy / deploy (push) Successful in 18s
revise August 2024 feature flag articles
2026-07-31 16:27:37 +03:00

67 lines
6.8 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1100" role="img" aria-labelledby="title desc">
<title id="title">Синтетическая временная схема rollout, rollback и cleanup feature flag</title>
<desc id="desc">Схема показывает синтетические этапы rollout ноль, пять, двадцать пять и сто процентов. При stop condition выполняется rollback к fallback. После стабильного финального варианта отдельный cleanup gate требует удалить ветки и конфигурацию.</desc>
<defs>
<marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L10,5 L0,10 Z" fill="#74d5c0"/>
</marker>
<marker id="arrow-warn" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L10,5 L0,10 Z" fill="#e9b45f"/>
</marker>
</defs>
<rect width="720" height="1100" rx="28" fill="#0f1d2e"/>
<rect x="28" y="26" width="664" height="112" rx="20" fill="#16334b" stroke="#3f6680"/>
<text x="58" y="72" fill="#f5fbff" font-family="Arial, sans-serif" font-size="28" font-weight="700">Выключить — не значит удалить риск</text>
<text x="58" y="105" fill="#b8cedd" font-family="Arial, sans-serif" font-size="18">0 → 5 → 25 → 100% — fixed synthetic teaching model.</text>
<text x="70" y="183" fill="#89abc1" font-family="Arial, sans-serif" font-size="17" font-weight="700">ROLLOUT: один cohort key и заранее записанная stop condition</text>
<path d="M144 252 L576 252" fill="none" stroke="#74d5c0" stroke-width="4" marker-end="url(#arrow)"/>
<circle cx="144" cy="252" r="18" fill="#1d4a44" stroke="#74d5c0" stroke-width="3"/>
<circle cx="288" cy="252" r="18" fill="#1d4a44" stroke="#74d5c0" stroke-width="3"/>
<circle cx="432" cy="252" r="18" fill="#1d4a44" stroke="#74d5c0" stroke-width="3"/>
<circle cx="576" cy="252" r="18" fill="#1d4a44" stroke="#74d5c0" stroke-width="3"/>
<text x="116" y="215" fill="#e7fff7" font-family="Arial, sans-serif" font-size="23" font-weight="700">0%</text>
<text x="258" y="215" fill="#e7fff7" font-family="Arial, sans-serif" font-size="23" font-weight="700">5%</text>
<text x="394" y="215" fill="#e7fff7" font-family="Arial, sans-serif" font-size="23" font-weight="700">25%</text>
<text x="534" y="215" fill="#e7fff7" font-family="Arial, sans-serif" font-size="23" font-weight="700">100%</text>
<text x="82" y="297" fill="#b9eadc" font-family="Arial, sans-serif" font-size="16">baseline</text>
<text x="226" y="297" fill="#b9eadc" font-family="Arial, sans-serif" font-size="16">observe</text>
<text x="364" y="297" fill="#b9eadc" font-family="Arial, sans-serif" font-size="16">compare</text>
<text x="530" y="297" fill="#b9eadc" font-family="Arial, sans-serif" font-size="16">freeze?</text>
<rect x="72" y="338" width="576" height="112" rx="18" fill="#16334b" stroke="#3f6680" stroke-width="2"/>
<text x="102" y="378" fill="#f5fbff" font-family="Arial, sans-serif" font-size="21" font-weight="700">На каждом этапе: проверить заранее выбранные сигналы</text>
<text x="102" y="407" fill="#c2d9e8" font-family="Arial, sans-serif" font-size="17">outcome · error ratio · fallback path · effective config version</text>
<text x="102" y="434" fill="#86acc2" font-family="Arial, sans-serif" font-size="15">Схема не задаёт безопасный процент, окно наблюдения или production SLO.</text>
<path d="M360 450 L360 502" fill="none" stroke="#e9b45f" stroke-width="3" marker-end="url(#arrow-warn)"/>
<rect x="152" y="516" width="416" height="86" rx="18" fill="#513f25" stroke="#e9b45f" stroke-width="2"/>
<text x="182" y="551" fill="#fff1cf" font-family="Arial, sans-serif" font-size="22" font-weight="700">Stop condition сработала?</text>
<text x="182" y="579" fill="#f2d5a1" font-family="Arial, sans-serif" font-size="16">Решение фиксируется до включения следующей стадии.</text>
<path d="M152 559 L90 559 L90 688" fill="none" stroke="#e08091" stroke-width="3" marker-end="url(#arrow-warn)"/>
<text x="99" y="540" fill="#f4c979" font-family="Arial, sans-serif" font-size="17" font-weight="700">да</text>
<rect x="40" y="704" width="240" height="156" rx="18" fill="#4b2932" stroke="#e08091" stroke-width="2"/>
<text x="66" y="745" fill="#ffe9ed" font-family="Arial, sans-serif" font-size="21" font-weight="700">Rollback / fallback</text>
<text x="66" y="777" fill="#f7c6cf" font-family="Arial, sans-serif" font-size="16">Вернуть аудиторию к 0%.</text>
<text x="66" y="802" fill="#f7c6cf" font-family="Arial, sans-serif" font-size="16">Сохранить старый путь.</text>
<text x="66" y="827" fill="#f7c6cf" font-family="Arial, sans-serif" font-size="16">Расследовать отдельно.</text>
<text x="66" y="850" fill="#f1aab7" font-family="Arial, sans-serif" font-size="14">Disable — mitigation, не cleanup.</text>
<path d="M568 559 L630 559 L630 688" fill="none" stroke="#74d5c0" stroke-width="3" marker-end="url(#arrow)"/>
<text x="570" y="540" fill="#9ee9d8" font-family="Arial, sans-serif" font-size="17" font-weight="700">нет</text>
<rect x="440" y="704" width="240" height="156" rx="18" fill="#1d4a44" stroke="#74d5c0" stroke-width="2"/>
<text x="466" y="745" fill="#e7fff7" font-family="Arial, sans-serif" font-size="21" font-weight="700">Cleanup gate</text>
<text x="466" y="777" fill="#b9eadc" font-family="Arial, sans-serif" font-size="16">final variant frozen</text>
<text x="466" y="802" fill="#b9eadc" font-family="Arial, sans-serif" font-size="16">branches removed</text>
<text x="466" y="827" fill="#b9eadc" font-family="Arial, sans-serif" font-size="16">config removed</text>
<text x="466" y="850" fill="#9ee9d8" font-family="Arial, sans-serif" font-size="14">behaviour test остаётся.</text>
<path d="M560 860 L560 916" fill="none" stroke="#74d5c0" stroke-width="3" marker-end="url(#arrow)"/>
<rect x="72" y="930" width="576" height="136" rx="18" fill="#24415c" stroke="#a6d6ff" stroke-width="2"/>
<text x="102" y="970" fill="#eff9ff" font-family="Arial, sans-serif" font-size="22" font-weight="700">Только после gate: удалить runtime dependency</text>
<text x="102" y="998" fill="#c4e7ff" font-family="Arial, sans-serif" font-size="17">кодовые ветки · configuration references</text>
<text x="102" y="1023" fill="#c4e7ff" font-family="Arial, sans-serif" font-size="17">flag-specific tests</text>
<text x="102" y="1049" fill="#91bbd7" font-family="Arial, sans-serif" font-size="15">Результат: одна проверяемая ветка поведения.</text>
</svg>