Мы продолжаем рассказывать о применении облака Microsoft для компаний-разработчиков решений (ISV). В этом выпуске Додо Пицца, уже международная сеть, основанная в Сыктывкаре, чьей особенностью является облачная информационная система Додо ИС, глубоко интегрированная во все бизнес-процессы организации и франшизы. Эта статья подготовлена с участием нескольких человек, Федора Овчинникова, СЕО Додо Пиццы, а также команды внедрения — Александра Шибанова, Андрея Моревского, Арсения Кравченко и Глеба Лесникова. Интересно, что, пока мы готовили статью, Додо Пицца уже должна начать работу в США.
Федор Овчинников: Добрый день! Наша компания появилась 5 лет назад в Сыктывкаре. Это небольшой город на севере России. Здесь же до сих пор находится наша штаб-квартира, при этом офисы компании есть в Москве и в США. Сегодня “Додо Пицца” это международная сеть пиццерий в шести странах. В 2015 году выручка сети превысила 1 миллиард рублей. Главный продукт компании — франшиза, ядром которой является собственная информационная система Dodo IS. Наша система реализована в виде веб-сайта. Партнеры-франчайзи работают с ней как с SaaS-сервисом. За счет глубкой интеграции системы и бизнеса, использования возможностей интернета, мобильных гаджетов на кухне, с помощью Dodo IS мы добиваемся большей эффективности и прозрачности бизнеса. Фактически “Додо Пицца” это ИТ-компания или “компания-киборг”, то есть одновременно и ИТ и розничная компания. Но в отличии от 100% ИТ-компаний мы продаем нашим клиентам, то есть франчайзи. ИТ-систему вместе с бизнес-системой и брендом. Ключевой особенностью нашего бизнеса является открытость для клиентов, инвесторов, партнеров. Открытость не позволяет нам работать плохо, так как все сразу становится видным. Наша “облачная” информационная система позволяет в режиме реального времени показывать ключевые метрики нашего бизнеса.
Додо «ИС» является сердцем всей сети. Сегодня от неё зависит работа более 80 пиццерий в шести странах, единый колл-центр, наши сайты. И все это веб! У нас даже касса в ресторане работает в браузере. Мы искали лучшее решения с точки зрения надежности, качества, удобства для обслуживания. Физические сервера не очень гибкое решение, плюс часть сервисов уже была виртуализована через Hyper-V, так что облако было логичным продолжением развития. Страшно не было — это же просто виртуальные машины, их нечего бояться. На Azure пал выбор во многом благодаря участию в программе поддержки стартапов Microsoft BizSpark и «Облачному гранту» BizSpark+ в виде ресурсов Azure на $60 000, — всё же, облако нужно «потрогать», чтобы понять, нужно оно вам или нет.
При этом, разумеется, облако это в первую очередь инструмент. Бизнес должен ставить задачи, а мы, в свою очередь, должны их решать. Хороший инструмент позволяет делать лучшие решения. Гибкость облака позволяет сделать больше, лучше, придумать много вариантов и попробовать все. Если же говорить про последствия перехода, то на переходе в облако мы скорее сэкономили, чем потратили. Потратили несколько десятков человеко-часов одного сисадмина, а взамен получили год бесплатной работы серверов. Не думаю, что такое где-то ещё возможно.
В 2016 году мы планируем увеличить сеть до 180 пиццерий, наша цель к 2020 году открыть более 2000 пиццерий по всему миру. Сейчас открываются пиццерии в США и Китае. Все они будут соединены между собой через нашу информационную систему Dodo IS, то есть через веб-сервис. Чем больше пиццерий у нас будет, тем большую роль для эффективного управления будет играть наш веб-сервис Dodo IS. В тоже время мы будем еще в больших масштабах зависеть от “облака”.
Нужно сказать, что начинать нам было очень нелегко. Но это касается любого стартапа, у нас же ситуация усугублялась тем, что мы находились в Сыктывкаре, вдалеке от “венчурных” денег и технологических центров.
Основной проблемой для бизнеса мог стать даунтайм и/или потеря данных. Что-то могло быть заточено под железные сервера. Сам по себе переезд это всегда большой риск. Но ожидания более чем оправдались, сейчас мы довольны. Проблем для бизнеса особо не было, все наши первоначальные трудности никак не отразились на бизнесе и пользователях. Облако — это, в первую очередь, отличная масштабируемость. Мы очень быстро растём, открываем пиццерии в Европе, Америке и Китае, облака дают нам возможность удобно разворачивать инстансы системы.
Из чего приготовлена DodoIS?
Веб-приложение на ASP.NET MVC, Windows Server, IIS, CentOS, NGINX, MySQL (Percona Server). Мы используем NGINX для реверс-прокси и TLS. За NGINX стоят наши бэкенды в виде IIS серверов, на которых находится бизнес-логика. В качестве реляционной БД у нас работает Percona Server. Для разнообразных кэшей в продакшне мы используем Azure Redis Cache. Сами приложения написаны на ASP.NET.
Что используется в разработке?
Visual Studio, ReSharper, Bitbucket, JIRA, Confluence, TeamCity, Azure Application Insights. Программисты работают в Visual Studio 2015 с ReSharper.
Для контроля версий мы пользуемся Mercurial (Bitbucket), JIRA для задач, Confluence для документации. Деплоим через PowerShell раз в неделю, Continuous Integration — TeamCity. Мы активно используем Application Insights для двух вещей — оценки нагруженности разных backend API и failed requests/exceptions, правда, наше приложение генерирует слишком много событий и мы выбираем их месячный лимит за 5-6 дней. В скором времени мы сделаем Sampling и это перестанет быть проблемой. Типичный юзкейс — когда видим необычную нагрузку на бэкенды/базу, идем в AppInsights и смотрим самые частые запросы. Еще один типичный юзкейс — когда что-то тормозит без причины, фильтруем по URL и смотрим время выполнения запросов, и это все абсолютно без переписывания приложения, т.е. мы просто добавляем AppInsights monitor на сервер
Архитектура
Наша система условно делится на две части: одна часть это бэкофис — всё что связано с производством пиццы, отчетностью, персоналом и т.д. Это работники 80-и пиццерий и управляющая компания.
Вторая часть — это наши клиенты, которые взаимодействуют с системой через сайт. На данный момент сайт принимает более 40% всех заказов и обслуживает ~6000 уникальных посетителей в день.
Архитектуру мы планировали с самого начала. Было опасение, что проект будет высоконагруженным и монолитное решение (пускай и с разбивкой по слоям) не подойдёт. Но, принимая в расчет высокий риск стартапа и ограниченное финансирование, мы всё же решили делать монолитную архитектуру со стандартной разбивкой на слои (UI, BL, DAL). Это понятная архитектура, с низким порогом вхождения и она дала нам возможность быстрого развития. Со временем, исходя из потребностей бизнеса, архитектура несколько раз эволюционировала, но по сути оставалась монолитом.
Сейчас мы готовим систему для будущего роста, а именно для кластеров. Мы начали пользоваться Redis Cache, скоро будем делать ферму из IIS-серверов. Также планируем переход на Percona XtraDB Cluster и переводим статику на CDN.
Что было? Первые попытки миграции
Мы просто создали несколько виртуальных машин, повторяя наши предыдущие сервера. Убрали NGINX-реверс прокси, посчитав, что в них нет смысла. Таким образом, она практически ничем не отличалась от локальных серверов в датацентре. Сервера поставили на такое же количество ядер, какие были, они прекрасно работали. Часть машин, которые уже работали под Hyper-V, мы очень быстро перетащили копированием образа без каких-либо проблем.
Сложности и неудобства
Старый портал был неудобный, новый гораздо лучше. Не знали специфику магнитных дисков Azure Storage. Балансер обрывал старые TCP сессии, наше приложение не было к этому готово. Изначально не использовали виртуальные сети. Очень не хватало мануалов начального уровня, эдакого FAQ для свитчеров с железа в облака, вида “если вы мигрируете в облако, помните, что …”. Имеющиеся мануалы были датированы 2012-2013 годами, которые зачастую не вписывались в новые реалии.
Выводы
В нашей индустрии обычно используются необлачные решения, нативные приложения для Windows. Мы считаем, что это не самый эффективный подход, например, у McDonaldsa новые версии ПО появляются раз в полгода.
Самый главный вывод нашей миграции — для быстрорастущего бизнеса публичное облако готово дать предложение на любой спрос. Стало также понятно, что мы вряд ли уйдем на физические сервера. Думаю, хабру бессмысленно рассказывать про преимущества облаков, самое главное, что мы довольны и бизнес не испытывает трудностей.
Пассаж о коллективной работе: Фёдор Овчинников, Александр Шибанов, Андрей Моревский, Арсений Кравченко. Беседовал Александр Белоцерковский.