GuruChess — сайт с шахматными уроками, задачами и виджетом для прямых трансляций турниров

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

GuruChess — сайт с шахматными уроками, задачами и виджетом для прямых трансляций турниров

Важно вовремя найти нужных людей

Меня зовут Сергей Ефименко, мне 32 года, живу в Москве. Стартапами занимаюсь более пяти лет. Методология Lean Startup позволяет быстро запускать стартапы. Например, идею создать шахматную онлайн-школу мне подкинул мой шестилетний сын. Закипела работа, и примерно через месяц уже был готов сайт со 150 шахматными уроками, с интерактивной доской, шахматными задачами, виртуальным шахматным тренером и открытым API.

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

Встреча прошла успешно, директор рекомендовала мне в первую очередь заручиться административной поддержкой. Когда ехал домой со встречи, мне позвонили из одного регионального телеканала «ОТС» с предложением снять сюжет про мою школу, и я воспользовался этой возможностью. Тут же взял билеты и вылетел с сыном в Новосибирск.

Пока шла съёмка сюжета, меня пригласили на встречу с руководством популярной спортивной газеты «Советский спорт» — вот тут-то всё и завертелось по-настоящему. На встрече был почти весь топ-менеджмент компании — 8 человек. Мы разработали и обсудили план.

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

Первая трансляция прошла успешно. На следующий день удалось привлечь ещё несколько партнеров. Через несколько суток мне позвонили из крупного спортивного издательства Москвы «Спорт-экспресс» и согласились транслировать чемпионат с помощью моего виджета. Радости не было предела, ведь заполучить этого партнёра я безуспешно пытался уже несколько дней.

В этот же день мне удалось найти нужного человека в их большой компании. Количество трафика увеличилось в разы, а вместе с этим значительно вырос и доход. Трансляция шахматного турнира продолжилось успешно.

Не пользуйтесь российскими хостингами

Я договорился провести трансляцию двенадцатой партии чемпионата мира по шахматам на популярном сайте « Газета.ru», входящем в топ-100 сайтов рунета по трафику. Это приблизительно 500 тысяч уникальных посетителей на странице трансляции.

Целый день перед началом игры я готовился к «приему» нового партнёра, добавил мощностей серверу, оптимизировал в два раза по производительности код виджета. За плечами уже ряд успешно проведенных трансляций, десятки крупных и довольных партнёров, казалось, что я готов к трансляции. Да и хостинг у меня надёжный, отечественный — VPS. Добавлю, «новичок» был требовательным — он попросил сделать для него специальную сборку виджета, взамен пообещал поместить прямую ссылку на мой сайт.

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

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

За 20 минут до начала трансляции ресурсы сервера были съедены на 25%, сразу понял — дальше будет горячо. После первых ходов трансляции сервер стал захлёбываться. Когда я решил до предела повысить мощности сервера, выяснилось, что сделать это невозможно. У хостинг-провайдера не было нужных мне мощностей, хотя в панели администратора они были указаны. На практике при увеличении значений параметров появлялась ошибка с просьбой написать заявку для переезда на другой сервер.

Дальше чисто российский сценарий: заявка создана, какие-то невразумительные ответы типа «Изменить параметры сервера Вы можете в разделе „Конфигурация“ Вашего сервера». А я что делал? Забегая вперёд, скажу, что через несколько часов мою виртуалку всё-таки перенесли на сервер со свободными ресурсами, но ложка дорога к обеду. Спасло меня то, что партия завершилась рекордно быстро — за 30 минут, хотя обычно идёт пять−шесть часов. Основной поток трафика уменьшился, виджет снова стал работать нормально.

Самостоятельно контролируйте все процессы

Двенадцать классических партий не смогли определить чемпиона мира по шахматам и впереди меня ждало ещё одно испытание — тай-брейк — это матч в быстрые шахматы, в котором на всю игру даётся 25 минут каждому сопернику вместо стандартных трех часов. Но это только первые четыре игры, дальше ещё могло быть до 11 блиц-партий с контролем времени пять минут.

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

До начала новой трансляции оставалось чуть меньше двух суток. Спать было некогда, да и как уснуть, если мысли о предстоящей битве не отпускали меня. Вновь я переключился в режим хакатона. Что оптимизировать ещё? Добавлять новые серверы, сделать балансировку нагрузки, строить кластер? Перейти c REST на WebSocket? А если не успею всё отладить?

Решил ещё раз оптимизировать работу виджета. Для всех партнёров подготовил специальную версию виджета, в которой отключил всё, что можно было отключить. Убрал возможность анализировать ходы в партии с помощью виртуального тренера, отключил получение названия дебюта. Обновлять данные на клиенте решил каждые 20 секунд. Бизнес-бизнесом, но чтобы больше не подставлять партнёров, решил не приглашать на трансляцию новых партнёров.

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

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

Стоит отметить, что я ещё успевал анализировать и комментировать каждый ход гроссмейстеров на своём сайте и на двух самых крупных сайтах моих партнёров. Правда, так было лишь до начала тай-брейка.

Мой лучший друг всё время спрашивал, сколько человек находится на моем сайте в момент трансляции. Но меня интересовали более действенные параметры, а не показатели «тщеславия». Например, сколько нужно уникальных посетителей в момент трансляции, чтобы заработать $1. Так вот, чтобы заработать один доллар, необходимо около 500−700 уников в сутки.

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

В 22:00 началась партия. 1000, 2000, 3000 посетителей онлайн, число продолжает быстро расти. Трансляция идёт, пока всё нормально. Дальше больше: 10 000, 15 000… В 22:11 поступил звонок от партнёра, но я уже и так был в «операционной», на моём рабочем столе остались открытыми только четыре терминальных окна и IDE.

Админку своего сайта я уже закрыл, так как первой отказала база данных, и я так и не успел оставить очередной комментарий к партии. Отключаю базу совсем, принося свой сайт в жертву трансляции, перезапускаю веб-сервер, на домене вешаю простую HTML-страницу с виджетом. Перезагрузка сервера. Трансляции нет.

Быстро в коде восстанавливаю прежнюю скорость обновления виджета. Перезагрузка. Все заработало, трансляция продолжилась. Партии идут быстро, сразу коммичу код на продакшн, попутно отключая виджеты уже сыгранных партий, подсовывая им статические данные. Сервер держится, трансляция идёт. Лишь к четвёртой партии я сумел поднять голову и начал активно комментировать шахматную баталию на сайте одного из партнёров.

В 02:44 определили чемпиона мира по шахматам — Магнус Карлсен в очередной раз сохранил «корону». Хорошо, что было всего четыре партии, а не пятнадцать. Трафик отхлынул, я запустил свой сайт и добавил недостающие партии. Ближе к пяти утра написал письма партнёрам — поздравил всех с окончанием чемпионата и поблагодарил за продуктивное сотрудничество.

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

Это была моя ошибка, я не доглядел, мне следовало проконтролировать процесс и помочь своим партнёрам встроить код трансляции на их страницы. Они подавали мне знаки, но я не обратил на это внимания. В целом же трансляция тай-брейк матча прошла успешно — оптимизация виджета, 32 Гб оперативной памяти и 16 ядер сервера справились с незапланированной нагрузкой.

Доверяйте своей интуиции

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

С GuruChess я стал зарабатывать сразу, как и планировал, с первого дня запуска проекта, вернее, с момента начала его рекламы и продвижения — 1 ноября 2016. В бизнес-архитектуру проекта было одновременно заложено две основные модели монетизации: фримиум-модель онлайн-обучения людей в шахматы с оплатой за урок с тренером; вторая модель — можно сказать, инновационная — бесплатное предоставление интерактивного шахматного контента с рекламным баннером.

За месяц работы сайт GuruChess вошёл по посещаемости в топ-10 шахматных сайтов нашей страны. За 20 дней трансляции мне удалось построить приличную партнёрскую сеть в России, есть партнёр из Белоруссии.

Планы на будущее амбициозные. Как минимум стать лучшим шахматным сайтом в России. Войти на западный рынок, в частности в США, тем более есть уже подобный успешный опыт с другими проектами. Для дальнейшего роста хочу построить команду единомышленников, возможно, привлечь инвесторов.

40 комментариев

Шах и мат, стартаперы)))

17
Ответить

Прочитал "старпёры":)))))

2
Ответить

ЧУВАК молодец!!! Читал чтатью как БЛОКБАСТЕР ))) на одном дыхании))) Желаю успехов!

3
Ответить

Отличная история, спасибо что поделились, и тема - супер. Желаю успеха вашему проекту :)

2
Ответить

Успехов! ) спасибо за статью )

2
Ответить