Qué son las feature flags?

08 Jul 2022 10 min (0) Comentarios

Cuando desarrollamos software, y hacemos y hacemos funcionalidades que llevan mucho tiempo desarrollar no lo hacemos en un branch aparte y cuando esta finalizada la juntamos con el resto del código, sino que la hacemos poco a poco y el código está siempre junto al código principal, pero claro es código no finalizado, entonces, cómo lo hacemos para no romper la aplicación? 

 



1 - Qué son las feature flags?

Las feature flags (también llamadas feature toggle) es una técnica que nos permite seleccionar funcionalidad en tiempo de ejecución sin tener que volver a desplegar el código.

Por supuesto ambas partes de código deben estar desplegadas junto con la aplicación. Y lo que hacemos con dicha funcionalidad es elegir que parte del código ejecutamos.

 

Por ejemplo, tenemos un sistema que envía información por FTP a otra parte de nuestro sistema. Y esa parte de nuestro sistema que recibe la información ha implementado una funcionalidad para recibir información por HTTP (API REST) en vez de por FTP.

Pues en la aplicación que envía la información tenemos ambos flujos de trabajo, y si tenemos la feature activada iremos por uno, mientras que si tenemos la feature desactivada iremos por el viejo. 

feature flags descripción

Nota: hay que tener en cuenta que las feature flags nos habilitan dos funcionamientos a la vez, lo que quiere decir que tenemos dos workflows que mantener, lo que a la larga se traduce en una mayor complejidad si las dejamos ahí en el olvido. 

 

1.1 Que no es una feature flag?

Configuración. Hay empresas que utilizan las feature flags para configurar cómo funciona cierto cliente, las flags no están pensadas para esta funcionalidad, para ello tienes configuraciones. 



2 - Casos de uso de la feature flags

Hay bastantes casos de uso pero los más comunes son los siguientes

 

2.1 - Desarrollo continuo 

Debido a como funcionan las feature flags, podemos desarrollar funcionalidades de forma continuada, porque hasta que dicha funcionalidad no esté terminada no va a ser utilizada, debido a que dicha feature flag estará desactivada. 

 

Esto nos permite desarrollar las funcionalidades a cachos sin preocuparnos por tener que crear un branch para esa funcionalidad y luego hacer el merge con todo lo que ello conlleva y los posibles conflictos. 

 

2.2 - Migraciones

Vas desarrollando una aplicación en la cual vas a migrar de un caso de uso a otro, como por ejemplo de mandar los elementos por FTP a HTTP; Tienes ambos workflows en el sistema, y habilitas la Feature Flag, en caso de que algo vaya mal, simplemente la desactivas y todo vuelve a funcionar como antes. 

 

Mientras tanto el equipo se preocupa de arreglar el problema. 

 

2.3 - Tests A/B

Similar al caso anterior, pero esta vez tenemos ambos funcionando durante un tiempo y monitorizamos el comportamiento de los mismos y comparamos para elegir cual sería la mejor opción. 

Lo mismo aplica para el front end y la conversión, por ejemplo el A/B testing que no tiene YouTube con las miniaturas.



3 -  Beneficios de las feature flags

Como habrás podido observar en el punto anterior el gran beneficio de las feature flags es que nos permite cambiar el código y desplegarlo a producción sin preocuparnos demasiado que nuestro cambio esté perfecto, ya que si falla, únicamente tenemos que darle a un botón para volver al workflow anterior o limitar funcionalidad (en caso de AB testing.

 

Algunos servicios de feature flags permiten añadir información a la request, por ejemplo el cliente, lo que permite que ciertas funcionalidades funcionen solo para un cliente durante un tiempo especificado, por ejemplo, cierta Feature Flag solo está activada para un cliente por dos semanas, si todo va bien, la activamos para todos y una vez pasa un periodo de prudencia quitamos de la feature flag para tener en el código únicamente el nuevo flujo de trabajo.



4 - Implementar feature flags

A la hora de implementar las feature toggles muy sencillo, lo único que necesitas en código es abstraer la lógica para llamar al servicio correspondiente. Este servicio puede ser una simple base de datos. 

 

Pero yo personalmente recomiendo utilizar un servicio de terceros. 

Ya bien sea LaunchDarkly, ConfigCat or Unleash, que es el que yo recomiendo porque el que es su CEO y Co-fundador en su día fue mi manager, así que un poco de publicidad no viene mal. 

 

Lo importante si eliges un servicio de terceros es que tenga un SDK para el lenguaje de programación que utilizas. 

 


Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2024 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café