Feature Flags для JS и PHP

При рассмотрении философий CI/CD мы вместо Feature Branches говорили о подходе Trank Based Development для скрытой разработки новой функциональности в основной Git-ветке.

Сегодня это сделаем на практике. Добавим к проекту инфраструктуру полноценной работы с Feature Toggle для фронтенда на ReactJS и бэкенда на PHP.

И при разработке компонента для бэкенда рассмотрим и применим принцип ISP из SOLID.

  • 00:00:32 Continuous-методики
  • 00:01:40 Неудобства подхода Feature Branches
  • 00:06:11 Переход к практикам CI
  • 00:08:31 Способы скрытой разработки
  • 00:10:29 Подход с Feature Toggle
  • 00:15:01 Запуск проекта
  • 00:15:51 Команда обновления зависимостей
  • 00:19:44 Упрощение E2E теста
  • 00:21:03 Структура директорий фронтенда
  • 00:22:32 Упрощение импорта через JS-индекс
  • 00:24:40 Проверка контента в E2E
  • 00:26:04 Выбор готового компонента
  • 00:27:41 Прямая передача фич
  • 00:28:46 Описание типов через PropTypes
  • 00:32:18 Передача через FeaturesContext
  • 00:35:56 Кастомный FeaturesProvider
  • 00:37:27 Компонент FeatureFlag
  • 00:41:38 Включение фич по Cookies
  • 00:43:58 E2E тесты для проверки фич
  • 00:45:43 Более удобное конфигурирование
  • 00:49:10 Отключение через Cookie
  • 00:55:23 Пользовательский хук useFeatures
  • 00:56:51 Вынос списка фич в файл
  • 00:57:29 Обзор результата для фронтенда
  • 00:58:19 Feature Toggle для бэкенда
  • 00:59:47 Сервис FeatureFlag
  • 01:03:25 Способы включения для тестов
  • 01:04:58 Конфигурирование фич для API
  • 01:07:13 Расширение для Twig
  • 01:09:47 Обработка HTTP-заголовка в Middleware
  • 01:11:12 ISP из SOLID
  • 01:17:52 Отключение для тестов
  • 01:21:13 Логирование активных фич
  • 01:24:46 Контекст для передачи данных
  • 01:27:14 Handler для Monolog
  • 01:28:27 Обзор результата в бэкенде
  • 01:29:01 Нюанс работы с очередями
  • 01:31:49 Выгоды подхода
  • 01:35:07 Задача оптимизации Pipeline

А в следующем эпизоде займёмся оптимизацией Pipeline, чтобы сборка в Jenkins занимала меньше времени.

Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (8)
Arunas

Спасибо.

Ответить
А

Спасибо. Побольше бы про SOLID.

Ответить
Yevhenii Lykholai

Спасибо. Про ISP очень понравилось.

Ответить
Евгений

Добрый день. Подскажите вы в одном из уроков упоминали файл с настройками для PhpStorm. Не могу найти.

Ответить
Дмитрий Елисеев

Когда устанавливали React создавали файл frontend/.editorconfig

Ответить
Руслан

Дмитрий, добрый день,

очень познавательно, используя Feature Flags стало более очевидным преимущество trunk based подхода версионирования сборок в сравнении с git flow. На Вашей практике, насколько часто используете trunk based workflow, есть советы когда он мало применим?

Спасибо.

PS: когда примерно ожидается выход следующего выпуска (OAuth2 с JWT)?))

Ответить
Дмитрий Елисеев

насколько часто используете trunk based workflow

В своих проектах всегда разбиваю большую задачу на микрозадачи и их сразу мелкими коммитами пушу в master. В чужих уже зависит от договорённостей внутри команды и команды с заказчиком.

есть советы когда он мало применим?

Малоприменим он для экспериментов и спорных задач, где малопонятно что нужно делать и нужно ли это делать вообще. Тогда лучше экспериментировать с таким кодом в отдельной ветке. А когда после экспериментов и обсуждения выберется оптимальный вариант и задача сформулируется точнее, то уже внедрять в основной код.

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

когда примерно ожидается выход следующего выпуска?

Обновимся до PHP 8 и начнём.

Ответить
Руслан

Дмитрий, благодарю за развернутый ответ, очень полезно, и спасибо за Ваш труд!

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Yandex
MailRu
GitHub
Google