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 занимала меньше времени.

Скрытый контент
Комментарии (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 и начнём.

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

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

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

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

Google
Yandex
MailRu