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

Функции флаги и вафли

Вы в команде, которая хочет отправить супер классную новую функцию ™. Функция будет вызывать изменения всех ов … Теги с Python, Django.

Вы в команде, которая хочет отправить супер классную новую функцию ™.

Функция приведет к изменениям по всему веб-приложению. Вместо того, чтобы выпустить работу на кусках, маркетинговая команда хочет иметь большую раскрытие, чтобы создать шум. Как вы управляете этим вызовом?

Один вариант – сохранить всю работу в отдельной ветви кода. Когда все сделано, объедините код обратно в основную ветку, отправьте его и раскройте его в мир. WHOA, держись, что звучит рискованно.

Что мог бы возможно пойти не так? Ну как насчет:

  1. Другие изменения продолжались на вашей главной ветке, и теперь ваша давняя ветвь жилья является полный конфликтов с вашей главной веткой.
  2. Ваш код функции был проверен только разработчиками и является полный ошибок Это разрушает использование вашей супер прохладной новой функции.

Это звучит … ужасный Отказ

Как мы можем постоянно доставлять Функция, не убивая маркетинговый гуд? Мы можем использовать Функции функций.

Функции Флаги

Флаги Функции – это инструмент, который дает разработку команд, способность раскрывать функцию контролируемым образом.

Вы можете столкнуться с флагами функций как Функция переключается или Функциональные ласты Отказ Несмотря на то, что имена разные, намерение одинаково. С флагами функций командные элементы управления какие функции активны и какие люди видят эти активные особенности.

Флаг функции функционирует как настраиваемая точка в системе, которую команда может включать или отключить. В коде флаг функции выглядит немного похоже на:

if feature_flag_is_active:
    return super_cool_new_feature()
else:
    return old_behavior()

Что делает Fixe_flag_is_active правда или не может зависеть от того, кто такой пользователь. Этот дополнительный уровень контроля полезен для ворота выпуска.

Мы могли бы включить нашу Super Cool новую информацию для маркетинговой команды (или QA) заранее. Это дает им время для рассмотрения, предоставлять отзывы и давайте вспомним ошибки.

Я могу рассказать вам от личного опыта, который овладелешься над графиком функций, является огромным благом для Storybird Отказ Команда в Stillbird может польскими функциями, прежде чем разделить их с сотнями тысяч тысяч учителей и студентов.

Теперь, когда вы оснащены знанием того, что флаги функций, давайте рассмотрим одну библиотеку, которая их реализует. Иди получаю сироп, потому что мы будем говорить о вафлях, эр, Django-Waffle Отказ

Ты вафляешься?

вафля : глагол – признака, колебаться

Merriam-Webster.

Django Waffle Это библиотека флага функций, которая может включать или отключить код, как описано ранее, и быстро добавить в любой проект Django.

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

waffle.flag_is_active Является ли критический метод для API Paffle Flags.

Предположим, что часть нашей Super Cool новой функции – новый дизайн шаблона для нашей страницы продукта. Если оригинальный вид продукта выглядел как:

class ProductView(View):
    def get(self, request, *args, **kwargs):
        # Do work to build template context...
        return render(request, 'old_design.html', context)

потом Наш новый код, который добавляет флаг Waffle, выглядит как:

class ProductView(View):
    def get(self, request, *args, **kwargs):
        # Do work to build template context...
        if waffle.flag_is_active(request, 'super_cool_new_feature'):
            return render(request, 'new_design.html', context)
        else:
            return render(request, 'old_design.html', context)

Давайте сломаемся, как это работает.

Вафельные магазины настроек флага в таблице базы данных. Команда контролирует доступные флаги через Django Admin Отказ С сайта администратора разработчик может установить имя флаги, включенное/отключено состояние, а некоторые фильтры для более конкретного управления, как суперпользователь, персонал или конкретный доступ к группе.

Когда представление выполняет, flag_is_active проверяет request.user Против настройки, описываемых в super_cool_new_feature строка базы данных. Если пользователь соответствует критериям, функция оценивает на Правда И ваш новый код будет запущен.

Для Super Cool новой функции Waffle можно вызвать в каждом месте, который необходимо изменять, используя то же имя флаги функций. Это представляет способ включить функцию (или выключить!) С быстрым редактированием в админ Django.

Упаковка

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

Разве это не сложнее?

Да, это так. Как и каждый инженерный выбор, флаги функций имеют компромиссы.

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

Функции Функции разводят доставку функций из откровения функций.

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

Эта статья впервые появилась на mattlayman.com Отказ

Оригинал: “https://dev.to/mblayman/feature-flags-and-waffles-5c69”