Как мы создали облачный сервис непрерывной интеграции Vexor
Задача
Это классическая проблема масштабирования. Когда компания одновременно работает над несколькими проектами, то сталкивается с рядом трудностей в непрерывной интеграции (CI). Выполнение собственной настройки CI в облаке обходится дорого, а расходы кажутся необоснованным — сервер используется только в течение нескольких часов, но платите вы, как если бы пользовались им весь день. Построить свой собственный дата-центр еще дороже. Это не только вычисления и хранение, размещение собственной цепочки CI: проекты должны быть сконфигурированы, тестовые серверы нужно создать, а затем мониторить, пакеты нуждаются в обновлениях. Требуется много времени и усилий, чтобы всё это работало. И что бы вы ни делали, ваши разработчики неизбежно будут просить увеличить количество ресурсов для непрерывной интеграции (CI).
Что такое Vexor?
Vexor — это не просто CI в облаке, это CI для облака. Используя Vexor, вы платите только за те минуты, когда идут ваши тесты. Нет обязательного платежа. Нет минимумов. Не сделали ни одного коммита? Ничего не платите.
С этим сервисом точно можно «догнать» двух зайцев. Vexor разумно масштабирует ресурсы, чтобы удовлетворить спрос: больше не нужно ждать очереди, чтобы начать работу.
Брендинг и UX
Мы разработали уникальную айдентику для бренда Vexor, центральный элемент которой — замкнутая спираль в вечном движении, и воплотили её с помощью CSS3, WebGL, SVG и Three.js. Для этого сервиса мы создали сайт с узнаваемым стилем, а также калькулятор для расчёта стоимости.
Что внутри?
Мы начали разработку, используя AWS, но Vexor нуждался в более тонком контроле над физическими вычислительными ресурсами, чем EC2, предназначенный для обеспечения рентабельности. После некоторых исследований мы установили, что Rackspace обеспечивает правильное сочетание масштабируемости, контроля и ценообразования.
Vexor использует контейнеры Docker для выполнения заданий CI в постоянной среде, извлекая данные из исходных репозиториев, размещённых в Github, Bitbucket или Gitlab. Тестовые контейнеры сделаны на основе популярного дистрибутива Ubuntu Linux, и мы предоставляем несколько предустановленных пакетов, таких как Xvfb, Postgresql, Mysql, MongoDB, Redis, Elasticsearch, PhantomJS и SphinxSearch, что делает Vexor невероятно удобным в использовании.
Vexor поддерживает целый ряд сред, в том числе Ruby, Clojure, Scala, Python, Haskell, React, Elixir, Solidity, Node.js, Go, Rust, и во многих случаях автоматически определяет команды, которые нужно вызвать для стандартного теста на выбранном языке. В более редких случаях, значения по умолчанию и методы обнаружения можно заменить, поместив файл Yaml в хранилище.
На наших клиентов произвели впечатление простота использования, сверхбыстрая интеграция сборок и ценовая стратегия «плати за то, что используешь», особенно по сравнению с некоторыми аналогичными сервисами. А поскольку Vexor может выполнять любое количество тестов одновременно, то вы больше не сможете использовать «ждем завершения CI» в качестве оправдания.
* * *
К сожалению, с 1 июля 2019 года Vexor больше не доступен. Если вы хотите разработать собственное CI/CD решение, заполните форму внизу и наша команда свяжется, чтобы обсудить детали и рассказать о нашем опыте, который может быть применён на вашем проекте.