Удачной разработки с Feature Flag

Feb 14 2023
Меня зовут Тайга, я фронтенд-инженер в Shippio. Я хотел бы представить «Feature Flag», который мы недавно представили в разработке Shippio.

Меня зовут Тайга, я фронтенд-инженер в Shippio. Я хотел бы представить «Feature Flag», который мы недавно представили в разработке Shippio.

Проблемы с процессом выпуска

У нас были следующие проблемы с процессом выпуска.

  • Ограниченное время выпуска. Выпуск в фиксированное время, что задерживает доставку ценности покупателю.
  • Несчастные случаи более вероятны, потому что количество изменений в выпуске больше.
  • Развертывание/откат занимает много времени.
  • Требуется использование сложной стратегии Git, которая использует ненужные ресурсы инфраструктуры.

Что такое флаг функции?

Feature Flag — это метод разработки, позволяющий динамически изменять поведение системы без изменения кода .

Обзор флажка функции

Значения флага не обязательно должны быть логическими значениями включения/выключения (название: hogehoge, fugofugo, цвет: #xxxxxxx, #yyyyyy и т. д.)

Выгода

  • Контролируемое время выпуска.
  • Легко и меньше времени для отката.
  • Ограниченный выпуск (тестирование QA, эксперименты с новыми функциями).
  • Делать функции доступными только для определенных целевых пользователей.
  • А/Б тестирование.

Существуют различные сервисы, которые предоставляют Feature Flag.

Мы выбрали LaunchDarkly из-за осуществимости различных методов разработки, таких как таргетинг на пользователей, зависимости с флагами и запланированные выпуски.

Сравнение флагов функций SaaS (ссылка: https://codezine.jp/article/detail/14662)

ЗапуститьDarkly

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

Список флагов функций

Также можно создать несколько сред, что позволяет настраивать правила флагов для команды разработчиков.

Переключить среду

Есть много других хороших моментов.

  • Плагины IDE (IntelliJ, VSCode)
  • Слабая интеграция
  • Интеграция Datadog
  • Большинство SDK.
  • Хорошие документы

Краткое руководство по установке LaunchDarkly.

1. Подготовьте флаг

Создайте новый флаг в службе LaunchDarkly.

2. Запустите настройку Darkly SDK

Как правило, вы используете LaunchDarkly во всем приложении, поэтому оберните корневой компонент React в поставщике SDK. Чтобы отобразить приложение только после завершения инициализации SDK, используйте await с asyncWithLDProvider.

import { asyncWithLDProvider } from 'launchdarkly-react-client-sdk';

const renderApp = async () => {
  const LDProvider = await asyncWithLDProvider({
    clientSideID: process.env.REACT_APP_LAUNCHDARKLY_CLIENT_ID,
  });

  ReactDOM.render(
    <React.StrictMode>
      <LDProvider>
        <App />
      </LDProvider>
    </React.StrictMode>,
    document.getElementById('root'),
  );
};

renderApp();

Затем вы вводите логику флага, указывающую, следует ли отображать компонент.

const { newFeatureA } = useFlags();

return (
 <>
    { newFeatureA && <newFeatureA />
  </>
)

Таргетинг

Если вам нужно разделить функции по информации о пользователе, необходимо идентифицировать пользователя в LaunchDarkly.

В React SDK есть функция identify(), которую можно использовать для применения правил флага на основе конкретного пользователя.

import { useLDClient } from 'launchdarkly-react-client-sdk';
let ldClient = useLDClient();

const ldUser = {
      kind: 'user',
      anonymous: false,
      key: currentUser.id,
      companyName,
      userType,
    };

ldClient.identify(ldUser);

      
                
Users (dummy data)

Окончательно

Хотя мы только что реализовали его и еще не увидели огромного преимущества, я чувствую, что у нас есть больше возможностей при выпуске кода. Мы надеемся, что с помощью этой новой системы мы сможем быстрее приносить пользу нашим клиентам. Спасибо!

— — — — —
Если эта статья вызвала у вас интерес, и вы заинтересованы в работе в Shippio, мы нанимаем!

Проверьте ссылки ниже.
▼ Карьерные возможности
https://recruit.shippio.io/en
▼Связаться
с LinkedIn:https://www.linkedin.com/company/shippioinc/
Адрес электронной почты отдела кадров Shippio: [email protected]
- — — — — —