Как Vexor CI используют в известном книжном стартапе Bookmate?

Maxim Rusak
Vexor CI по-русски
5 min readOct 7, 2015

Привет!
Олег Балбеков, наш CEO, сходил в гости к компании
Bookmate. Их команда разработчиков постоянно использует для тестирования Vexor.

In English | По-русски

С нами беседовали CTO Илья Михеев, разработчики Влад Сябрук и Алексей Никитин.

Олег Балбеков: Расскажите о проекте. Что это такое?
Алексей Никитин:
Bookmate — это самый легкий способ читать и находить новые книги. Можно удобно и недорого читать, а еще зарабатывать на собственном творчестве. Вырисовывается новая цель проекта — социализировать читателей. Хотим, чтобы пользователи знакомились, создавали контент в виде полок, цитат и впечатлений от книг.

Олег Балбеков: У вас подписная модель оплаты?
Илья Михеев:
Да, это главное отличие от традиционных магазинов, в которых приходится покупать книги по отдельности. А мы даём доступ ко всей библиотеке.

Олег Балбеков: Зачем нужна социализация? Чтобы усилить присутствие в соцсетях?
Илья Михеев:
Мы хотим сами стать соцсетью для читателей. Пользователь смотрит ленту друга и узнает, что читает он, делится впечатлениями, ставит лайки.

Влад Сябрук, разработчик

Олег Балбеков: Я думал, эра соц. сетей заканчивается. Новых не делают.
Влад Сябрук:
Людям, которые читают, интересно поговорить друг с другом, посоветоваться насчёт книг. Кроме того, часто бывает: заходишь на профиль девушки или молодого человека, видишь, что он читает, и складывается о нём впечатление. Видел твиты, как парень подкатил к девушке по профилю на Bookmate. Таким образом, сайт еще и помогает заводить знакомства.

Олег Балбеков: Сколько у вас пользователей?
Илья Михеев:
Недавно зарегистрировался трёхмиллионный пользователь. Он из Индонезии, мы отправили ему подарок. Там мы недавно запустились, познали странный и самобытный индонезийский язык. Пока большая часть пользователей из России, но если смотреть на новых пользователей, то там распределение уже 50 на 50.

Олег Балбеков: Какими технологиями вы пользуетесь?
Алексей Никитин:
Мы пошли по проторенному пути. Это реляционнные базы данных, мы давно стартовали, поэтому под капотом MySQL. Кроме того, используем Rails, Sidekiq, Redis, Memcache, MongoDB, ElasticSearch (перешли на него со Sphinx).

Олег Балбеков: И Memcache, и Redis одновременно?
Алексей Никитин:
Используем Redis немного, только для кеширования.

Олег Балбеков: А зачем MongoDB?
Алексей Никитин:
Нужен для статистики правообладателей и странички активности друзей.

Олег Балбеков: ElasticSearch сильно проигрывает Sphinx? Читал, что Elastic использует много памяти.
Влад Сябрук:
Сначала использовали Elastic только для статистики. Потом решили: зачем нам тогда Sphinx? Данных не так много, чтобы ElasticSearch загибался. Кроме того, их два. Один со статистикой, вот он загибается. Другой, с поиском, летает свободно.

Олег Балбеков: У вас по текстам книг работает поиск?
Влад Сябрук:
Нет, пока нет. Используем поиск по названиям, описаниям, авторам, с кучей сортировок и фильтров.

Илья Михеев, CTO Bookmate

Олег Балбеков: Сколько у вас разработчиков?
Илья Михеев:
Нас 25 человек в команде. Порядка 8 человек на Ruby. Еще есть фронтэнд, iOS, Android, WP, QA и мобильный веб.

Олег Балбеков: Как вы тестируете проект?
Влад Сябрук:
В основном пишем тесты моделей и контроллеров, реже интеграционные. Отдел тестирования пишет тесты на Watir, которые кликают в браузере, в Vexor они не присутствуют. И ручное тестирование. Итого 3 этапа: автоматические тесты разработчиков, автоматические тесты тестировщиков и ручное прокликивание.

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

Олег Балбеков: Похоже на Scrum.
Илья Михеев:
Скорее Scrumban. Итерации двухнедельные, в эти две недели разработчики должны успеть сделать запланированные задачи и потушить небольшое количество «пожаров». После удачного тестирования мерджим пул-реквест и выпускаем в продакшн. Тестирование отстаёт от разработки: тестировщиков трое, а разработчиков 25, поэтому мы хотим отказываться от ручных тестов бекенда.

В офисе Bookmate

Олег Балбеков: Как вы начали работать с Continuous Integration-сервисами?
Влад Сябрук:
Первый CI мы долго выбирали и остановились тогда на CircleCI. Использовали его полгода. Затем у нас был период с Circle и Vexor одновременно, и перед нами встал выбор, потому что платить за оба неразумно. Vexor работал быстрее, стоил дешевле и интерфейс был проще.

Олег Балбеков: Ваши тесты в 4 потока работают максимум за 9 минут.
Илья Михеев:
Это многовато для нас. Помню время, когда было 4 минуты.

Олег Балбеков: Вы сильно выросли за это время.
Илья Михеев:
Да, написали уже 2500 тестов, а когда начинали пользоваться, было 700. Месяц назад подключили Rubocop — еще один поток.

Олег Балбеков: Что даёт Rubocop?
Влад Сябрук:
Много споров про скобочки и кавычки. Из-за них мы ничего не успеваем :)

Олег Балбеков: Помню, подходил к тебе на DevConf, и ты сказал, что Vexor — это наркотик, с которого трудно слезть. Что ты имел в виду?
Алексей Никитин:
Я об удобстве. Долго тесты идут — воткнул ещё один поток, и теперь тестирование длится столько же, сколько два месяца назад.

Алексей Никитин, разработчик

Олег Балбеков: Какая главная проблема у альтернатив Vexor?
Алексей Никитин:
Очереди на обработку. Приходится ждать, пока закончится предыдущий билд. Недолго, но всё равно неприятно.

Олег Балбеков: Смогли бы вы порекомендовать Vexor?
Влад Сябрук:
Для маленьких компаний это находка. Платишь пару долларов в месяц и не паришься. Для больших — ускорение тестирования в разы за те же деньги и отсутствие очередей на тестирование для разработчиков.

Будем благодарны, если запостите это интервью в соцсети. Помогите друзьям найти правильный инструмент для тестирования :)

--

--