Vexor в большом проекте

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

Всем привет!

Мы решили наглядно показать, как Vexor помогает разработчикам тестировать код дёшево, удобно и быстро. Представители компании Scalex, нашего ключевого клиента, рассказали об их проекте, повседневной работе и о том, почему они выбрали Vexor.

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

Разговаривали с нами CEO компании Юрий Семенчук и CTO Алексей Блинов, за что им спасибо.

Олег Балбеков: Давайте вы для начала расскажете о компании, о проекте и о себе.
Юрий Семенчук: Мы пишем Scalex — большую систему для управления дилерским центром партнёра-заказчика: продажи новых и подержанных автомобилей, запчасти, сервис, CRM, маркетинг. Решение изначально масштабируемое: оно подойдет как сервисной станции гаражного типа, так и гигантскому холдингу с кучей дилерских центров в разных городах. Кроме того, это SaaS-решение.

Юрий Семенчук, CEO Scalex

Мы основали компанию Scalex в начале 2013 года. Ключевой состав — ребята, которые работали в автомобильной отрасли. Они знают этот бизнес изнутри и умеют его автоматизировать.

На сегодняшний день в команде 16 человек — бизнес аналитики, front-end и back-end разработчики, UX, тестировщики. Мы активно привлекаем талантливых ребят, так что если кого-то наш проект заинтересует, то добро пожаловать в нашу команду.

Олег Балбеков: А какая ситуация на рынке автоматизации в автомобильном бизнесе?
Юрий Семенчук: Рынок взрослый: официальные дилерские центры появились 25 лет назад. Вследствие этого крупные игроки разработали решения, в которые они много инвестируют. Бизнесы поменьше внедряют программные комплексы на базе 1С. Из-за ограничений платформы люди прибегают к кастомным настройкам, то есть, считай, кустарно переписывают под себя. Большие холдинги испытывают много проблем, потому что их продукты используют технологии, созданные 25 лет назад. Они упираются чисто в технологические ограничения. Представьте, что всё написано на Delphi. Сложно найти разработчиков, которые будут поддерживать такой продукт. В итоге предприниматели столкнутся с тем, что придется купить новое решение или инвестировать сопоставимые средства в разработку.

Алексей Блинов, CTO Scalex

Олег Балбеков: Расскажите о технологиях, которые вы используете.
Алексей Блинов: У нас под капотом стандартный стек для людей, которые выбрали Ruby On Rails: Postgres, Sidekiq. Еще Redis для Sidekiq. В чистом виде мы Redis пока не используем, хотя, возможно, будем. На горизонте маячит ElasticSearch.

Олег Балбеков: Ты говоришь, что ваш проект «большой по размеру». Скажи тогда, сколько у вас контроллеров и моделей?Алексей Блинов: 382 контроллера и 261 модель.

Олег Балбеков: Ого. У вас 260 табличек в базе?
Алексей Блинов: Угу, но это не считая many-to-many ассоциаций. И это пока что треть планирующейся работы.

Олег Балбеков: Как вы организовали тестирование такой сложноустроенной структуры?
Алексей Блинов: Тестирование тоже стандартное для тусовки. У нас Rspec, тестируются не модели и не контроллеры, а бизнес-логика, которая хранится в ServiceObject. Тестов 6395. На средней машине разработчика они выполняются 48 минут. Поэтому однажды их перестали локально прогонять. Процесс выглядит следующим образом: ты написал новый код и тесты, сделал пул-реквест, и запускается Vexor, который выполняет тесты сильно быстрее и при этом публично показывает, насколько удачно ты написал код.

Офис компании Scalex
Во время интервью

Олег Балбеков: Сколько времени тратит на тестирование Vexor?Алексей Блинов: Около 10 минут в 6 потоков. Даже когда пул-реквесты идут десятками, Vexor все прогоняет каким-то чудом за 10 минут, и ничего не ломается. Предыдущее технологическое решение в такие моменты ставило нас в очередь и говорило: «Тестирование начнётся часов через 8–12». Максимально 18 часов было. Но это они тогда только начнутся, прогонялись они тоже час.

Олег Балбеков: В целом, в какой момент вы начали использовать Continious Integration?
Алексей Блинов: Тесты появились не с начала проекта, но мы одумались, решили, что это неправильно, и начали писать. Первое решение — Jenkins, развернутый на DigitalOcean. Второе — TeamCity. Оба перестали устраивать с ростом проекта — медленно работали.

Олег Балбеков: 8–10 часов ожидания — про какую систему?
Алексей Блинов: TeamCity, но мы там не покупали агентов, потому что цена — $200 долларов за минимальную лицензию, которая бы не решила проблем, показалась нам слишком большой.

Олег Балбеков: И видимо, вы бы в любом случае упёрлись бы в порог мощности сервера, который купили на DigitalOcean?Алексей Блинов: TeamCity позволила бы нам параллельно гнать 10 пул-реквестов, но при этом сами тесты шли бы в один поток. 7000 тестов в один поток — те же 40 минут. В тот момент мы начали искать альтернативу. Облачных CI-сервисов было немного. При этом в других оплата была по количеству воркеров, а в Vexor — по минутам, то есть значительно дешевле.

Олег Балбеков: Используете ли вы docker, и если да, то как?Алексей Блинов: У нас в нём есть бот для чата и сервер печати :) Но в ближайшем будущем планируем и всё приложение завернуть. Сделаем удобный и быстрый деплой. Еще у нас много ассетов, их лучше собирать у себя, а не на сервере.

Олег Балбеков: Мы в Vexor уже написали экспериментальную поддержку докера и скоро выкатим её. Тестируем со всеми желающими. Обращайтесь :)

Олег Балбеков: Последний вопрос: кому бы ты посоветовал Vexor?
Алексей Блинов: Если проект — open-source, живёт на GitHub, и проект не катастрофически огромный, то бесплатный Travis подойдет. Если же тесты open-source проекта не проходят быстро на том же Travis, и уж тем более, если проект приватный, то надо идти на Vexor.

Олег Балбеков: Спасибо за интервью!

Vexor даёт 100 бесплатных минут каждый месяц, чтобы попробовать.

Присоединяйтесь и не ждите подолгу окончания тестирования. А еще расскажите об этой статье друзьям, упростите им жизнь :)

--

--