¿Qué es un 'Alternador de bandera de funciones' y cuándo usarlos (o no)?

17

Hay algunas preguntas sobre feature flag toggles, como:

Preguntas :

  • ¿Qué es en realidad un "alternar indicador de función" (en el contexto de DevOps)?
  • ¿Por qué se usan?
Pierre.Vriens
fuente
3
Información de referencia, no una respuesta directa - martinfowler.com/articles/feature-toggles.html
Ken Mugrage
1
Sé que "preguntar" sobre explicaciones de voto negativo no es comúnmente aceptado. Pero quien rechazó esta pregunta de forma anónima, solo sé que para mí esos votos negativos no valen nada, ya que estos votos negativos son baratos (el votante no pierde -1 por hacerlo). Sin embargo, las votaciones anónimas negativas de las respuestas son diferentes ... tal
votante negativo
2
Y realmente me encantaría saber por qué alguien sintió que esta pregunta debería cerrarse debido a "demasiado amplia", cuando esta es una gran pregunta que merece buenas respuestas.
Evgeny
Merci @Evgeny, parece que estamos en la misma página ... pero ¿has notado que se ha retirado 1 voto cercano? Posiblemente debido a mi edición más reciente.
Pierre.Vriens

Respuestas:

13

Sin repetir el contenido de https://martinfowler.com/articles/feature-toggles.html , ya que es una explicación en profundidad sorprendente sobre qué alternan las banderas de funciones. Solo me enfocaré en los aspectos de DevOps.

Según el Informe sobre el estado de DevOps de 2014 preparado por PuppetLabs, existen cuatro métricas principales para medir el rendimiento de TI:

  • Plazo de entrega para los cambios
  • Frecuencia de lanzamiento
  • Hora de restaurar el servicio
  • Cambiar tasa de falla

Estos también contribuyen al desempeño organizacional en general. Por lo tanto, significa que si a su TI le está yendo muy bien en estas métricas, su resultado final obtiene más $$$.

La entrega continua está habilitada por estas métricas, y se ha descrito en profundidad en el libro Entrega continua: lanzamientos confiables de software a través de la automatización de la compilación, prueba e implementación de Jez Humble.

En el contexto de la entrega continua , hay una distinción importante que lo diferencia de la implementación continua . Y esa es la decisión de cuándo hacer una versión de funciones (para los clientes).

Mantener cambios más pequeños en tamaño, y el despliegue (copiar código) características a medias a los sistemas de producción con una bandera característica activarse fuera permite acortar el tiempo de entrega para los cambios .

Cuando las características finalmente están terminadas, hacer un lanzamiento es una decisión que le queda al negocio. Tal vez una versión de una nueva función debe estar alineada con algún marketing, o una versión en otra parte del negocio, como una función en la aplicación móvil.

Las funciones se pueden lanzar utilizando experimentos A / B solo a una parte de la base de clientes, o a personas específicas, o incluso directamente a disponibilidad general (GA). Aunque la liberación a GA a menudo se realiza solo después de que haya suficiente certeza de que la función funciona como se esperaba. Uno podría argumentar que esto en efecto afecta que la frecuencia de liberación sea ​​mayor.

Este desacoplamiento de la liberación y la implementación es casi imposible de lograr sin alternar el indicador de características.

Naturalmente, cuando no se requiere un despliegue para cambiar una característica fuera , entonces el tiempo para restablecer el servicio se reduce sustancialmente.

Y mediante el uso de indicadores de características que lanzan características a una pequeña porción de la base de clientes, la métrica de tasa de falla de cambio también se puede mejorar significativamente.


Por lo tanto, un mecanismo simple denominado alternancia de indicador de característica permite un rendimiento de TI mucho mejor y, a su vez, mejora el rendimiento general de la organización.

Un gran ejemplo de cómo se hace esto en compañías reales se puede encontrar en Flickr (una de las primeras publicaciones públicas sobre el tema) y en Etsy . Pero muchos otros adoptaron la práctica y hablaron sobre ella en profundidad, por ejemplo, la famosa cultura de ingeniería en los videos de Spotify .

Etsy está mostrando su herramienta interna para administrar indicadores de funciones , llamada Catapult, en múltiples presentaciones que se encuentran en la web. Y Intuit lanzó una herramienta de código abierto llamada Wasabi que ayuda a administrar las banderas de características.

Evgeny
fuente
Merci para esta respuesta interesante / elaborada ... Sin embargo, solo 2 cosas: el artículo vinculado trata sobre "Alternar funciones", no "Alternar banderas de funciones" (como escribió en su primer párrafo). ¿Estarías de acuerdo en que son sinónimos? Si no, ¿cuál es la diferencia? Además: ¿qué son los "experimentos A / B" (A = Después y B = Antes? Probablemente no ...).
Pierre.Vriens
1
Estoy de acuerdo en que estos son sinónimos. Simplemente prefiero tratar de ser claro sobre el nombre, por lo que no hay ambigüedad. Creo que "qué son los experimentos a / b" es una cuestión propia ... pero la respuesta corta es que son dos variaciones que se miden entre sí, como en el enlace "Etsy mostrando". O explicado en en.wikipedia.org/wiki/A/B_testing
Evgeny
OK, ese es el toque final que estaba esperando / esperando, así que "acepta".
Pierre.Vriens
@ Pierre.Vriens "También: ¿qué son los" experimentos A / B "(A = Después y B = Antes?" - probablemente pueda preguntar eso en este sitio súper genial DevOps SE;)
Dan Cornilescu
1

Ken Mugrage publicó un comentario interesante debajo de mi pregunta, con un enlace a una explicación iluminadora de " Alternar función ", con un resumen de la siguiente manera:

Las funciones de alternancia son una técnica poderosa que permite a los equipos modificar el comportamiento del sistema sin cambiar el código. Se dividen en varias categorías de uso, y es importante tener en cuenta esa categorización al implementar y administrar alternar. Las palancas introducen complejidad. Podemos mantener esa complejidad bajo control mediante el uso de prácticas de implementación de alternancia inteligente y herramientas apropiadas para administrar nuestra configuración de alternancia, pero también debemos tratar de limitar la cantidad de alternancias en nuestro sistema.

El resumen anterior no solo ayuda a comprender de qué se trata, sino que también contiene algunos ejemplos que explican por qué se usan . Y después de digerirlo un poco más, parece que "Feature Toggles" y "Feature Flag Toggles" son prácticamente un sinónimo entre sí.

Pero, la solución (respuesta) al problema (pregunta), cambia el problema ... uno podría hacer preguntas relacionadas como:

  • ¿Cuáles son las ventajas y desventajas de usarlos? Es un concepto poderoso, pero también aterrador si no se usa sabiamente (y se asegura adecuadamente) ...
  • ¿Cuáles podrían ser algunos ejemplos (buenos y malos) donde se usan? Puedo pensar en algunos de ellos, algunos de ellos los he utilizado hace bastante tiempo (incluso antes de que DevOps fuera una cosa).
Pierre.Vriens
fuente