Удачной разработки с Feature Flag
Меня зовут Тайга, я фронтенд-инженер в Shippio. Я хотел бы представить «Feature Flag», который мы недавно представили в разработке Shippio.
Проблемы с процессом выпуска
У нас были следующие проблемы с процессом выпуска.
- Ограниченное время выпуска. Выпуск в фиксированное время, что задерживает доставку ценности покупателю.
- Несчастные случаи более вероятны, потому что количество изменений в выпуске больше.
- Развертывание/откат занимает много времени.
- Требуется использование сложной стратегии Git, которая использует ненужные ресурсы инфраструктуры.
Что такое флаг функции?
Feature Flag — это метод разработки, позволяющий динамически изменять поведение системы без изменения кода .
Значения флага не обязательно должны быть логическими значениями включения/выключения (название: hogehoge, fugofugo, цвет: #xxxxxxx, #yyyyyy и т. д.)
Выгода
- Контролируемое время выпуска.
- Легко и меньше времени для отката.
- Ограниченный выпуск (тестирование QA, эксперименты с новыми функциями).
- Делать функции доступными только для определенных целевых пользователей.
- А/Б тестирование.
Существуют различные сервисы, которые предоставляют Feature Flag.
Мы выбрали LaunchDarkly из-за осуществимости различных методов разработки, таких как таргетинг на пользователей, зависимости с флагами и запланированные выпуски.
Запустить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]
- — — — — —

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































