Что такое feature toggle или как избавиться от мучительных мёржей и долгоживущих веток?
Проблема
Представьте, что циклы разработки вашей команды длятся по две недели, а реализация новой фичи потребует от команды 3 месяца разработки. На первый взгляд, есть две возможные схемы действий:
Использование feature switcher-ов для решения проблем
Такая проблема встречается в разработке довольно часто и есть изящное решение, позволяющее взять лучшее от описанных выше подходов — feature toggle или feature switcher.
По сути, feature switcher — это boolean флаг, который хранится в базе данных и содержит информацию о том, должна быть включена та или иная фича или нет. Значение этого флага может быть извлечено из базы данных по ключу. Удобство использования feature switcher-ов заключается в том, что они могут быть легко изменены бизнес-пользователем во время runtime через панель администратора без необходимости заново деплоить приложение.
Ниже приведен пример использования feature toggle на языке Java:
В примере выше configurationManager — это класс, позволяющий извлечь значение определенного feature switcher-а из базы данных по его ключу.
Также, при помощи feature switcher-ов, можно отображать/скрывать определенные элементы на фронтенде. Для этого придется положить значение флага в Model и передать его на View как это показано ниже:
После чего использовать переданное значение для рендеринга того или иного HTML кода:
Виды feature switcher-ов
Описанный концепт использования feature switcher-ов — это лишь один возможный случай использования и такие feature switcher-ы называются release toggles. Всего выделяют 3 разных вида feature switcher-ов:
Проблемы использования feature toggle-ов
Поскольку я работаю на проекте, где активно используются feature toggle-ы, то кроме очевидных достоинств их использования я начал замечать и проблемы, связанные с ними:
Решения некоторых из описанных проблем
Помочь решить вышеописанные проблемы могут следующие действия:
Итоги
Feature switcher — очень простой и одновременно мощный механизм, позволяющий избегать монструозных коммитов, легко менять поведения приложения или собирать несколько разных приложений на одной кодовой базе, используя разную конфигурацию feature toggle-ов.
Однако, стоит также помнить, что этот паттерн разработки имеет некоторые недостатки, которые выливаются в трудночитаемый и трудно поддерживаемый код, поэтому следует избегать чрезмерного использования этого паттерна и периодически проводить документирование feature switcher-ов и их ревизию, чтобы удалять неиспользуемые и, как следствие, очищать проект от “мёртвого” кода.
Что такое фича? Примеры для применения этого слова
Многие люди слышали выражение «это не баг, а фича». Что такое баг, знает большинство людей. Это ошибка, которую допустили программисты, но что за фича?
Судя по смысловой нагрузке, это что-то полезное, противоположное ошибке. Однако понять, что это конкретно очень сложно. К тому же это слово можно услышать в речи подростка или молодого человека, тогда понять значение становится еще сложнее.
В этой статье мы расскажем, что такое фича. Также предоставим примеры употребления этого слова.
Что такое фича в сленге
Что такое фича в программировании игр
Что такое фича в IT-сфере
Как отличить баг от фичи
Как использовать слово фича в обычной жизни
Как повысить уникальность текста
Что такое фича в сленге
Итак, вам стало интересно, что такое фича в сленге. Если вы услышали слово фича в речи своего ребенка или знакомого подростка, то он мог использовать его в определенном значении.
Например, в значениях «особенность, уникальная деталь, необычная вещь, неповторимая функция».
Слово фича может встречаться в таких предложениях:
«Фича этого банка в том, что он позволяет своим клиентам делать онлайн переводы без комиссии на карты других банков». Или фича данного мерча в том, что его можно не только в том, что его можно носить, но и использовать его в качестве светоотражателя в ночное время». В данном случае слово фича копирует значение своего синонима «фишка». Подставьте это слово на место первого, и смысл приложения не изменится.
Чтобы лучше понять, что такое фича, представьте себе эволюционную цепочку. Каждый новый скачок эволюции был проделан с помощью фичи. Например, появление легких у земноводных, приспособление к живорождению для сохранности потомства до его развития, прямая спина и обезьян для освобождения рук и т.д.
Однако часто слово фича относится к продуктам программистов, т.е. к играм, программам, сайтам и т.д. именно из этой сферы пришло сленговое слово в язык молодежи.
Давайте посмотрим, что такое фича в языке программистов.
Что такое фича в программировании игр
Большинство людей узнало, что такое фича только из мира игр. Игрокам часто попадаются баги, т.е. ошибки программистов, которые писали эту игру.
Например, в игре StarCraft от компании Blizzard была найдена ошибка. Моб Зергов, Муталиск, двигался в сторону атаки, когда должен был стоять на месте. Это был бы баг, если бы позже его не признали полезной функцией. Он казался в игре более живее и делал игру подвижной и насыщенной. Во второй части StarCraft этот баг стал фичей, т.е. ошибку уже допустили специально.
Таким образом, какая-либо ошибка в программировании может принести пользу, стать непредусмотренной полезной функцией.
Сейчас программисты часто используют выражение «не баг, а фича», хотя на самом деле это все-таки ошибка работника.
Что такое фича в IT-сфере
Помимо программирования распространение слову фича дала IT-сфера. Например, в социальной сети Телеграм шифрование стало фичей. А Клабхаус сделал свою фичу – регистрацию только по приглашению.
Чаще всего Айти встречаются с фичей при написании и использовании сайтов. Иногда сайт может обладать уникальной особенностью, например, стилем и размещением информации.
Иногда айтишники в первую очередь рассказывают про фичи, чтобы показать заказчику все особенности нового продукта.
Таким образом, что такое фича в IT? Это необычное дополнение к собственной разработке или продукту, чтобы сделать его уникальным.
Как использовать слова фича в жизни – примеры
Итак, давайте посмотрим, какие примеры можно использовать в своей речи со словом фича.
Итак, теперь вы можете строить предложения по аналогии с данным примером.
Как отличить баг от фичи
Чтобы отличить баг от фичи, нужно посмотреть на ее функцию. Если ошибка мешает играть, использовать продукт и т.д., то это, определенно, баг, который необходимо устранить как можно скорее.
Если это фича, то она не будет мешать. Наоборот, она может принести пользу. Например, даже пролитый кофе на рисунок профессионала может не испортить рисунок, а сделать его более загадочным и уникальным. Это приведет к повышению цены за картину.
Например, в игре Марио на первом уровне можно прыгать все время и наткнуться на невидимый грибочек, который даст дополнительную жизнь игроку. Такие невидимые встречаются во многих играх. Их можно обнаружить случайно или по намекам от разработчиков.
Таким образом, отличить баг от фичи очень легко. Если функция не приносит неприятностей пользователю, то это просто фича от разработчиков.
Как использовать слово фича в обычной жизни
Чтобы использовать слово фича в обычной жизни, вам нужно понять ключевой смысл этого слова. Это особенность какого-либо предмета, программы или живого существа. Это его уникальная черта.
Часто про новую фичу можно узнать, если начался хайп, т.е. новость предана огласке. Что такое хайп, мы рассказали в предыдущей статье
Поэтому вы можете использовать слово фича в любом предложении. Если хотите убедиться в том, что фича подходит по смыслу, для начала подставьте слово «фишка».
Как повысить уникальность текста
Наш сервис Killer-antiplagiat.ru помогает всем пройти проверку на антиплагиат. Для этого нужно только повысить уникальность текста до 80-90% за 1 минуту. Сделать это можно прямо сейчас. Сайт абсолютно автоматизирован, и вы сможете самостоятельно обработать ваш документ. Достаточно только добавить его на сервис и выбрать режим обработки.
Ваш текст при этом не изменится. Файл будет зашифрован, чтобы сервис поиска плагиата не смог найти заимствования. Поэтому вам не придется ничего делать самостоятельно.
Также мы можем за вас написать курсовую или дипломную работы. Сделать заказ вы можете в любое время суток. Оператор ответит вам в течение 1 минуты.
Вы сможете с первого раза пройти проверку на антиплагиат и сдать свою работу.
Итак, давайте подведем итог, что такое фича? Это уникальная черта программы, продукта, живого организма, которая приносит пользу и помогает. Фича может стать результатом ошибки, но при этом будет лишь особенностью, а не багом.
Не баг, а фича. Что это значит и откуда появилась эта фраза?
Велик и могуч язык программиста. Иногда этот язык наполнен таким количеством сленговых слов, что его трудно понять не то чтобы простым пользователям, а даже молодым и начинающим программистам. Сегодня мы разберем, что значит довольно популярное выражение : « Э то не баг, а это фича» и когда оно применяется.
«Не баг, а фича!»
Что так ое «баг» в программировании?
Это довольно частый вопрос, потому что слово «баг» не всегда связано с программированием. В программировании «баг» — это ошибка в программе или в приложении, которая приводит к тому, что программа или приложени е не работают как следует. Само слово «баг» происходит от английского слова «bug». По причине воздействия бага на программу мы получаем продукт, при работе которого происходит нежелательный конечный результат.
Баг имеет широкую градацию по способу собственного возникновения и влияния на конечный продукт. Сегодня мы не будем на этом останавливаться, отметим лишь, что все возникающие баги объединя ю т следующие свойства:
Что такое « фича » в программировании?
Фича в программировании — это некая новая функция или особенность программы, которая ранее не была о г оворена, но в результате не нарушает функциональность программы, а приносит какое-то дополнение в ее работу. Фича происходит от английского слова «feature». Ее цель — улучшить характеристики программы или просто привлечь внимание пользователей своей необычной функцией.
Понятие «фича» существует не только в программировании, оно уже часто употребляется и в обыденной жизни. К примеру, фичами в быту именуют нестандартные функции или дизайн какого-нибудь устройства.
Фича в программировании — это контролируемый результат, который создается специально руками программиста, чтобы улучшить разрабатываемую программу или просто удивить пользователей или заказчика. Фичи часто не нужно исправлять, потому что они очень органично приживаются с самой программой.
Мы можем предположить, что такое выражение может употребляться в качестве оправдания разработчика перед заказчиком, когда тот обнаружил баг в программе. Но часто это совсем не так.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Не пишем код целый месяц и нам нормально
Праздничные дни для Додо Пиццы — дни высокой нагрузки. К таким дням мы готовимся заранее и заводим специальные правила.
Самое жаркое время — в декабре: много корпоративов, заказы становятся больше, но и прибыль выше. Во многих городах плохая погода — где-то снег только выпал и дороги не расчищены, где-то очень холодно. Всё вместе это создаёт нагрузку и на IT, и на бизнес. От нагрузки может сломаться что угодно: то очередь задач переполнится, то печь выйдет из строя. Чтобы быть готовыми, мы регулярно проводим нагрузочные тестирования, повышаем закупки ингредиентов, распределяем заказы по пиццериям и много чего ещё.
Для мобильных разработчиков конец года раньше тоже был особенным: с 23 по 27 декабря App Store закрывался на рождественские праздники, приложения не проверялись, опубликовать что-то было невозможно.
Расскажу, как эти ограничения влияют на разработку, какие ошибки мы совершили в прошлые годы и что меняется в расписании. Возможно, что-то из практик пригодится и вам: подсветит риски, поможет договориться о код-фризе с бизнесом.
Опыт прошлых лет
Так получилось, что прошлые декабри проходили у нас довольно стрёмно. Например, пару лет назад мы делали конструктор комбо и зарелизили его в в начале декабря. Оказалось, что фреймворк Dip переполнился от количества связей в DI и приложение стало очень долго запускаться. На новых телефонах это не было заметно, а вот на стареньких iPhone 5 и 6 оно даже не успевало стартануть за 30 секунд!
Мы подозревали, что DI может сломаться, но не подозревали, что это произойдёт так внезапно. Переделать описание всех зависимостей перед последним релизом сулило ещё большие потери, чем могли быть в тот момент. Подробно рассказывали об этом в статье «Бардак на старте: постмортем на скорость запуска iOS-приложения».
На следующий год мы сделали вывод и в начале ноября вспомнили, что надо проверить ключевые показатели заранее. Увы, даже это оказалось поздно для бизнес-планирования: в начале декабря должен был выйти крупный релиз сразу от трёх команд:
в Сыктывкаре запускали заказ через приложение в ресторане, чтобы проверить бизнес-процессы. Отменить было нельзя, потому что маркетинг уже подготовил все активности;
в Великобритании для пиццерии нового формата сделали другой флоу выбора адреса;
начали оповещать пользователя о высокой нагрузке на пиццерию и предлагали сделать отложенный заказ. Фича хорошая — помогает бизнес-процессам и снижает негатив клиентов. Плохо было только то, что выпускали её в середине декабря — к этому времени она была очень нужна и был только один шанс зарелизить. Если в тестировании на продакшене оказалось бы, что в процессах пиццерии что-то идёт не так, то поправить уже ничего не смогли бы.
Вроде бы изменения точечные и касались региональных тестов, но поздний запуск сыграл против нас.
Во-первых, выяснилось, что пиццерия в Сыктывкаре находится в подвале и там плохо ловит связь, поэтому нужно было срочно менять способ загрузки изображений, экономить трафик и переходить с JPEG на более современный формат, что влияет сразу на все приложения. Без этого тестировать в ресторане нечего, приложение у людей совсем не показывает картинки и они не делают заказы.
Во-вторых, флоу Великибритании сильно влияет на старт приложения, хитро переиспользует существующие фреймворки, из-за скорости разработки решение получилось запутанным, в январе пришлось переписывать.
В третьих, визуализация нагрузки на пиццерию была написана в спешке и покрывала лишь самый простой случай, поэтому наше решение задачу решало лишь частично.
В итоге тот релиз вышел не очень стабильный и в декабре мы выпустили аж три хотфикса, а потом ещё в январе доделывали и рефакторили.
Стало понятно, что начало ноября — слишком поздно для планирования. Про Новый год нужно думать в конце сентября, до начала четвёртого квартала.
Планируем даты и размер релизов. Релиз-фриз
Давайте посмотрим на календарь и поймём, какие критичные даты у нас есть. Начнём с конца декабря.
С 23 по 27 декабря нельзя релизить приложения в App Store, в Америке рождество. Apple заранее рассылала письма и предупреждала, что сроки сдвинутся. Для многих компаний Новый год — важное время, все хотят закончить свои задачи, а это значит, что неполная неделя с 20 по 23 будет сложной для ревьюверов и время на ревью может увеличиться.
В этом году Apple перестала уходить на рождественские каникулы, тем не менее, ревью может быть медленнее обычного.
Это не изменило наши планы, нагрузка на пиццерии не зависит от Apple, но напряжение от сроков стало меньше.
По статистике, каждый наш релиз требует хотя бы одного хотфикса. Значит, нужно на неделе с 13 до 15 декабря сделать последний релиз, чтобы успеть исправить, если что-то пойдёт не так.
Проблема не только в том, что мы иногда косячим, но и в том, что в мобильной разработке релизы катятся медленно и фидбэк с продакшена может прийти слишком поздно:
если релиз раскатывается постепенно, то за неделю получим обновление у 40% людей;
если релиз был открыт на 100%, то за неделю приложение обновится лишь у 70% людей;
через месяц обновятся только 90%, а оставшиеся 10% растянуты на годы, хвост старых версий очень долгий.
Получается, что если мы хотим к Новому году закончить фичу и сразу запустить рекламу на неё, то, чтобы не нагружать саппорт вопросами «почему у меня нет такого функционала?», стоит раскатить нужный функционал хотя бы за 2-3 недели до запуска и спрятать его за фича-тоглом до нужного момента.
С другой стороны, если столкнёмся с проблемой, то остановить релиз тоже не получится: приходят новые пользователи и они всегда получают последнюю версию, даже если в ней есть проблемы.
Есть и другие причины отодвинуть релизы подальше от конца декабря и праздников в январе:
некоторые баги воспроизводятся только в редких ситуациях, за полторы недели пользователи достаточно повзаимодействуют с системой, чтобы можно было считать, что все критичные редко встречающиеся баги всплывут и будут исправлены до Нового года;
некоторые проблемы с надёжностью могут иметь накопительный эффект и стрельнуть только при длительной работе под нагрузкой или без перезапуска




