Идемпотентность, или как я создала 5 одинаковых заявок из-за плохого интернета (или проектирования)
Смотрите, что бывает, когда интернет зависает в самый неподходящий момент. Я отправила заявку на корректировку данных, нажала кнопку, а в ответ - тишина. Ну, я нажала ещё раз. И ещё. И ещё. А потом интернет (приложение) очнулся и создал пять идентичных заявок. Вот они, красавицы, на скриншоте.
И тут я вспомнила умное слово - идемпотентность.
Если по-простому, идемпотентность - это когда повторное выполнение одной и той же операции не меняет результат. Нажал один раз, нажал десять раз - итог один. Как выключатель света: сколько ни щёлкай, свет либо горит, либо нет. А вот моя заявка - не идемпотентная. Каждое нажатие создавало новую сущность. И это классическая проблема в IT.
Почему так происходит? Потому что система не знает, что вы уже отправляли эту заявку. Она видит новый запрос и честно его обрабатывает. Интернет завис, ответ не пришёл, пользователь подумал, что ничего не отправилось, и повторил. А система не виновата - она просто не умеет распознавать дубли.
Как с этим борются? Есть несколько способов:
🤌 Идемпотентные ключи. Каждой операции присваивается уникальный идентификатор. Если запрос с таким ключом приходит повторно, система его игнорирует. 🤌 Блокировка кнопки. Пока идёт отправка, кнопка неактивна. Пользователь физически не может нажать ещё раз. 🤌 Дедупликация на бэкенде. Система проверяет, не создавали ли вы такую же заявку за последние несколько минут, и не даёт создать дубль.
Почему это важно для нас, аналитиков и скрам-мастеров? Потому что мы часто проектируем процессы и интерфейсы, где пользователь может столкнуться с такой же проблемой. И наша задача - предусмотреть защиту. Например, если я аналитик, я могу прописать в требованиях: «При повторной отправке формы в течение 5 минут создавать только одну заявку», Или «Использовать идемпотентный ключ для операции», или «пока с бека не вернется код успеха - блокируй кнопку».
И ещё один момент: это касается не только заявок. Это касается платежей, регистраций, отправки сообщений. Везде, где пользователь может нажать дважды, нужна защита.
А теперь вопрос к вам: сталкивались ли вы с такой проблемой? Может, вы тоже создавали дубли из-за медленного интернета? Или, наоборот, вы аналитик, который умеет проектировать идемпотентные системы? Делитесь, мне очень интересно.
И да, те пять заявок операторы отменили, но сделают ли они выводы и изменят ли требования для данной функции - загадка!
#идемпотентность #системныйаналитик #it #заявки #дубли #проектирование #скраммастер #личныйопыт #серыйкардинал