# 📐 Куб выживания (The Survival Cube) «Куб выживания» — это первый и главный графический артефакт **AfRel**. Он служит для стратегического позиционирования: показывает, где система находится сейчас и куда она должна прийти с точки зрения ресурсных ограничений. ## Назначение Куб выживания — это трёхмерная система координат для описания состояния системы и её целей. Он позволяет: * Зафиксировать текущее состояние системы в измеримых величинах. * Определить целевое состояние как вектор (или траекторию) движения. * Визуализировать стратегию выживания: сжатие, расширение, улучшение качества или их комбинации. ## Оси координат ### X: Количество (Scale, Volume) * число обслуживаемых сущностей (пользователи, сервисы, запросы, контракты). * Единицы: штуки, **RPS**, строки кода, количество модулей. * Может быть сжатием (уменьшение X) или расширением (увеличение X). ### Y: Качество (Quality, Density) * эффективность на единицу количества. * Единицы: `latency` (мс), `throughput` (**RPS**), `availability` (%), `error rate` (%), `MTBF` . * Повышение Y = улучшение свойств, понижение Y = деградация. ### Z: Ресурсы/Деньги (Resources/Money) * стоимость достижения цели или поддержания состояния. * Единицы: доллары, человеко-часы, затраты на облако, **ROI**. * Отрицательный Z (убыток, инвестиции) допустим, но требует плана возврата. ## Точки и векторы * Текущая точка A=(X_cur, Y_cur, Z_cur) — состояние до начала работ. * Целевая точка B=(X_targ, Y_targ, Z_targ) — желаемое состояние. * Вектор AB — стратегия движения. Примеры векторов: * Сжатие с качеством: + ΔX<0, (меньше количество) + ΔY>0, (выше качество) + ΔZ<0 (в моменте тратим ресурсы, чтобы сжать и улучшить). * Экстенсивное расширение: + ΔX>0, (количество растёт) + ΔY<0, (качество падает) + ΔZ<0 (в моменте растём количеством с ускорением). * Инвестиции в качество при стабильном масштабе: + ΔX=0, (количество прежнее) + ΔY>0, (качество растёт) + ΔZ<0 (улучшаем, тратя ресурсы в моменте). ## Недопустимые и опасные области X < 0 в абсолютном значении невозможно (не бывает отрицательного числа сервисов). Однако относительное изменение ΔX может быть отрицательным (сжатие). Z < 0 (убыток) допустимо временно, но требует явного плана возврата к Z≥0Z≥0. X = 0 означает отсутствие сущностей (например, процесс не обслуживает ни одного клиента) — допустимо как временное состояние (миграция, ночной простой), но постоянное X = 0 означает смерть процесса. ```text Падение Y ниже минимально допустимого SLA — нежизнеспособное состояние. ``` ## Графическое представление Куб с подписанными осями X, Y, Z. ![Куб выживания](./qwads.jpeg) Точки: * A (исходное состояние) * B, C (промежуточное состояние) * D (целевое состояние) Вектор/траектория — стрелка или ломаная линия (если путь не прямой). Пояснительная записка к каждому кубу обязательна (ссылается на артефакт `b1`). ## Пример (для цели b1 — сжатие с качеством) ### Исходная точка * X = 10X (10 сервисов), * Y = 200Y (200 мс, latency), * Z = 500k (500k $/год, затраты). ### Целевая точка * X = 3X (3 сервиса), * Y = 100Y (100 мс), * Z = 350k (350k $/год). ### Вектор * ΔX = −7 (−7 сервисов), * ΔY = −100 (−100 мс), * ΔZ = −150k (−150k $/год, экономия). На кубе это изображается как диагональ вниз-влево-вперёд (если Z — вертикальная ось, направленная вверх для улучшения, то экономия — движение вниз по Z). ## Пример (для цели b2 — рост с качеством) ### Исходная точка * X = 10X (10 клиентов), * Y = 99.5Y (99.5%, uptime), * Z = 500k (500k $/год, прибыль). ### Целевая точка * X = 300X (300 клиентов), * Y = 99.9Y (99.9%, uptime), * Z = 2500 (2500k $/год, прибыль). ### Вектор * ΔX = +290 (+290 клиентов), * ΔY = +0.4 (+0.4%, uptime), * ΔZ = +2000k (+2000k $/год, прибыль). * ΔZ(разраб) = -200k/6 мес (предполагаемые расходы за 6 месяцев) На кубе это изображается как диагональ вверх-вправо-вперёд (если Z — вертикальная ось, направленная вверх для улучшения, то прибыль — движение вверх по Z, но входе перемещения вектора -- он отклоняется вниз в расходы). ## Пример (для цели b2 — рост с падением качества, захват рынка) ### Исходная точка * X = 10X (10 клиентов), * Y = 99.5Y (99.5%, uptime), * Z = 500k (500k $/год, прибыль). ### Целевая точка * X = 300X (300 клиентов), * Y = 95.0Y (95.0%, uptime), * Z = 2200 (2200k $/год, прибыль). ### Вектор * ΔX = +290 (+290 клиентов), * ΔY = -4.5 (-4.5%, uptime), * ΔZ = +1700 (+1700 $/год, прибыль). * ΔZ(разраб) = -200k/6 мес (предполагаемые расходы за 6 месяцев) На кубе это изображается как диагональ вниз-влево-вперёд (если Z — вертикальная ось, направленная вверх для улучшения, то прибыль — движение вверх по Z, но в ходе вращения вектора он может отклоняться в расходы, качество при этом также падает по оси Y).