stringtranslate.com

Alternar función

En el desarrollo de software, la alternancia de funciones proporciona una alternativa para mantener múltiples ramas de funciones en el código fuente . Una condición dentro del código habilita o deshabilita una función durante el tiempo de ejecución . En entornos ágiles, la alternancia se utiliza en producción para activar la función a pedido para algunos o todos los usuarios. Por lo tanto, la alternancia de funciones facilita la publicación frecuente. Las estrategias de implementación avanzadas, como la implementación de canary y las pruebas A/B, son más fáciles de manejar. [1] [2]

La entrega continua se ve respaldada por la activación de funciones, incluso si no se implementan nuevas versiones en producción de forma continua . La función se integra en la rama principal incluso antes de que se complete. La versión se implementa en un entorno de prueba una vez, la activación permite activar la función y probarla . Los ciclos de integración de software se acortan y se puede proporcionar una versión lista para entrar en producción. [3]

El tercer uso de la técnica es permitir a los desarrolladores lanzar una versión de un producto que tiene características inacabadas. Estas características inacabadas se ocultan (se alternan) para que no aparezcan en la interfaz de usuario . Hay menos esfuerzo para fusionar características dentro y fuera de la rama productiva y, por lo tanto, permite muchas versiones pequeñas e incrementales del software . [4]

Un cambio de característica también se denomina interruptor de característica , indicador de característica , compuerta de característica , inversor de característica o característica condicional .

Implementación

Los conmutadores de funciones son esencialmente variables que se utilizan dentro de las declaraciones condicionales . Por lo tanto, los bloques dentro de estas declaraciones condicionales se pueden activar o desactivar según el valor del conmutador de funciones. Esto permite a los desarrolladores controlar el flujo de su software y omitir funciones 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 todavía está 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 funciones podría utilizar cualquiera de estos métodos para separar las rutas de código en diferentes fases de desarrollo.

El uso principal de los conmutadores de funciones es evitar conflictos que pueden surgir al fusionar cambios en el software en el último momento antes del lanzamiento, aunque esto puede generar una deuda de conmutadores . La deuda de conmutadores surge debido al código inactivo presente en el software después de que una función se ha activado de forma permanente y produce sobrecarga. Esta parte del código debe eliminarse con cuidado para no afectar a otras partes del código.

Existen dos tipos principales de alternancia de funciones. Una es la alternancia de lanzamiento, que el desarrollador decide conservar o eliminar antes del lanzamiento de un producto según su funcionamiento. La otra es la alternancia de negocios, que se conserva porque satisface un uso diferente al del código anterior.

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

Los conmutadores de funciones se pueden almacenar como: [5]

Grupos de funciones

Los grupos de funciones están compuestos por conmutadores de funciones que funcionan juntos. Esto permite al desarrollador administrar fácilmente un conjunto de conmutadores relacionados. [6]

Liberación de Canarias

Un lanzamiento canario (o lanzamiento canario o implementación canaria) permite a los desarrolladores que un pequeño grupo de desarrolladores pruebe las características de forma incremental. Los indicadores de características son una forma alternativa de realizar lanzamientos canarios [7] y permiten la segmentación por ubicaciones geográficas o incluso atributos de usuario. [8] Si el rendimiento de una característica no es satisfactorio, se puede revertir sin efectos adversos. [9] Su nombre se debe al uso de canarios para advertir a los mineros sobre gases tóxicos ( canario del minero ).

Adopción

Martin Fowler afirma que la alternancia de funciones "debería ser la última opción cuando se trata de poner funciones en producción". En cambio, es mejor dividir la función en partes más pequeñas que puedan implementarse e introducirse de forma segura en el producto lanzado sin causar otros problemas. [2]

Muchos sitios web grandes, incluidos Flickr, [10] Disqus, [11] Etsy, [12] Reddit, [13] Gmail [14] y Netflix, [15] así como también software como Google Chrome Canary o Microsoft Office, utilizan la alternancia de funciones. [16]

Véase también

Referencias

  1. ^ ab "ALM Rangers - Desarrollo de software con alternancia de funciones". msdn.microsoft.com .
  2. ^ por Martin Fowler 29 de octubre de 2010 (2010-10-29). "FeatureToggle". Martinfowler.com . Consultado el 27 de septiembre de 2013 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  3. ^ Cómo GitHub aprovecha las banderas de características para realizar envíos de forma rápida y segura, infoq, 2021-05-09.
  4. ^ Programación de aplicaciones JavaScript. Archivado desde el original el 15 de septiembre de 2016. Consultado el 14 de septiembre de 2016 .
  5. ^ Echagüe, Pato (2014). Gestión de indicadores de funciones . Medios O'Reilly. ISBN 9781492028598.
  6. ^ Elliot, Eric (2018). Programación de aplicaciones JavaScript . O'Reilly Media.
  7. ^ "Cómo realizar la versión Canary/Entrega progresiva con ConfigCat | Blog de ConfigCat". configcat.com . 2022-02-09 . Consultado el 2022-12-22 .
  8. ^ "Pruebas Canary: uso de implementaciones Blue-Green y marcas de características". unlaunch.io . 26 de febrero de 2021 . Consultado el 14 de agosto de 2021 .
  9. ^ "Lanzamientos de Canary: cómo y por qué realizar lanzamientos de Canary". launchdarkly.com . 7 de abril de 2015 . Consultado el 9 de enero de 2017 .
  10. ^ Harmes, Ross. "Flipping Out - code.flickr.com". flickr.net . Consultado el 9 de enero de 2017 .
  11. ^ dcramer (9 de julio de 2010). "Implementación parcial con cambios de funciones". Archivado desde el original el 5 de noviembre de 2013. Consultado el 10 de octubre de 2013 .
  12. ^ "¿Cómo gestiona Etsy el desarrollo y las operaciones?". codeascraft.com . 4 de febrero de 2011. Consultado el 9 de enero de 2017 .
  13. ^ "reddit/reddit". github.com . Consultado el 9 de enero de 2017 .
  14. ^ "Desarrollo de la nueva apariencia de Gmail". googleblog.com . Consultado el 9 de enero de 2017 .
  15. ^ "Preparación de la API de Netflix para su implementación". netflix.com . Consultado el 9 de enero de 2017 .
  16. ^ Wolfe, Mike (30 de mayo de 2022). "Office FeatureGates: cómo Microsoft puede romper y reparar sus aplicaciones en menos de 24 horas". nolongerset.com . Consultado el 27 de agosto de 2024 .