Articulo de referencia

Alternar función

En el desarrollo de software, un interruptor de características ofrece una alternativa al mantenimiento de múltiples ramas de características en el código fuente . Una condición...

En el desarrollo de software, un interruptor de características ofrece una alternativa al mantenimiento de múltiples ramas de características en el código fuente . Una condición dentro del código habilita o deshabilita una característica durante la ejecución . En entornos ágiles, el interruptor se utiliza en producción para activar la característica bajo demanda, para algunos o todos los usuarios. Por lo tanto, los interruptores de características facilitan las versiones frecuentes. Las estrategias de despliegue avanzadas, como el despliegue canary y las pruebas A/B, son más fáciles de gestionar. [ 1 ] [ 2 ]

La entrega continua se apoya en los interruptores de características, incluso si las nuevas versiones no se implementan en producción de forma continua . La característica se integra en la rama principal incluso antes de estar completa. La versión se implementa una vez en un entorno de prueba, el interruptor permite activar la característica y probarla . Los ciclos de integración de software se acortan y se puede proporcionar una versión lista para producción. [ 3 ]

El tercer uso de la técnica consiste en permitir a los desarrolladores lanzar una versión de un producto con funcionalidades incompletas. Estas funcionalidades incompletas se ocultan (se activan/desactivan) para que no aparezcan en la interfaz de usuario . Se reduce el esfuerzo necesario para integrar y extraer funcionalidades de la rama de producción, lo que permite crear muchas versiones incrementales pequeñas del software . [ 4 ]

Un interruptor de función también se denomina interruptor de función , bandera de función , puerta de función , flipper de función o función condicional .

Implementación

Los interruptores de características son esencialmente variables que se utilizan dentro de sentencias condicionales . Por lo tanto, los bloques dentro de estas sentencias condicionales se pueden activar o desactivar según el valor del interruptor de características. Esto permite a los desarrolladores controlar el flujo de su software y omitir características que no están listas para su implementación. Un bloque de código detrás de una variable de tiempo de ejecución generalmente sigue presente y se puede ejecutar condicionalmente, a veces dentro del mismo ciclo de vida de la aplicación; un bloque de código detrás de una directiva de preprocesador o comentado no sería ejecutable. Un enfoque de indicadores de características podría utilizar cualquiera de estos métodos para separar rutas de código en diferentes fases de desarrollo.

El uso principal de los interruptores de características es evitar conflictos que pueden surgir al fusionar cambios en el software en el último momento antes del lanzamiento, aunque esto puede generar deuda de interruptores . La deuda de interruptores surge debido al código muerto presente en el software después de que una característica se ha activado permanentemente y produce sobrecarga. Esta parte del código debe eliminarse cuidadosamente para no afectar otras partes del código.

Gestión y mantenimiento

Los interruptores de características generalmente requieren una gestión del ciclo de vida que va más allá de las sentencias condicionales utilizadas para implementarlos. Un estudio de material de profesionales y desarrolladores de 38 empresas identificó 17 prácticas para el uso de interruptores de características, agrupadas en prácticas de gestión, inicialización, implementación y limpieza. Las prácticas reportadas comúnmente incluyeron el registro de metadatos para cada interruptor, la definición de un valor predeterminado, el registro de los cambios realizados en los interruptores y el uso de herramientas específicas para gestionarlos. [ 5 ]

Una investigación sobre Google Chrome reveló que los interruptores de características pueden facilitar lanzamientos rápidos, desarrollo basado en la rama principal y pruebas A/B, pero también requieren mantenimiento adicional cuando permanecen en el código fuente durante largos períodos. [ 6 ] Trabajos posteriores sobre la estructura de los interruptores de características también señalaron que estos pueden aumentar la complejidad del código, introducir código muerto y reducir la mantenibilidad si no se eliminan u organizan una vez que su propósito ha finalizado. [ 7 ]

Existen dos tipos principales de interruptores de funcionalidad. Uno es el interruptor de lanzamiento, que el desarrollador decide mantener o eliminar antes del lanzamiento del producto según su funcionamiento. El otro es el interruptor de negocio, que se mantiene porque satisface una necesidad diferente a la del código anterior.

Los interruptores de funciones se pueden utilizar en los siguientes escenarios: [ 1 ]

  • Agregar una nueva función a una aplicación.
  • Mejorar una función existente en una aplicación.
  • Ocultar o deshabilitar una función.
  • Ampliación de una interfaz.

Los interruptores de funciones se pueden almacenar como: [ 8 ]

  • Entradas de filas en una base de datos
  • Una propiedad en un archivo de configuración
  • Una entrada en un servicio externo de indicadores de características.

Grupos de características

Los grupos de características constan de interruptores de características que funcionan conjuntamente. Esto permite al desarrollador gestionar fácilmente un conjunto de interruptores relacionados. [ 9 ]

Lanzamiento de canario

Un lanzamiento canario (o implementación canaria) permite a los desarrolladores probar las funcionalidades de forma incremental con un pequeño grupo de usuarios. Las banderas de funcionalidad son una forma alternativa de realizar lanzamientos canarios [ 10 ] y permiten la segmentación por ubicación geográfica o incluso atributos de usuario. [ 11 ] Si el rendimiento de una funcionalidad no es satisfactorio, se puede revertir sin efectos adversos. [ 12 ] Su nombre proviene del uso de canarios para advertir a los mineros sobre gases tóxicos .

Adopción

Martin Fowler afirma que un interruptor de lanzamiento, un tipo específico de interruptor de características, "debería ser la última opción cuando se trata de implementar características en producción". En cambio, lo mejor es dividir la característica en partes más pequeñas que puedan implementarse e introducirse de forma segura en el producto lanzado sin causar otros problemas. [ 2 ]

La alternancia de funciones es utilizada por muchos sitios web grandes, incluidos Flickr, [ 13 ] Disqus, [ 14 ] Etsy, [ 15 ] Reddit, [ 16 ] Gmail [ 17 ] y Netflix, [ 18 ] así como software como Google Chrome Canary o Microsoft Office. [ 19 ]

Véase también

Referencias

  1. 1 2 "ALM Rangers - Desarrollo de software con interruptores de características" . msdn.microsoft.com . Julio de 2015.
  2. 1 2 Martin Fowler (29 de octubre de 2010). "FeatureFlag" . Martinfowler.com . Recuperado el 6 de marzo de 2026 .
  3. Cómo GitHub aprovecha las banderas de características para realizar envíos de forma rápida y segura , infoq, 09/05/2021.
  4. Programación de aplicaciones JavaScript . Archivado del original el 15/09/2016 . Consultado el 14/09/2016 .
  5. Mahdavi-Hezaveh, Rezvan; Dremann, Jacob; Williams, Laurie (2021). "Desarrollo de software con interruptores de características: prácticas utilizadas por profesionales". Ingeniería de software empírica . 26 (1). doi : 10.1007/s10664-020-09901-z .
  6. Rahman, Md Tajmilur; Querel, Louis-Philippe; Rigby, Peter C.; Adams, Bram (2016). Feature toggles: practitioner practices and a case study . Proceedings of the 13th International Conference on Mining Software Repositories. ACM. pp. 201– 211. doi : 10.1145/2901739.2901745 . 
  7. Mahdavi-Hezaveh, Rezvan; Ajmeri, Nirav; Grundy, John; Williams, Laurie (2022). "Heurísticas y métricas para estructurar conmutadores de características". Information and Software Technology . doi : 10.1016/j.infsof.2021.106804 .
  8. Echagüe, Pato (2014). Gestión de indicadores de funciones . Medios O'Reilly. ISBN 9781492028598.
  9. Elliot, Eric (2018). Programación de aplicaciones JavaScript . O'Reilly Media.
  10. "Cómo realizar una entrega progresiva (Canary Release) con ConfigCat | Blog de ConfigCat" . configcat.com . 9 de febrero de 2022. Consultado el 22 de diciembre de 2022 .
  11. "Pruebas Canary: uso de implementaciones azul-verde y banderas de características" . unlaunch.io . 26 de febrero de 2021. Consultado el 14 de agosto de 2021 .
  12. "Lanzamientos canario: cómo y por qué realizar un lanzamiento canario" . launchdarkly.com . 7 de abril de 2015. Consultado el 9 de enero de 2017 .
  13. Harmes, Ross. "Flipping Out - code.flickr.com" . flickr.net . Consultado el 9 de enero de 2017 .
  14. dcramer (9 de julio de 2010). "Implementación parcial con conmutadores de características" . Archivado del original el 5 de noviembre de 2013. Recuperado el 10 de octubre de 2013 .
  15. "¿Cómo gestiona Etsy el desarrollo y las operaciones?" . codeascraft.com . 4 de febrero de 2011 . Consultado el 9 de enero de 2017 .
  16. "reddit/reddit" . github.com . Consultado el 9 de enero de 2017 .
  17. "Desarrollando el nuevo aspecto de Gmail" . googleblog.com . Consultado el 9 de enero de 2017 .
  18. "Preparando la API de Netflix para su implementación" . netflix.com . Consultado el 9 de enero de 2017 .
  19. Wolfe, Mike (30 de mayo de 2022). "Office FeatureGates: Cómo Microsoft puede romper y arreglar sus aplicaciones en menos de 24 horas" . nolongerset.com . Recuperado el 27 de agosto de 2024 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Feature_toggle&oldid=1357224855 "