Лого vc.ru

Как «Додо Пицца» потеряла и вернула 7,84 миллиона рублей

Как «Додо Пицца» потеряла и вернула 7,84 миллиона рублей

Руководитель направления электронной коммерции в «Додо Пицце» Андрей Арефьев написал колонку, в которой рассказал, как сотрудники «Додо Пиццы» вместе с командой «Яндекс.Денег» возвращали 7,84 миллиона рублей, которые по ошибке отправили своим клиентам.

За неделю до Нового года мы по ошибке вернули клиентам 7,84 миллионов рублей, отменив более 10 577 транзакций. Мы спросили банковских экспертов, можно ли вернуть эти деньги обратно, и они ответили: «Маловероятно». Тем не менее, нам удалось это сделать. Расскажу, что привело к ошибке, как мы и партнеры сумели решить проблему и, главное, какие выводы мы сделали из этой истории.

Утром 23 декабря 2016 года процедура по отмене некорректных транзакций прошлась по базе данных, развернутой в тестовой версии нашей информационной системы «Додо ИС». Пару часов назад из-за неправильно проведенного переноса данных тестовая версия получила «боевые» значения для взаимодействия с «Яндекс.Кассой». Более того, мы использовали единый сертификат безопасности для тестовых и боевых операций.

В результате были отменены реальные транзакции, причем совершенно корректные. Система посчитала их «некорректными», поскольку на тестовую версию попадает «обрезанная» база данных. Мы заметили это только в 24 декабря 2016 года, когда наши партнеры получили реестры от «Яндекс.Кассы» и увидели возвраты, которых они не проводили. Несколько часов ушло на то, чтобы понять, что вызвало проблему.

Мы сразу определили два ключевых условия, которым должно удовлетворять ее решение. Во-первых, наши партнеры — франчайзи «Додо Пиццы» ни в коем случае не должны пострадать. Если не сможем вернуть деньги, возместим убыток из средств управляющей компании. Во-вторых, деньги нужно вернуть до Нового года — иначе все банки закроются на каникулы и франчайзи не смогут рассчитаться с поставщиками и сотрудниками.

Несмотря на выходной, в решение нашей проблемы сразу же включилась команда «Яндекс.Денег», включая генерального директора Марию Грачеву. Кроме того, в субботу основатель и генеральный директор «Додо Пиццы» Федор Овчинников рассказал о проблеме в социальных сетях и попросил о помощи. В записях упоминалось, что мы вернули около 10 миллионов рублей, а не 7,84 — на тот момент это была приблизительная оценка. Публикации в Facebook и во «ВКонтакте» привлекли внимание, люди давали советы и полезные контакты.

Мы поняли, что есть всего три варианта вернуть деньги. Мы могли произвести повторное списание с помощью механизма повторных платежей. Минус этого варианта — оспариваемая легальность. Мы могли произвести отмену возврата транзакций, но это требовало договоренностей с банками-партнерами «Яндекс.Денег». Наконец, мы могли просто попросить клиентов вернуть наши деньги. Но этот сценарий казался нереальным: на каком основании люди будут возвращать деньги и, главное, каким образом? Ведь, напомню, сеть объединяет свыше сотни разных юридических лиц.

Пока мы прорабатывали все три варианта, наша история попала во многие профильные издания. Мы даже засветились в статье «8 главных провалах и закрытиях 2016 года» на vc.ru. Нам советовали обратить это в маркетинговый ход и не возвращать деньги — или остановиться на варианте с добровольной оплатой.

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

7.84 миллионов рублей для сети с оборотом почти в 2,9 млрд в год — не мелочь. Оборот создает франчайзинговая сеть. Выручка управляющей компании состоит из роялти с оборота и паушальных взносов, которые совместно за 2016 год составили около 220 миллионов рублей.

При этом мы развиваемся как стартап, оплачивая инвестиционным капиталом вложения в развитие инфраструктуры и рост команды разработки. Прямой убыток такого масштаба — это более 10% от суммы инвестиций, привлеченных в ходе нашего последнего инвестиционного раунда. Для одной ошибки — серьезная цена.

Мы готовы были заплатить ее, но хотели сделать все возможное, чтобы избежать такого развития событий. В понедельник мы узнали, что команде «Яндекс.Денег» удалось договориться с банками-партнерами об операции по отмене возврата. Менеджеры, операционисты и бухгалтерия «Яндекс.Денег» проделали для нас колоссальную работу, перебрав вручную более десяти тысяч транзакций. Вопрос был в том, успеют ли банки-партнеры провести операции до праздников.

Мы понимали, что у многих клиентов непонятные транзакции вызовут недовольство или вопросы. Мы написали скрипты для колл-центра, проработали процедуры разбора рекламаций, отправили предварительные SMS-сообщения с разъяснениями и запустили одностраничный сайт с формой обратной связи. Однако когда пошли первые отмены, мы поняли, что ситуация сложнее, чем мы думали.

Возврат денег — не совсем типичная операция. Как правило, вы видите ее отражение по своему счету не сразу, а в течение двух недель. Разные банки по-разному отрабатывают возврат в своих учетных системах. Клиенты иногда получают оповещения по таким операциям, а иногда нет.

При этом операция отмены возврата — еще менее типичная операция. Мы даже не могли предсказать, каким именно образом банки-эмитенты карт отразят эту операцию в балансах своих клиентов и какие отправят уведомления.

В результате мы получили около 200 обращений от клиентов. Это около двух процентов от всех транзакций — относительно немного. Но даже 200 обращений — серьезная нагрузка на операторов, особенно в предпраздничные дни. Поэтому в самые горячие часы, чтобы разгрузить колл-центр, клиентов обзванивали менеджеры продуктов, директор по франчайзингу и финансовый директор «Додо Пиццы». Сейчас у нас в работе осталось около 30 тикетов.

Нам удалось разрешить ситуацию с минимальными убытками. Последние платежные поручения были отправлены платежным рейсом вечером 30 декабря 2016 года. На следующий день, утром, практически все деньги вернулись партнерам на счета.

Какой ценой? Титаническая работа операционистов и менеджеров «Яндекс.Денег». Два хирургических хотфикса на продакшене сайта федеральной сети в 150 пиццерий перед Новым годом. Также мы заплатили комиссию банкам-партнерам за проведение операции по отмене транзакций около 150 тысяч рублей и за уведомление клиентов по SMS чуть больше 40 тысяч рублей.

«Кто виноват-то?» — этот вопрос я слышал за ту неделю несколько десятков раз. Это очень удобный вопрос, потому что на него предполагается простой и однозначный ответ. Но такого простого ответа в принципе быть не может. Мы исходим из того, что ни один сотрудник не может допустить ошибку из злого умысла. Мы работаем только с ответственными и самостоятельными людьми. И мы понимаем, что если ошибка возможна, ее кто-то обязательно совершит.

С первого дня «Додо Пицца» разрабатывает собственную информационную систему. Сегодня она обслуживает продажи в девяти странах мира для более чем 150 пиццерий. За пять лет разработки мы прошли путь от блока по приему заказов до прототипа полноценной облачной ERP-системы, которая управляет заказами, работой на кухне, планированием графиков, запасами, финансами — практически всеми аспектами нашего бизнеса.

Обеспечивая столь впечатляющий рост, мы нередко отдавали приоритеты быстрой разработке функциональности, необходимой операционному бизнесу, который развивался по-предпринимательски, без крупных инвестиций. Иногда это происходило в ущерб системной логике, архитектуре или инфраструктуре.

В системе накопились уязвимости. Их можно сравнить с заряженными ружьями, висящими на стене. Мы знали о них, но надеялись, что они не выстрелят «еще вот до того релиза».

Как и многие успешные компании, которые развивались быстро, мы накопили критическую массу технического долга. Понимая это, в прошлом году мы запустили проект по реинжинирингу системы — начали менять архитектуру нашей информационной системы «Додо ИС», не прерывая при этом разработку новых модулей и поддержку работающей операционной системы.

Однако реинжиниринг делался разными командами. У всех был общий дедлайн, но у каждой команды оказались свои приоритеты. Проект оказался сильно растянут по времени и плохо синхронизирован. В результате элементы системы, которые носят максимальный риск, спустя полгода от старта так и оставались непереработанными.

В большой системе с высокой связанностью кода и высокой интенсивностью разработки риски критичной ошибки становятся неуправляемыми. Именно такой риск и реализовался в нашем случае. Мы рады, что в такую трудную минуту нам помог партнер — «Яндекс.Деньги». Провалы случаются, и они позволяют понять, что за люди тебя окружают. Нам повезло.

Как мы исправимся

Строго оформим реинжиниринговый проект с требованиями, этапами и сроками. Владельцем проекта станет архитектор «Додо ИС». Причем приоритеты разработки в отдельных командах будут отданы критичным с точки зрения убытков участкам системы — платежному шлюзу, клиентской базе данных, подсистеме безопасности и сервисам с минимально допустимыми процентами отказов в обслуживании. Усилим наши QA-процессы наймом руководителя направления.

Иногда бизнесу бывает трудно осознать, что нефункциональные требования к продуктам (доступность, отказоустойчивость, защищенность) могут оказывать на финансовые результаты большее влияние, чем конверсия или время, проведенное на сайте. Для нас эта история стала хорошим уроком.

Присылайте колонки, соответствующие требованиям редакции, на secret@vc.ru.

Теги
Статьи по теме
Итоги года: 8 главных провалов и закрытий 2016 года
«Додо Пицца» по ошибке перечислила клиентам 10 млн рублей за уже оплаченные заказы

Ответ на вопрос "кто виноват" очевиден - программист, который сделал, чтобы данные с боевой базы попали на тестовую ну и руководитель IT отдела, потому что на то он и руководитель, чтобы нести ответственность. Понятно, что произошло это не специально. Думаю, что он поседел за дни дни до нового года.

Не всё так очевидно. Процессы должны быть построены так, чтобы один конкретный программист не мог и не должен был нести ответственность. Есть код-ревью, есть лоджик-ревью, есть QA, есть мониторинг.

Должны). Ещё сложнее этому одному человеку(или нескольким) сказать что это была их вина, а не "неправильных процессов". Тут мальчики становятся мужчинами)

не увидел в статье что-то про программиста, поэтому хотел бы отметить, что задача программиста - создавать код продукта, а не выливать код на боевые сервера или мигрировать базу. А поскольку о "кухне" фирмы мы не знаем, то виновные - руководитель it-отдела и руководитель конкретного подразделения, занимающегося деплоем.
Но вообще искать виновных в конторе о которой мы ничего не знаем странно (внутри ведь уже давно виновных нашли).

0

Ну вообще в статье про виновных и не написано. Нет такой цели у статьи. Для себя они нашли уже.

0

Современный инженер должен уметь деплоить свой код. Это не обязательно должно входить в его обязанности, но деплоить код надо уметь.

0

вопрос не стоит - должен уметь или не должен. Вопрос: занимался ли в конторе программист деплоем, или все же там отдельные люди этим занимаются (как оно должно быть).

0

Сколько стоил возврат средств в денежных и операционных издержках?

0

200 000 живых руб, указано в статье. А времени сотрудников видимо дофига

0

200 000 живых рублей, а взамен получила тонны публикаций в СМИ.
Только на vc более 20 тысяч просмотров.
Причем написали федеральные и региональные источники. Сработало на всех уровнях.

Меня больше всего интересует самоотверженность девушек (или кого бы там ни было) Яндекс.Денег, когда они задарма ручную перебрали более 10 000 транзакций.

0

Это да, просто это форс-мажор и я уверен, что они потратили на это кучу времени, которое очевидно не оплачивалось. Скорее всего это было в том числе сверхурочно, ибо изначально никто не планировал что Додо обосрутся, а убирать за ними придется другим в ущерб своим прямым обязанностям.

0

Ну Яндекс себе репутационную карму тоже повысил таким способом!

По общению со СМИ и публикой, принятию решений в стрессовых и не очень ситуациях этот стартап продолжает себя прекрасно показывать, ИМХО :)

Кто виноват - программист, который сделал, чтобы данные с боевой базы попали на тестовую.
Кто виноват - отдел программистов, который не провел качественное ревью действий отдельного программиста.
Кто виноват - руководитель IT отдела, который не проследил за соблюдением практик правильной разработки внутри отдела.
Кто виноват - директор Додо пиццы, который не проследил за выполнением обязанностей руководителя IT отдела.

Можно сколько угодно перечислять, кто виноват, актуальный вопрос - как это исправить, и что сделать, чтобы такое не повторялось.

0

Именно. Искать козла отпущения или решать проблему. Это, конечно, две разные вещи.

- Это Я сломал плотину!
- Стенли. Ты?
- Нет. Разве вы не видите, что пытается сказать это дитя? Мы не можем сваливать всю вину на кого-то другого, когда происходит что-то плохое. Он пытается сказать...Мы все сломали плотину.
- Я сломала плотину.
...
- Я сломал плотину.
- Да нет, я врезался в нее на лодке и сломал ее!
- Я сломал плотину.
- Я сломала плотину.
... (с) South Park)))

0

Если бы не пришло очень много людей в комментарии на VC и в FB к Фёдоры, то про пиар можно бы было думать. По ситуации, которую вижу — хэппи энд реально тяжелой в техническо-финансовом плане истории.

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

Нужно срочно открыть ДОДО в зажопинске

Точка в Зажопинске будет на 20 000 жителей (на 10 000 трезвых). Уже на 3й месяц будет давать больше 1 млн чистой прибыли в месяц! Но об этом в следующей статье!

Критический хотфикс перед новым готом накатывать.....

То есть, вы выгружаете реальную базу на ваш стейджинг, для того, чтобы ваши разработчики могли тестировать систему на реальных данных?

Вы же этим самым нарушаете требования 152-ФЗ, PCI DSS и т.д.

Внедряя в одном российском банке CRM я нашел на тестовом сервере свои данные.

Это какой пункт 152-ФЗ нарушается?

0

Статья 3 это "Основные понятия, используемые в настоящем Федеральном законе" там нечего нарушать )

Смотрел на гаранте и там почему-то оформление ФЗ другое, чем в других местах.

Я говорю про "обязательное для соблюдения оператором или иным получившим доступ к персональным данным лицом требование не допускать их распространения без согласия субъекта персональных данных или наличия иного законного основании". В случае с ИС, это аффектит следующие вещи:

1) Я как гражданин могу обратиться с требованием удаления моих ПД, необходимо будет удалить их из всех ИС. Вряд ли на практике кто-то будет удалять их из бэкапов или со стэйджинга.
2) Вряд ли в паспорте ИС прописано, что частью ИС является стэйджинг. Соответственно обрабоатка ПД происходит в неустановленном (недокументированном) месте.
3) Насколько я понимаю, перечень лиц, имеющих доступ к ПД должен быть регалиментирован. Вряд ли разработчики входят в этот список.
4) Я даже не представляю как в модели угроз прописать угрозы вида "разработчик скачал базу на локальный компьютер" и какие виды проактивной защиты могут быть с этим связаны.
5) Нахождение ПД в других базах скорее всего противоречит заявленной цели сбора и обработки ПДн.

0

слушайте, раз вы такой умный, расскажите мне как обезличенные номера транзакций попадают под определение персональных данных? я не работаю в ДОДО, но с их стороны было бы глупо отменять транзакции по фамилиям клиентов.

Ни одного сообщения в соц сетях от пользователей о левом списании, знаете о чем это говорит?
больше додо не верить

Море сообщений было. Даже в коментах к оригинальному посту на вц.

0

Где море, несколько сообщений вбросили для вида

0

Откройте уже додо пиццерию в Перми, мы же не так далеко от Сыктывкара, а качественных пицц у нас очень мало

0

Она невкусная.

Зачем один и тот же сертификат на тесте и на бою? Ну, чтобы что?

0

Чтобы он если самоподписный не выписывать дважды :D

0

Забыли поменять или решили не заморачиваться, хотя в идеале он должен жить на HSM и проблема не возникнет.

Нет, программисты не виноваты! И тестеры тоже.

Я думаю, что вина лежит на архитекторе ИС, а также может быть, на менджере проекта (или продукта). И вина состоит в том, что они не обеспечили возможность максимально полного автоматического тестирования. При ручном тестировании ошибку легко проглядеть. При правильно организованном автоматическом тестировании (речь не идет о юнит-тестах) вероятность такой ошибки снижается. Но это не главное.

Главное - это то, что при отсутствии системы автоматического тестирования подобная ошибка может быть легко повторена еще раз. Если система существует, и она не увидела ошибку, ее требуется пересмотреть, улучшить, и после этого, можно почти гарантировать, что подобное не повторится.

Даже если виновного (или группу виновных) нашли/выбрали/определили, мы об этом всё равно никогда теперь не узнаем.

На тестовой базе "боевые" шлюзы? Хмм.
Кажется вся вина в этом...

Как бы да. Если в начале пьесы на стене висит ружье, то к концу оно должно выстрелить

Сама история довольно интересна. Хоть и выглядит воспеванием оды Яндекс Деньгам. Ну да бог с ними. Мне вот что интересно. Кто все эти люди, которые заказывают пиццу в Додо? Мне хватило пары раз. Ну реально, это не пицца а "все из холодильника" на тесте. От пиццы там одно название, да и не вкусная она ну ни капельки, увы. А сама идея и подача сервиса - отличные.

0

ДоДо в Петрозаводске - одна из лучших пиццерий. Все относительно, брат)

0

Очень вкусная пицца. Не надо рассказывать плохие вещи, дяденька. Очень вкусная.

Где тут плохие вещи? Я лишь говорю то, как мы относимся к этой пицце, пару раз заказав её на др сотрудников например.

0

Видимо зависит от ресторана. Попробуйте додстер - я пробовал в нескольких городах, достаточно вкусно.

0

Хз, одни пиццы обычные, другие вкусные. У нас в городе лучше только одна фирма делает.

0

Боевой сертификат отдали в тест. Рехнулись? Профнепригодность того, кто это сделал.

0

Меня больше интересует, не кто виноват, а что сделали с тем (теми), кого посчитали виновным. И что обычно делают с такими? Выставляют за дверь? Заставляют оплачивать из своего кармана все расходы?

Кормят пиццей, которую пекут посетители во время мастер-классов.

0

День, когда поседели разработчики "Додо ИС"... ;)

Технический овердрафт то клиентам компенсировали?

Ага, еще скажите купон со скидкой на следующий заказ...
150 злых франчайзи - это проблема, а вот недовольные овердрафтеры - это уже проблема франчайзи

0

Ой да по-любому это был пиар ход для привлечения внимания. Федор пиарщик хороший в этом смысле:))
А вот то что ДоДо пицца меня спамит в почту вакансией маркетолога в Сыктывкар, уже месяца три - это плохой пиар:( Прям негатив резко вырос, где мэйл то нашли блин...:)

Интересно, а Додошники заходят в группу "И этого я ждал 40 минут" в ВК, чтобы посмотреть в каком виде людям по всей стране приносят их пиццу?

0

"перебрав вручную более десяти тысяч транзакций" - а вот это место можно поподробнее? В чём именно затруднение программно выполнить этот поиск?
Мне на ум пока приходит только вариант, что написание ищущего кода-алгоритма заняло бы времени больше, чем завершение-подтверждение списаний с карт в банках.

0

В статье написано что это произошло 23 декабря, и обнаружено было 24 декабря, а вот на странице с сайта help.didopizza.ru речь идёт уже о датах с 16 по 23 декабря. Какие то нестыковки.

Скорее всего речь про транзакции с 16 по 23, а сам инцидент произошел 23-го.

0

точно, так и есть.

0

>>>Обеспечивая столь впечатляющий рост, мы нередко отдавали приоритеты быстрой разработке функциональности, необходимой операционному бизнесу, который развивался по-предпринимательски, без крупных инвестиций. Иногда это происходило в ущерб системной логике, архитектуре или инфраструктуре.
Как красиво они преподнесли "хуяк-хуяк-в продакшн".

0

1.9% комиссия с карт - очень не плохо, завидуем :)

Прямой эфир
Команда калифорнийского проекта
оказалась нейронной сетью
Подписаться на push-уведомления