Серия статей «Что такое Dodo IS?» расскажет про: Ранний монолит в Dodo IS (2011-2015 годы). Я рекомендую проверки в ДоДо тайным покупателем и кратко отрезюмирую. Основатель Dodo Brands (владелец брендов «Додо Пицца» и других) Федор Овчинников объявил об уходе с поста гендиректора компании.
Додо ис персонал
В Додо ИС выручка пиццерии видна в режиме онлайн. Бывшие франчайзи «Додо Пиццы» в один голос заявляют, что в сети сложилась абсолютно нездоровая атмосфера: 30% пиццерий буквально замучили постоянными проверками, в то время как другие 70%, подконтрольные «друзьям» Федора Овчинникова, о проверяющих из. Компании «Додо Пицца» удалось построить омниканальное взаимодействие с клиентом в оффлайн-пиццериях и в собственном онлайн-приложении.
Как создать личный кабинет на сайте Додо ИС
Игорь Виттель: Я сильно похож на идиота? Если вы ведёте бизнес так же, как изучаете бэкграунд... Низкие выручки, плохие отзывы и просрочка — это не аргумент Михаил Гончаров и Сергей Миронов Михаил Гончаров: Хочу прояснить для окружающих три аргумента, которые я бы не стал учитывать при рассмотрении ситуации. Низкие выручки могут зависеть от специфики региона — Ярославль имеет сильную местную сеть пиццерий. Плохие отзывы приходят постоянно практически на все заведения — даже на рестораны Новикова и Dellos, не говоря уже о нас с тобой, Фёдор. Просрочка тоже прозвучала жёстко, но она случается везде. Я ничью позицию не занимаю, но Фёдор сказал, что рейдерство и крупные франчайзи невыгодны в компании. Но на самом деле они выгодны — большой системой легче управлять. Андрей Ковалёв: Я, как человек, который восемь раз подвергался рейдерским захватам от командующего внутренними войсками России до председателя правления крупных банков и заканчивая заместителем Лужкова хочу сказать, что это на рейдерский захват не похоже. Ткачёв бы уже сидел в тюрьме. Фёдор Овчинников: Согласование открытия пиццерии длится шесть месяцев.
Михаил Гончаров: У меня ощущение, что дело в сложной системе. Левая рука не знает, что делает правая. Один департамент согласовывает открытие новых пиццерий, другой проверяет и понижает рейтинг. Мне кажется, ситуация требовала твоего личного участия. Перед нами сидит человек, который открыл 12 точек. Он как минимум заслуживает личной встречи. Фёдор Овчинников: У нас компания не сконцентрирована только на мне. У нас большая команда, а это рядовой случай. Всё просто: пиццерии плохо работали, постоянно давалась обратная связь. Что дала бы эта встреча?
Я бы как-то проникся? Издатель «Русбанкрота» Фёдор Овчинников: Давайте лучше обсудим, почему на сайте «Русбанкрот» сейчас выходят статьи о том, что «Фёдор хочет уехать заграницу, они рейдерские захваты производят». Евгений Ткачёв: Я эту историю не инициировал, хотя у меня и были большие вопросы про отношение компании ко мне. А весь этот кошмар в эфире начался после того, как Фёдор опубликовал свой негативный пост и предложил СМИ задавать мне вопросы. Кузнецову передали микрофон. Владимир Кузнецов: Я объясню свою позицию по этому кейсу и по многим другим. Если я иду по улице и вижу, что сильный бьёт слабого, я не пройду мимо. Есть те, кто в игре болеет за победителя, но я к таким не отношусь. Купить рекламу Отключить Я узнал про конфликт из общения в бизнес-среде. Я решил сам вникнуть и поручил редакции.
Если мы говорим о том, что Евгений нарушает стандарты «Додо пиццы», надо понять, каковы эти стандарты. Наши корреспонденты приехали в «Додо пиццу» в Вязьме, Анапе и Мурманске. В Мурманске человек на публике ковырялся в носу и кушал свои сопли. Это всё запечатлено на видео. Корреспонденты увидели кучу грязи в тех пиццериях, которые принадлежат образцовым партнёрам «Додо пиццы». Большая часть изложена в материалах, у нас есть ещё и то, что мы не опубликовали — потому что это совсем испортит настроение тех, кто будет это читать. Это совсем страшно и совсем неприлично. Фёдор Овчинников: Я буду задавать вопросы руководителям «Деловой России». Если вы почитаете статьи на «Русбанкроте», то увидите, что больше клеветы сложно придумать. Я сейчас уже заканчиваю, мне надо ехать — всё по кругу идёт.
Владимир Кузнецов: Не торопитесь, Фёдор. Вас подбросят, останьтесь. Фёдор Овчинников: Я захочу — уйду. Владимир Кузнецов: Боитесь? Андрей Ковалёв: Давайте будем сдержанными и корректными. В 90-е умели договариваться Андрей Ковалёв Игорь Виттель: Мне кажется, что слова, что мы тут собрались ради будущего франчайзинга в России, это полная фигня. Фёдор не пришел сюда договариваться. Есть старый анекдот: спорить с некоторыми людьми всё равно, что играть с голубем в шахматы. Он шахматы разбросает, нагадит и улетит рассказывать своим, как победил. Вот именно это сейчас и происходит.
Потому что наверняка появятся завтра в Facebook и Twitter рассказы Фёдора о том, как он тут нас всех победил. Эта история губит франшизу в России, не только франшизу «Додо». Ковалёв попросил высказаться и Игоря Бухарова, президента Федерации рестораторов и отельеров. Игорь Бухаров: Если Фёдор говорит, что не пришёл сюда договариваться, то что мне сказать? Андрей Ковалёв: Может, он тебя послушает, как авторитета.
Бухгалтер не просто находит дни, в которых произошёл разрыв, он находит, где, возможно, произошел сбой: курьер некорректно пробил чек или ошибка произошла. Таким образом мы помогаем найти конкретный момент ошибки.
Данная задача не выглядит как что-то глобальное, сложное и универсальное, наоборот, это достаточно простое решение, придуманное нами. В нашей работе такие моменты самые приятные, так как благодаря небольшой доработке мы сильно упрощаем жизнь наших пользователей и экономим им много времени. Если у вас есть задачи для автоматизации, вопросы как улучшить что-то в программе 1С или настроить обмен с другими программами 1С — напишите нам. Мы ответим на ваши вопросы и решим поставленные задачи.
Важно отметить, что агрегат Inventory версионируется целиком, а также каждый его замер. С замерами сложнее — приходится решать конфликты в методе обработки события When MeasurementEvent e. В коде я приведу только обработку команды AddMeasurementCommand. Value; existMeasurement. MeasurementVersion; existMeasurement.
UnitOfMeasure; existMeasurement. MeasurementId, e. Если такого нет — добавляется новый замер. Если есть — нужны дополнительные проверки: нельзя редактировать удаленный замер; входящая версия должна быть больше предыдущей. Если условия выполняются — можем установить новое значение и новую версию для существующего замера. Если версия меньше, то это конфликт. Для этого мы генерируем исключение MeasurementConcurrencyException. Если версия совпадает и значения отличаются, то это тоже конфликтная ситуация. Ну и если совпадает как версия, так и значение, то изменений не произошло.
Таких ситуаций обычно не возникает. Сущность «замер» содержит точно такие же поля, что и команда «Добавление замера». NewUUId ; inventory. StartInventory Create. WithUnitId unitId. WithMeasurement measurementId, measurementVersion. WithValue value. Please ; inventory. AddMeasurement cmd ; inventory.
На схеме изображен процесс обработки команды FinishInventoryCommand. Перед обработкой необходимо восстановить состояние агрегата Inventory на момент выполнения команды. Для этого мы загружаем все события, которые были произведены над данным агрегатом, в память и проигрываем их п. На момент завершения ревизии у нас уже есть следующие события — начало ревизии и добавление трех замеров. В базе данных каждая строка в таблице содержит идентификатор ревизии, версию и тело самого события. На этом этапе мы выполняем команду FinishInventoryCommand п. Эта команда сначала проверит валидность текущего состояния агрегата — то, что ревизия находится в состоянии InProgress, а затем породит новое изменение состояния, добавив событие FinishInventoryEvent в список changes п. Когда команда завершится, все изменения сохранятся в базу данных. В результате в базе появится новая строка с событием FinishInventoryEvent и последней версией агрегата п.
Тип Inventory ревизия — агрегат и корневой элемент по отношению к своим вложенным сущностям. Таким образом, тип Inventory определяет границы агрегата. В границы агрегата входит список сущностей типа Measurement замер , и список всех событий, произведенных над агрегатом changes. Реализация всей фичи Под фичей мы понимаем реализацию конкретного бизнес-требования. В нашем примере мы рассмотрим фичу «Добавление замера». Для реализации фичи нам понадобится разобраться с понятием «прикладная служба» ApplicationService. Прикладная служба — непосредственный клиент модели предметной области. Прикладные службы гарантируют транзакции при использовании базы данных ACID, гарантируя атомарное сохранение переходов между состояниями. Кроме того, прикладные службы также решают задачи безопасности.
У нас уже есть агрегат Inventory. Для реализации всей фичи целиком воспользуемся прикладной службой. В ней необходимо проверить наличие всех связных сущностей, а также права доступа у пользователя. Только после соблюдения всех условий можно выполнять сохранение текущего состояния агрегата и отправлять события во внешний мир.
Также на основе этих изменений будут сгенерированы события для внешнего мира. Когда агрегат Inventory был создан, мы можем его восстанавливать на каждый последующий запрос на изменение его состояния. Изменения changes хранятся с момента последнего восстановления агрегата. Состояние восстанавливается методом Restore, который проигрывает все предыдущие события, отсортированные по версии, на текущем экземпляре агрегата Inventory. Это реализация идеи Event Sourcing в рамках агрегата.
О том, как реализовать идею Event Sourcing в рамках хранилища поговорим немного позже. Есть хорошая иллюстрация из книги Вон Вернона: Состояние агрегата восстанавливается путем применения событий в порядке их появления. Дальше происходит несколько замеров командой AddMeasurementCommand. Ревизия завершается командой FinishInventoryCommand. Агрегат валидирует своё состояние в мутирующих методах для соблюдения своих инвариантов. Важно отметить, что агрегат Inventory версионируется целиком, а также каждый его замер. С замерами сложнее — приходится решать конфликты в методе обработки события When MeasurementEvent e. В коде я приведу только обработку команды AddMeasurementCommand. Value; existMeasurement.
MeasurementVersion; existMeasurement. UnitOfMeasure; existMeasurement. MeasurementId, e. Если такого нет — добавляется новый замер. Если есть — нужны дополнительные проверки: нельзя редактировать удаленный замер; входящая версия должна быть больше предыдущей. Если условия выполняются — можем установить новое значение и новую версию для существующего замера. Если версия меньше, то это конфликт. Для этого мы генерируем исключение MeasurementConcurrencyException. Если версия совпадает и значения отличаются, то это тоже конфликтная ситуация.
Ну и если совпадает как версия, так и значение, то изменений не произошло. Таких ситуаций обычно не возникает. Сущность «замер» содержит точно такие же поля, что и команда «Добавление замера». NewUUId ; inventory. StartInventory Create. WithUnitId unitId. WithMeasurement measurementId, measurementVersion. WithValue value. Please ; inventory.
AddMeasurement cmd ; inventory. На схеме изображен процесс обработки команды FinishInventoryCommand. Перед обработкой необходимо восстановить состояние агрегата Inventory на момент выполнения команды. Для этого мы загружаем все события, которые были произведены над данным агрегатом, в память и проигрываем их п. На момент завершения ревизии у нас уже есть следующие события — начало ревизии и добавление трех замеров. В базе данных каждая строка в таблице содержит идентификатор ревизии, версию и тело самого события. На этом этапе мы выполняем команду FinishInventoryCommand п. Эта команда сначала проверит валидность текущего состояния агрегата — то, что ревизия находится в состоянии InProgress, а затем породит новое изменение состояния, добавив событие FinishInventoryEvent в список changes п. Когда команда завершится, все изменения сохранятся в базу данных.
В результате в базе появится новая строка с событием FinishInventoryEvent и последней версией агрегата п. Тип Inventory ревизия — агрегат и корневой элемент по отношению к своим вложенным сущностям. Таким образом, тип Inventory определяет границы агрегата. В границы агрегата входит список сущностей типа Measurement замер , и список всех событий, произведенных над агрегатом changes.
Додо ревизия - фото сборник
Этот вопрос помогает уже сформировать список задач на будущее. Не хватает экспертизы, чтобы смотреть метрики MySQL. У нас есть ранбук, но его никто не отрабатывал на реальных кейсах. Не сразу нашли ответственного, чтобы отключить маркетинговую рассылку пушей, не хватило актуальной схемы с зонами ответственности.
Например, по имени пользователя. Сначала эти пользователи использовались в монолите, где тоже невозможно разделить, какие части сервисов какие запросы делают. Но потом другие сервисы тоже стали использовать тех же пользователей.
Не хватает информации, сколько каждый сервис может держать RPS. Это бы помогло в расчёте, сколько можно добавить реплик приложения, сколько нужно добавить реплик LF. Мы могли бы заранее увидеть проблемы с cache и с другими настройками.
Нужны дополнительные алерты. Что пошло не так. Здесь больше случайные факторы или оставшиеся нюансы.
Перестал работать мониторинг. Увеличение количества реплик приложений повлияло на количество собираемых метрик нашей системой мониторинга, из-за чего ей перестало хватать оперативной памяти, приложения мониторинга были остановлены по OOM OutOfMemory и в дальнейшем не смогли запуститься. Нагрузку давала также Grafana, так как все стали её активно использовать при расследовании инцидента.
Выдавало ошибку при работе с VPN. База данных «ушла в пике» и почему-то выполняла простейшие запросы по 10—15 секунд, что не позволяло прогреть кеши в LF и начать нормальную работу. Не скалировался нодпул для нод с Прометеем при указании 32 нод, а при указании 30 нод всё заработало.
Не раскатился предыдущий релиз с первого раза. Следовало завершить откат релиза, а не бросать его при получении ошибки от мигратора. Отвлеклись на атаку на сайт.
Скопилась очередь SMS, текущее количество подов communications не справлялось с рассылкой. При этом большинство СМС уже не стоило отправлять, так как срок их действия истёк. Отвлекались на анализ атаки через SMS.
Какие действия помогли решить инцидент Отключение сайтов и mapi убрало нагрузку на БД и позволило продолжить принимать заказы через кассу ресторана. Откат релиза поздно вечером, когда трафик уже был невысокий, перезапустил систему и позволил ей запуститься. Подробная хронология и анализ действий позволяет найти первопричину и исправить её.
Самая глубокая причина, до которой удалось докопаться В базе данных с заказами России был неверно сконфигурирован кеш по работе с таблицами. На графике видно, как набирался кеш 16 — 16:40 , а потом резко увеличилось количество открытых дескрипторов перестали влезать в кеш. Сначала увеличилось количество тредов 16:40 , потом пошли первые алерты 16:52.
Массовая рассылка пуш-уведомлений для мобильных приложений вызвала нагрузку на mapi, которое в свою очередь нагрузило LF, который увеличил количество запросов к БД. При этом в БД перестали попадать в кеш файловых дескрипторов таблиц, это увеличило количество тредов в Idle состоянии. В попытке вернуть mapi в работоспособное состояние мы удвоили количество реплик приложения, тем самым вызвали срабатывание Bulkhead-механизма в LF он сразу отклонял часть поступающих запросов , а также ещё сильнее нагружали БД, что привело к каскадным сбоям по всей системе.
Он может выбрать напиток по своим предпочтениям, добавить или убрать дополнительные ингредиенты, оплатить заказ свайпом в приложении, отслеживать статус выполнения заказа. При запуске приложения клиенту показывается виртуальная видеовитрина с новинками. На основании истории заказов в приложении реализована предиктивная модель: клиенту предлагаются продукты, которые он заказывает чаще всего, с учетом его предпочтений выбор вида молока, посыпки. Реализовали курьерское приложение с автоназначением заказов по автоматически расчитываемым маршрутам, чек-листом заказа для курьера и возможностью пометить заказ как проблемный в случае опоздания клиента или оставить комментарий к адресу с его особенностями. В мобильном приложении для обеих операционных систем iOS и Android — Flutter. Подробнее Приложение для курьеров Задача: Создать мобильное приложение для курьеров Додо Пицца, снижающее число ошибок и опозданий при доставке заказов, помогающее оптимизировать доставку нескольких заказов. Решение: Реализовали курьерское приложение с автоназначением заказов по автоматически расчитываемым маршрутам, чек-листом заказа для курьера и возможностью пометить заказ как проблемный в случае опоздания клиента или оставить комментарий к адресу с его особенностями. Административная часть: Мы разработали умную систему автоназначения Небесный логист, которая автоматически собирает в один большой заказ несколько близко расположенных заказов так, чтобы курьер точно успел доставить каждый из них в срок. Также Небесный логист определяет, какой курьер забирает какой заказ, исключая ситуации, когда дальние клиенты ждут свой заказ слишком долго из-за нежелания по нему ехать.
Также для менеджера смены был разработан функционал подтверждения оставленных курьером комментариев к адресам: так мы сохраняем и делаем общедоступными среди курьеров только действительно важные комментарии, такие как информация о неработающем домофоне. Мобильное Приложение: Мы разработали мобильное приложение с использованием технологии Flutter, которая позволяет одновременно разрабатывать для iOS и Android и тем самым удешевляет разработку. В приложении курьер получает уведомление о назначении заказа, узнает адрес и комментарии к нему, знает, к какому времени нужно вернуться в пиццерию после доставки и какие заказы ждут его дальше. При сборке заказа курьер может проверить сам себя по чек-листу, при использовании которого вероятность ошибки падает до нуля. При завершении сборки заказа курьер получает дополнительное напоминание по мелким дополнительным предметам, таким как соусы или салфетки, чтобы точно ничего не забыть. После доставки заказа в приложении курьер отмечает его доставленным, а если что-то идет не так: клиент не на месте, клиент ошибся адресом, — курьер может пометить заказ соответствующим флажком. По таким заказам пиццерия не должна выдавать сертфикаты за опоздания. Тем самым мы экономим деньги наших партнеров в пиццериях на лишних сертификатах и довозах забытых продуктов.
А начиналось всё с пиццерии, открытой в 2011 году в Сыктывкаре. Успешный рост сети её основатель Фёдор Овчинников связывает, в том числе, с наличием собственной информационной системы. О том, как она создавалась, какие задачи решает и к каким результатам приводит, Фёдор Овчинников и его команда рассказали в своей «Додо-книге», ключевые идеи которой мы сегодня предлагаем вашему вниманию. Досье Фёдор Овчинников, основатель сети «Додо Пицца».
Стандарты приготовления Додо пиццы. Схема Додо пиццы. Как отменить заказ в Додо. Додо рубли. Как отменить заказ Додо в приложении. Додо пицца. Додо пицца кухня. Униформа Додо пицца. Додо пицца форма персонала. Алексеев Алексей Додо пицца. Додо форма. Додо в Санкт-Петербурге. Додо в Питере. Пиццерия Тула Додо пицца. Додо пицца Владивосток. Фирменная пицца Додо. Додо пицца кафе. Кепка Додо. Спецодежда Додо пицца. Додо Тюмень. Додо верхняя Пышма. Коробки от пиццы Додо. Сервис Додо. Бренд шеф Додо. Пицца Додо коробка открытая. Реук Сергей Николаевич Додо пицца. Додо в 2011. Додо Ачинск. Додо пицца поделки. Додо пицца Вельск. Додо пицца хозяин сети. Додо пицца стаканчики. Додо касса. Миссия Додо. Додо технологии. Конвейер Додо. Технологии it в Додо. Кассир Додо. Униформа Додо. Додо пицца кассир. Форма работников пиццерии. Додо пицца Новомосковск. Горького 154 Нижний Новгород Додо пицца. Работники Додо пицца Нижний Новгород. Менеджер Додо пицца. Камеры пиццерии. Додо пицца уборка. Вязьма пиццерия Додо. Додо пицца витрина. Додо пицца Ржев. Додо бургер. Додо пицца ИС. Додо ИС персонал. Илья Зомба Додо пицца. Додо пицца dashboard. Dodo is структура. Dodo is дашборд. Dodo is схема. Целевая аудитория Додо пицца.
История «Додо пиццы»>
- Франшиза «Додо Пиццы»: официальный сайт, цены, условия участия, роялти
- Франшиза «Додо Пиццы»: официальный сайт, цены, условия участия, роялти
- Не только тесто и начинка: как автоматизация сделала «Додо Пиццу» успешной
- Материалы по теме
- Не только тесто и начинка: как автоматизация сделала «Додо Пиццу» успешной
- Экскурсия по пиццерии
На что жаловались клиенты в Domino's Pizza и "Додо пицце"
- С чем обратился клиент
- Додо ревизия - фото сборник
- «Додо Пицца» застраховалась от киберпреступников
- Как «Додо Пицца» решает проблемы бизнеса с помощью машинного обучения
- Статьи из архивов
*Как видеоаналитика и машинное зрение помогают оценивать качество пиццы
Ревизия в Додо не бумажная: у ревизора есть планшет, где ревизор отмечает все продукты и создает отчеты. Додо ИС пока что не умеет с высокой точностью считать укомплектованность пиццерий, поэтому мы каждую неделю отслеживаем укомплектованность наших Партнеров. Серия статей «Что такое Dodo IS?» расскажет про: Ранний монолит в Dodo IS (2011-2015 годы). Бывшие франчайзи «Додо Пиццы» в один голос заявляют, что в сети сложилась абсолютно нездоровая атмосфера: 30% пиццерий буквально замучили постоянными проверками, в то время как другие 70%, подконтрольные «друзьям» Федора Овчинникова, о проверяющих из. Додо ИС личный кабинет сотрудника. Dodo is Интерфейс.
Пицца с пола и ведро с жижей: Что творится за кулисами крупнейших российских пиццерий
Основатель Dodo Brands (владелец брендов «Додо Пицца» и других) Федор Овчинников объявил об уходе с поста гендиректора компании. Около года назад внутри компании «Додо Пицца» произошли серьезные структурные изменения, стало очень сложно работать в хаосе. Додо ИС Додо. Dodo is кабинет сотрудника.