Технологии

Иммутабельность утверждённых документов: почему это важно.

Любое изменение — через корректировку. История «было/стало», аудит и ответ на вопрос «а кто это поменял». Архитектурный принцип, который защищает компанию от себя самой.

ЕО
Елена Орлова
CPO actrix · Продукт
8 МИН ЧТЕНИЯ

§01Зачем иммутабельность

На стройке деньги распределены между большим числом людей, и интерес у всех разный. Сметчик хочет, чтобы цифры сходились. Менеджер — чтобы документ согласовали быстрее. Клиент — чтобы заплатить меньше. Подрядчик — чтобы предъявить больше.

В этой среде «возможность отредактировать подписанный документ» становится не удобной функцией, а пороховой бочкой. Через полгода никто не сможет восстановить, какая редакция документа была настоящей в момент подписания.

!

Если подписанный КС-2 можно отредактировать в один клик — это значит, что спустя 6 месяцев нельзя ответить на вопрос аудитора «а что было подписано».

§02Как это реализовано

В actrix иммутабельность утверждённых документов — это инвариант на трёх уровнях.

1. Status machine. Документ имеет состояния: DRAFT → ON_REVIEW → APPROVED → COMPLETED. Из состояния APPROVED невозможно вернуться в DRAFT. Поля документа можно менять только в DRAFT.

2. Database constraints. На уровне Postgres настроены триггеры, которые запрещают UPDATE по полям документа, если его статус APPROVED или COMPLETED. Даже если кто-то напишет SQL-команду напрямую, она провалится.

3. Append-only audit log. Любое изменение — даже создание корректировки — пишется отдельной записью в журнал. Журнал не поддерживает UPDATE и DELETE, только INSERT.

§03Аудит и ответственность

Когда любое изменение фиксируется, ответственность становится конкретной. На вопрос «кто это поменял» в actrix есть ответ с точностью до ФИО, времени и поля документа.

Это меняет культуру обращения с документами. Если правка важна — оформите корректировку, в ней укажите причину, проведите по маршруту согласования. Это занимает 5 минут больше, чем «быстро поправить», но через год нет вопросов «а что там было исходно».

Иммутабельность защищает компанию не от злоумышленников снаружи, а от собственных людей внутри. Не потому, что они плохие — потому, что у них есть разные интересы и ограниченное время. — Из руководства по архитектуре actrix

§04Что чувствует пользователь

На первый взгляд иммутабельность — это «неудобно». На второй — это «спокойно». Когда вы знаете, что подписанный документ нельзя поправить «по-тихому», вы перестаёте бояться его подписывать. Когда вы знаете, что любая правка оформлена корректировкой, вы перестаёте искать «какая версия была настоящей».

Через 2–3 месяца использования системы пользователи перестают замечать ограничение и начинают замечать пользу: понятная история, чёткая ответственность, отсутствие непонятно откуда взявшихся изменений.

АРХИТЕКТУРА АУДИТ БЕЗОПАСНОСТЬ