Рубрики
Без рубрики

Скоростной поезд: Использование флагов функций и удаленной конфигурации в CISCO

Почему мы разработали и с открытым исходным кодом Bullet Train, инструмент удаленного управления функциями. С тегами ci, java, javascript, показать разработчика.

Спрашивая многих моих друзей-разработчиков, мне кажется, что CI и CD – это две практики, которые люди либо уже используют, либо хотели бы использовать. Разработчики повсеместно любят выпускать свои новые функции, это приятная часть работы. В идеальном мире мы могли бы постоянно выпускать функции, но по мере усложнения проектов и роста пользователей этот поспешный шаг к освоению становится слишком рискованным.

В этом посте объясняется, что я обнаружил при использовании флагов функций и почему группа Solid State оказалась с открытым исходным кодом https://bullet-train.io .

Сокращение циклов высвобождения и стресса

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

  • UAT включал в себя обширное тестирование нескольких взаимосвязанных неизданных функций.
  • Исправления, которые не могли ждать, должны быть объединены, они были бы применены к производственному коду и могут конфликтовать/оказывать побочные эффекты на застоявшийся код.
  • Когда так много всего происходит, трудно отследить, что именно входит в выпуск.
  • Казалось бы, незначительные функции слишком долго выпускались, просиживая там неделями, не принося пользы.
  • Последствия релизов часто были довольно высокими, выпуск большого количества сразу несет в себе риск взрыва приложения, требующий отката в тяжелых случаях.

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

Что такое “флаги функций”

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

Флаг функции – это способ отключить некоторые функции вашего приложения с помощью конфигурации без развертывания нового кода. Если вы используете CI/CD и часто выпускаете, они очень важны.

Почему “флаги функций” имеют значение

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

  • Отделяйте выпуски кода от развертывания функций
  • Вводит возможность тестирования кода в рабочей среде с постепенным/целенаправленным внедрением
  • Позволяет нетехническим членам команды управлять выпусками функций
  • Позволяет тестировать функции на ранней стадии и на основе незагрязненного кода.
  • Позволяет вводить бета-версии программ для получения ранней обратной связи с пользователями.
  • Уменьшает необходимость отката кода с возможностью удаленного отключения функций.

Где не хватает флагов функций

Здорово иметь возможность включать и выключать функции без выполнения сборки, но с некоторыми функциями это не так просто. Вот где появляется удаленная конфигурация . Часто возникает необходимость настроить свойства функций, например, обновить некоторый текст, чтобы продвигать продажу валюты в приложении. Для мобильных приложений я ранее использовал удаленную конфигурацию Firebase, что часто означало разницу между ожиданием 2 или более дней совместной сборки iOS и Android.

Представляем скоростной поезд

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

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

Платформа на 100 % с открытым исходным кодом и имеет пакеты SDK JavaScript, React Native, Node JS и Java, так что вы можете самостоятельно разместить все это, если хотите. Мы также размещаем интерфейс API и администрирования для людей, чтобы люди могли попробовать. Мы даже использовали его для разработки сверхскоростного поезда! Не стесняйтесь оставлять отзывы на сайте по адресу bullettrain@solidstategroup.com .

Счастливого Развития!

Оригинал: “https://dev.to/kylessg/bullet-train-using-feature-flags-and-remote-config-in-ci-2gda”