Мы продолжаем рассказывать о применении облака Microsoft для компаний-разработчиков решений (ISV). В этом выпуске руководитель проекта BrainApps, Виталий Кухаренко, рассказывает про то, как облако используется для бэкенда процессов игровых тренажеров для развития когнитивных функций мозга.
Всем привет! Меня зовут Виталий Кухаренко, я – руководитель компании BrainApps.ru. Уже 1,5 года мы разрабатываем игровые тренажеры для развития когнитивных функций мозга». Звучит немного необычно, согласен. Но такому названию есть очень простое пояснение. С начала 19 века ведущие ученые со всего мира пытаются изучить, как же работает наш мозг, как можно оценить его «продуктивность» и как можно улучшить показатели его работы. Проводились сотни исследований, многочисленные тесты на людях и животных. В ходе этих экспериментов было открыто очень интересное свойство мозга – нейропластичность. Речь идет о том, что мозг может изменяться под действием опыта, а также восстанавливать утраченные связи после повреждения или в качестве ответа на внешние воздействия. Т.е. если загружать мозг разного рода задачами, то мозг, словно мышца, будет накачиваться, менять свою структуру. Именно это определило слоган нашего проекта – «Фитнес для мозга». Наши тренажеры помогают развивать память, внимание и мышление.
Команда у нас относительно небольшая, но очень эффективная. С учетом специалистов на фрилансе, нас всего 12 человек. Мы не раздуваем штат, работаем с лучшими специалистами со всего мира и достигаем поставленных целей.
Сразу в облако
Если говорить о том, почему мы выбрали именно облачную архитектуру, ответ лежит на поверхности: такой подход, абсолютно точно, на порядок выгоднее по целому ряду критериев. Причем выгода определяется не только стоимостью обслуживания конкретного «набора железяк», систем с четко детерминированными конфигурациями. Мы оцениваем выгоду по целому комплексу критериев: гибкость, отказоустойчивость, обслуживаемость полученного решения. Если говорить конкретнее, то есть вариант купить dedic на каком-нибудь немецком лоукостере, вроде того, что называется на букву H…
Учтено всё: стоимость первичной установки, качество железа, реакция техподдержки и т.д. В случае если у вас банальным образом накроется один из винтов в RAID, начнет сбоить память, то процедура по обмену сервера и переноса данных – вещь не просто неприятная, но еще и очень ресурсозатратная. В случае с облаком все проблемы по лечению железа – это проблема техподдержки облака. Стоимость простоя бизнеса и репутационные потери окажутся несоизмеримо больше, чем экономия.
Поэтому мы сразу закладывались на облачную архитектуру, чтобы сосредоточиться на бизнес-процессах, а не думать о железе. На нашей архитектуре стоимость облака оказалась дешевле, чем сопоставимый по функционалу и производительности набор серверов. Поэтому мы уже в плюсе и крепко спим по ночам.
Про BizSpark
Отдельное спасибо хочу выразить компании Microsoft за программу Bizspark. Впервые я услышал о программе на конференции DevCon 2013 куда мне посчастливилось случайно попасть. Симпатичные девушки подарили активационную карту, я зарегистрировался, что-то посмотрел и забыл. Потом в январе 15 захожу, а оказывается в рамках программы можно получить совершенно бесплатно больше 100$ на ресурсы Microsoft Azure в месяц. Плюс доступ к лицензионным программам. Захотелось попробовать, перекинул проект, очень понравилось. Плюс полная поддержка Open Source.
Если проект пойдет, то можно получить грант на Bizspark Plus, где уже можно тратить облачных ресурсов на гораздо большие суммы. Понятно, что в успешном проекте железо — это процентов 20 успеха, но в любом случае это реально круто. Очень рекомендую читателям внимательнее взглянуть на это программу.
Про технику и технологию
В нашем проекте используется достаточно большой стек технологий. Сразу оговорюсь, что выбор тех или иных решений мы принимали, руководствуясь своими бизнес-требованиями. Некоторые технологии могут показаться уважаемым читателям «устаревшими» или «недостаточно хипстерскими».
Мы же оперируем такой логикой: если мы умеем чем-то пользоваться, это «что-то» зарекомендовало себя хорошо, использование данной технологии экономит нам время разработки и деньги – значит, используем. В основном это Open Source решения.
Итак,
Frontend сервера у нас крутится на Ubuntu 14 Server.
Backend сервера с базой данных slave и master тоже Ubuntu. Возможно, появится вопрос: «Почему не CentOS?». Просто привыкли с ним работать. Понятно, откуда брать пакеты, и как устроена структура конфигурации.
База данных MariaDB. Была мысль использовать PostgreSQL, но длительного опыта работы с ним не было, поэтому сделали на том инструментарии, с каким работали много и накопили внушительный опыт.
Язык программирования PHP 5.5, мы используем фреймворк Laravel 4. Когда мы начинали, пятой версии еще не было, а до обновления версии руки так и не дошли. Сейчас смотрим в сторону lumen как следующего ядра системы. С точки зрения бизнеса PHP + laravel – это связка, которая обеспечивает достаточное количество свободных специалистов на рынке, способных решить ваши задачи за вменяемые деньги.
Вебсервер nginx – я думаю, комментарии не нужны. Промышленный стандарт.
Кеширование memcached + MongoDB. MongoDB мы используем преимущественно как кеш для статистической информации. У нас достаточно много показателей, которые рассчитываются на основании выборки всех данных из базы MySQL. После расчета готовые показатели складываются в mongo, где и лежат до следующего пересчета.
В качестве сервера очередей используем Beanstalk. Т.к. данных поступает очень много, а пользователь не должен ждать, все процессы пересчета статистики повешены на очереди.
Отдельным пунктом у нас идет работа с ошибками и мониторинг системы. Т.к. любые ошибки в системе – это прямые убытки, пристальное внимание мы уделяем контролю за стабильностью системы.
Sentry (для web ошибок) и shinken-monitoring (для мониторинга состояния серверов).
Система деплоя написана на Magallanes. Довольно удобное и гибкое решение. Легко расширяется дополнительными функциями.
Код проекта храним в Git-репозиториях, на bitbucket. Там же ставим задачи по разработке.
Frontend — в качестве движка тренажеров идет angular + местами canvas.
Собирается все при помощи Gulp – очень удобное решение.
Сборка CSS идет из LESS.
Почтовые сервисы используем разные, шлем почту как через свой sendmail (показатель 10 из 10 по mailtree), так и сторонними сервисами
Про нагрузку
Признаюсь, не концентрировали усилия на нагрузочном тестировании, использовали оценочные параметры. Тем более что у нашей команды уже был опыт создания крупных интернет-проектов. В моей предыдущей компании мы успешно обслуживали почти миллион клиентов. В этом проекте изначально заложились на правильную архитектуру, потратили чуть больше времени на проработку систем кеширования и т.д. Мы уверены, что если какая-то часть начнет не справляться с объемом, то будет выгоднее что-то оперативно доработать, укомплектовать необходимым дополнительным оборудованием, чем специально тестировать, отнимая время от основных и приоритетных задач.
Что же касается просто тестирования – здесь у нас четкие регламенты. Практически вся система покрыта тестами, и мы тщательно следим после каждой выкладки, чтобы они все проходили.
Про цели
А цель у нас – занять лидирующее положение на рынке проектов для развития мозга в России. Следующий этап – выйти на европейский рынок и укрепить там свои позиции. Если говорить о том, кому, без сомнения, окажется полезным и интересным наш продукт, то круг заинтересованных клиентов окажется весьма широким. Но я бы выделил два базовых направления продвижения – это масс-маркет и медицинские учреждения. Соответственно, мы нацелены на две категории потребителей: людей, которые хотят развиваться и совершенствоваться, проводить свободное время с пользой, и тех, кто нуждается в реабилитационных программах, для улучшения качества жизни и восстановления активности после травм, сердечно-сосудистых заболеваний, хирургических операций и т.д. Кстати, для второй категории мы разработали специальную адаптированную версию нашей программы.
Про перспективы
Несмотря на кризис в мире, мы видим для себя огромные перспективы. Люди в любые, даже не очень спокойные времена готовы инвестировать в себя. Мы надеемся, что быть внимательным, хорошо уметь считать, быстро запоминать станет таким же стилем жизни в России, как знание английского языка. Сейчас ведь уже не надо никому объяснять: если хочешь открыть для себя весь мир – выучи английский.