Как пользоваться чек-листом
Для каждого процесса, задания, интеграции:
- ❌ — неидемпотентно и опасно
- ⚠️ — условно допустимо
- ✅ — архитектурно корректно
Если ❌ в зоне обязательности — это дефект архитектуры, а не «особенность реализации».
I. Процессы, где идемпотентность ОБЯЗАТЕЛЬНА
Если здесь нет идемпотентности — система сломается.
1. Интеграции и обмены
Проверь:
- Есть ли уникальный ключ входящего сообщения?
- Может ли сообщение прийти повторно?
- Что произойдёт при повторной обработке?
Красные флаги:
- создание документов «если не нашли»
- отсутствие журнала обработки
- зависимость результата от истории вызовов
Архитектурный минимум:
- входное сообщение = идентифицируемая операция
- повтор → noop / восстановление / отказ
2. Регламентные задания
Проверь:
- Что будет, если задание:
- упадёт на середине?
- запустится дважды?
- будет запущено вручную?
Красные флаги:
- приращения без контроля
- записи в регистры «дописыванием»
- отсутствие контрольных точек
Архитектурный минимум:
- расчёт состояния → синхронизация
- возможность безопасного перезапуска
3. Массовые обработки
Проверь:
- Можно ли запустить обработку повторно?
- Есть ли точка согласованности результата?
Красные флаги:
- обработка меняет данные без проверки текущего состояния
- нет возможности отката или восстановления
Архитектурный минимум:
- каждый объект обрабатывается идемпотентно
- повтор не ухудшает состояние
4. Автоматическое создание документов
Проверь:
- Является ли документ:
- состоянием?
- или побочным эффектом?
Красные флаги:
- документ создаётся без бизнес-ключа
- повтор создаёт новый документ
Архитектурный минимум:
- один бизнес-процесс → один документ
- повтор → обновление или отказ
II. Зоны повышенного риска (нужно решение архитектора)
Здесь идемпотентность не всегда обязательна, но решение должно быть осознанным.
5. Проведение документов
Проверь:
- Безопасно ли повторное проведение?
- Все ли регистры:
- очищаются?
- пересчитываются?
Красные флаги:
- движения дописываются
- часть регистров не очищается
Решение архитектора:
- либо гарантировать повторную проводимость
- либо запретить повтор и зафиксировать это
6. Очереди задач и фоновые процессы
Проверь:
- Есть ли уникальный ключ задачи?
- Что будет при двойной постановке?
Красные флаги:
- очередь как список «что сделать»
- отсутствие дедупликации
Решение архитектора:
- очередь = набор идемпотентных задач
- или строгая сериализация
7. Пользовательские кнопки «Сформировать / Пересчитать»
Проверь:
- Что произойдёт при двойном клике?
- Можно ли безопасно нажать ещё раз?
Красные флаги:
- повтор → новые документы / движения
Решение архитектора:
- либо идемпотентная логика
- либо жёсткий запрет и блокировки
III. Где идемпотентность МОЖНО не делать
Но только осознанно и задокументировано.
8. Ручные управляемые операции
Примеры:
- закрытие месяца
- разовые корректировки
- ручные управленческие решения
Условия допустимости:
- есть регламент
- есть ответственный
- есть логирование
9. Операции без повторов по определению
Примеры:
- физическая инвентаризация
- подписание документа
Важно:
- повтор невозможен не технически, а процессно
IV. Универсальные вопросы архитектора (обязательные)
Перед сдачей решения задай себе:
- Что будет, если это выполнится ещё раз?
- Можно ли восстановить состояние?
- Есть ли ключ операции?
- Можно ли пересчитать результат?
- Можно ли безопасно перезапустить процесс?
Если хотя бы на один ответ:
«Ну… в принципе… наверное…»
— архитектура незрелая.
V. Минимальный стандарт архитектора 1С
Если упростить до сути:
- ❌ Нет ключа → нет идемпотентности
- ❌ Есть побочный эффект → будет дубль
- ❌ Нет пересчёта → нет восстановления
- ❌ Документ = транзакция → ошибка модели
Что если я заблуждаюсь?
- Возможно, бизнес готов платить за ручную коррекцию
👉 Проверка: сколько стоит час ключевого специалиста? - Возможно, система не будет масштабироваться
👉 Проверка: что будет при росте ×3? - Возможно, риски приемлемы
👉 Проверка: зафиксированы ли они письменно?
Этот чек-лист можно использовать как:
- стандарт архитектурного ревью,
- шаблон проектных решений,
- аргумент в диалоге с бизнесом и руководством.
+ There are no comments
Add yours