¿Qué son las banderas de características y por qué son importantes?

Piense en las banderas de características como la forma de hacer algo muy simple pero poderoso: despliegues de código separados de despliegues de características, también conocidos como ‘despliegues controlados’ ‘. En pocas palabras, es la capacidad de impulsar los compromisos de su característica a la producción al tiempo que elige quién entre sus clientes, si es que hay alguien, puede ver esa característica. Adoptar esta idea simple sienta las bases para muchas de las prácticas innovadoras de los mejores equipos de ingeniería actuales, que incluyen:

Implementación / entrega continua : múltiples impulsos de código a la producción en un día.

Desarrollo de troncales : no debe haber ramas de características; en cambio, la ramificación es solo para soportar revisiones de código incrementales

No más trenes de lanzamiento : generalmente se atascan en la preproducción y ralentizan las cosas

Pruebas de control de calidad / rendimiento en producción: las pruebas de control de calidad y rendimiento reales se realizan en la infraestructura de producción con tráfico de producción. No pierda el tiempo construyendo amplios laboratorios de rendimiento y entornos de ensayo.

Experimentación : sepa cómo una nueva función mueve la aguja en sus KPI.

Evitar las revisiones o las reversiones de código cuando ocurren problemas : tanto las revisiones como las reversiones de código son estresantes, toman mucho tiempo y generan más problemas de los necesarios. En cambio, redirija a sus clientes a la experiencia predeterminada sin esa característica mientras descubre el problema y una solución.

Las bibliotecas de código abierto ayudan con el marcado de características básicas. Servicios como Split le brindan una solución completa de implementación controlada. Yo trabajo para Split.

Las banderas de características son básicamente ‘ifs’ en su código, que se basan en alguna verificación de configuración si se debe ejecutar la ruta de código dada.

El valor booleano del indicador se puede basar en diferentes condiciones, desde un simple archivo de configuración yaml, a través de una tabla de base de datos con el estado de la función hasta verificar si el usuario dado que mira el sitio es parte de su grupo de prueba para la función.

Las banderas de características también se pueden usar para manejar su flujo de desarrollo: los programadores pueden agregar código a la aplicación que no se ejecutará hasta que esté listo, ya que está protegido por la bandera. A veces, este enfoque se muestra como una alternativa al uso de ramas de características. Más sobre eso aquí:
Altibajos del flujo de solicitud de extracción – parte 1
Altibajos del flujo de solicitud de extracción – parte 2

Las banderas de características son una práctica recomendada de desarrollo de software para la funcionalidad de compuerta. La funcionalidad se puede desplegar “apagado”, luego se enciende mediante el indicador de función, separado del despliegue. Se pueden pasar condiciones más sofisticadas junto con el indicador de función, lo que permite la implementación en segmentos muy específicos, como “10% de usuarios”, o “solo personas en China” o “nadie en TechCrunch”, hasta el nivel de usuario específico. Las banderas de características son importantes para separar la implementación del código de la implementación del código. Una vez que las banderas de características están en su lugar, es posible tener un control detallado de su aplicación. Con las banderas de funciones puede administrar todo el ciclo de vida de una función:

  1. Ejecute programas beta en su aplicación en vivo incluyendo explícitamente a las personas que desea ver una nueva característica que lanza @Canary: cómo y por qué lanzar Canary
  2. Apague rápidamente una función de bajo rendimiento
  3. Permitir a los usuarios optar por el acceso temprano a nuevas funciones
  4. Realice implementaciones por fases en porcentajes de sus usuarios para verificar que no haya problemas de escalabilidad. Medición del rendimiento de las nuevas características de la aplicación con LaunchDarkly
  5. Proteja las funciones de los usuarios excluyéndolas para que nunca las vean, por ejemplo, excluyendo a cualquier persona de TechCrunch de ver nuevas funciones
  6. Ejecute pruebas a / b de características para ver cuál funciona mejor Ejecutar una prueba A / B · LaunchDarkly
  7. Controle los planes de suscripción agrupando indicadores de características en planes
  8. Muestra a los usuarios expertos y usuarios principiantes diferentes funciones por completo
  9. Ponga porciones (o toda su aplicación) en modo de mantenimiento @How LaunchDarkly usa banderas de características para modos de mantenimiento continuo
  10. Limpiamente puesta de sol características antiguas, sin usar

Más información sobre las banderas de características aquí: página en launchdarkly.com

More Interesting

¿Qué quiere decir Alan Kay con 'negociar significado' entre 2 servidores de comunicación? (oponiéndose explícitamente al concepto de API)

¿Cuáles son los pros y los contras de la ingeniería eléctrica, mecánica y de software?

¿Cuáles son algunos conceptos avanzados en programación que la mayoría de los programadores promedio nunca han escuchado?

¿Cuáles son algunos consejos para un ingeniero de software que se muda de Silicon Valley a Berlín?

¿Cuál es la pila tecnológica de SurveyMonkey?

¿Cuánto debe equilibrar un desarrollador sénior entretenidas ideas ingenuas para desarrolladores junior en lugar de dictar cómo deben hacerse las cosas?

¿Es útil el modelo en cascada en el desarrollo de excelentes aplicaciones de software? ¿Si es así, cómo?

¿Cuáles son algunas características que son aparentemente buenas y bastante intuitivas pero que nunca se enviaron porque tuvieron un impacto negativo o nulo en las métricas en comparación con la línea de base durante las pruebas A / B?

¿Cómo se puede reducir y gestionar la complejidad del software?

¿Cuál es la diferencia en las oportunidades profesionales entre los 2 cursos: ingeniería de software y bioinformática?

¿Cómo comenzó la cultura de oncall en la industria del software?

¿Qué cosas debo tener en cuenta al elegir una empresa de pruebas de software?

¿Cuál es la definición de. ¿Sitio web que se basa en una red de API o servicios más pequeños en comparación con un solo servicio grande?

¿Realmente necesito experiencia en desarrollo para solicitar trabajos de QA en Google?

¿Cómo se puede convertir un software independiente en oferta saas / cloud?