Mantén la calma y despliégalo: Creando lanzamientos más seguros con Feature Flags

Rate this content
Bookmark

Crear y desplegar nuevo software conlleva riesgos. Todos hemos visto cómo surgen fácilmente errores, lo que provoca que el software se entregue de manera deficiente o a las personas equivocadas. Además, dependiendo de cuán estrechamente acoplemos nuestros sistemas y servicios, pueden interactuar de manera inesperada y desafortunada con el software o hardware existente. Más allá de las consecuencias no deseadas, también podemos descubrir que las personas pueden utilizar nuestros servicios con fines nefastos. Es esencial tener redes de seguridad en su lugar cuando las cosas no salen según lo planeado o cuando las personas intentan romper las reglas. En esta sesión, discutiremos cómo los feature flags pueden funcionar tanto en escenarios temporales como permanentes para permitirte romper el triángulo de calidad y entregar calidad de manera rápida.

FAQ

Las banderas de características son herramientas utilizadas para controlar la visibilidad y el estado de ciertas funcionalidades dentro de una aplicación, permitiendo activarlas o desactivarlas sin necesidad de hacer despliegues directos. Esto ayuda a probar y validar características en diferentes entornos antes de hacerlas accesibles para todos los usuarios.

El ciclo de vida de una bandera de características comienza con su implementación para controlar la visibilidad de una nueva funcionalidad. Una vez que la funcionalidad es probada y validada en producción, y se considera estable y segura para todos los usuarios, la bandera se elimina.

Las banderas de características no sólo manejan estados binarios, sino que pueden controlar un espectro de condiciones y configuraciones como números, cadenas o JSON. Esto permite gestionar y mitigar riesgos en escenarios complejos como la degradación controlada de funcionalidades no críticas, o cambios dinámicos en respuesta a fallas o comportamientos inesperados.

Una válvula de seguridad es una bandera de características utilizada a largo plazo que permite degradar de manera controlada la funcionalidad no crítica de aplicaciones y servicios para mantener la disponibilidad general, especialmente útil en situaciones de fallo de componentes externos o internos.

Las banderas de características pueden ser configuradas para responder de manera específica ante acciones sospechosas o malintencionadas, como aislar un punto final y devolver códigos de error específicos a ciertos usuarios mientras el resto continúa recibiendo servicio normal.

Usar banderas de características permite un despliegue controlado y gradual de nuevas funcionalidades. Esto facilita la realización de pruebas A/B, la validación de cambios en producción y la adaptación basada en el feedback y comportamiento del usuario sin afectar la estabilidad del sistema.

Al almacenar configuraciones en banderas de características, se puede ajustar dinámicamente el comportamiento de los microservicios en respuesta a condiciones cambiantes, mejorando así la eficiencia y adaptabilidad de los sistemas distribuidos.

Jessica Cregg
Jessica Cregg
7 min
24 Oct, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Los feature flags se pueden utilizar para mitigar el riesgo en el desarrollo de software mediante la alteración de la visibilidad de las características para los usuarios finales. Mediante el uso de flags, puedes protegerte contra puntos únicos de fallo y cambiar a un servicio de respaldo en los peores escenarios. La monitorización y gestión de la complejidad es crucial, y el uso de feature flags permite cambios dinámicos y ajustar valores basados en la corrección comprobada. Operar en lo desconocido es inevitable en el desarrollo de software, por lo que es importante gestionar la complejidad y abrazar el aprendizaje. La colaboración es clave para hacer que las fallas en las características sean menos dolorosas.

1. Introducción a las banderas y mitigación de riesgos

Short description:

Hola a todos en React Advanced. Soy Jessica y voy a hablarles sobre cómo pueden usar las banderas para mitigar el riesgo en su desarrollo de software. Las banderas de características se utilizan típicamente para alterar la visibilidad de una característica para los usuarios finales. Se pueden utilizar para pruebas, implementar características para un subconjunto de usuarios y más. En LaunchDarkly, podemos utilizar banderas basadas en diferentes tipos de datos, lo que le permite mitigar el riesgo en escenarios complejos.

Hola a todos en React Advanced. Espero que estén pasando un buen rato. Soy Jessica y voy a hablarles sobre cómo pueden usar las banderas para mitigar el riesgo en su desarrollo de software. Así que, empecemos.

Probablemente ya hayan escuchado hablar de las banderas de características que resuelven problemas relacionados con el lanzamiento, ¿verdad? Y a menudo se utilizan en estos escenarios de derechos, cambiando lo que está disponible para ciertos usuarios. Y típicamente se utiliza en ese tipo de estado booleano. Tomamos una característica, la envolvemos en una bandera y eso se convierte en nuestro punto de control dentro de nuestro código, lo que nos permite alterar su visibilidad para nuestros usuarios finales. La característica está visible o no lo está. Está activada o desactivada. Y una vez que hemos validado los cambios en producción y estamos seguros de que nuestra característica puede estar activada para el 100% de nuestra audiencia, eliminamos la bandera. Ese es el ciclo de vida típico que vemos con las banderas.

Como saben, esto es súper útil cuando se trata de, por ejemplo, previsualizar características para testing y producción sin llegar a nuestros usuarios finales o para implementar características dirigidas a solo un subconjunto de nuestra base de usuarios. Pero ¿qué pasa si el problema que estamos tratando de resolver requiere más que un simple cambio de estado binario o una prueba A-B? En LaunchDarkly, cuando hablamos de banderas, no nos referimos simplemente a dos estados. En realidad, podemos manejar todo un espectro de etapas en su proceso de lanzamiento. Podemos utilizar banderas basadas en un número, una cadena. Incluso tenemos banderas JSON. Y eso le permite mitigar el riesgo en estos escenarios más complejos. Una válvula de seguridad es una bandera a largo plazo que se puede utilizar para degradar la funcionalidad no crítica de sus aplicaciones y servicios.

2. Banderas para la mitigación de riesgos

Short description:

Es importante protegerse de los puntos de falla únicos y mitigar el riesgo mediante el uso de banderas. Al señalar los posibles puntos de falla, se puede crear un sistema que le permita cambiar a un servicio de respaldo en los peores escenarios. Esto le ayuda a retroceder de manera elegante y mantener la disponibilidad, incluso en presencia de actores malintencionados. Cambiar las banderas puede mantener la estabilidad en línea y proporcionar agilidad para resolver problemas. La implementación en etapas y el uso de banderas garantizan una solución que se puede aplicar a toda su base de usuarios. Las banderas le brindan certeza y la capacidad de operar desde una única versión de la verdad. Es crucial tener cuidado al implementar en entornos complejos.

En última instancia, esto le ayuda a mantener la disponibilidad de todas sus aplicaciones. Y es muy común, como todos sabemos, depender de servicios y proveedores externos. Pero las cosas comienzan a ponerse preocupantes cuando hay un único punto de falla en su entrega. Bueno, ¿por qué no protegerse? Reduzca el riesgo de ese elemento. Al señalar ese punto, podría crear efectivamente un sistema que le permita cambiar a un servicio de respaldo, en caso de que ocurra el peor escenario, que sabemos que a menudo ocurre, desafortunadamente. Lo siento.

Esto le brinda la capacidad de retroceder de manera elegante, sin tener que desconectarse por completo, todo en aproximadamente 200 milisegundos. Está protegiendo su tiempo de actividad, apoyando los objetivos de nivel de servicio de su equipo y todos están mucho más felices. Esto también se puede hacer en caso de actores malintencionados. Digamos que alguien está utilizando su servicio para algo que realmente no debería. Puede aislar ese punto final. Puede devolver un código 404 para ese dispositivo que está actuando mal y todos los demás recibirán códigos 200. En esencia, puede definir cómo degrada. Puede acotar su radio de acción y tomar una decisión sobre cómo retroceder. Por lo tanto, esto es perfecto para escenarios como la reducción de carga o el control manual de ciertos problemas. Este proceso se trata de devolverle el control de una situación que probablemente no anticipó ni solicitó.

Y, por supuesto, cuando hablamos de la resolución de este tipo de escenarios, tomemos la situación en la que una válvula de seguridad puede mantener el tiempo de actividad al retroceder a un estado anterior donde hay un cambio que rompe la compatibilidad. Cambiar una bandera no solo puede ayudarlo a mantenerse en línea, sino que también le brinda la agilidad necesaria para solucionar el problema en cuestión. Utilizando el registro de auditoría y su plataforma de observabilidad, puede identificar el problema, ver cuándo y dónde ocurrió. ¿Cuál fue el cambio que contribuyó a la interrupción? Y cuando su solución esté lista para implementarse, por supuesto, debe estar seguro de que realmente puede llegar a todos sus usuarios. Que es una solución que se puede aplicar a toda su base de usuarios, y no causará más problemas cuando se implemente, porque puede implementar su solución en etapas. Puede implementar su solución en un subconjunto de usuarios al principio y luego implementarla gradualmente en más personas a medida que su confianza aumenta. Las banderas le brindan el regalo de la certeza aquí. Le brinda la capacidad a todos de operar desde una única versión de la verdad. Y ahora que está en línea nuevamente, sus soluciones están disponibles para toda su base de usuarios.

Por supuesto, queremos mantenernos en línea, ¿verdad? A veces es difícil saber si su configuración está realmente lista para funcionar. Puede hacer algunas suposiciones basadas en su plataforma y cómo se comporta en ciertos escenarios. Pero lo cierto es que las suposiciones pueden demostrarse fácilmente incorrectas y las preconcepciones pueden resultar equivocadas. Ya sabe, cuando tiene una miríada de microservicios o se ocupa de procesos que requieren numerosas llamadas de red, a menudo se requiere una sintonización compleja. La mayoría de las veces, debe tener mucho cuidado al implementar.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

No resuelvas problemas, elimínalos
React Advanced Conference 2021React Advanced Conference 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Los humanos son solucionadores de problemas naturales y somos lo suficientemente buenos en eso que hemos sobrevivido a lo largo de los siglos y nos hemos convertido en la especie dominante del planeta. Debido a que somos tan buenos en eso, a veces también nos convertimos en buscadores de problemas, buscando problemas que podemos resolver. Aquellos que logran sus objetivos de la manera más exitosa son los eliminadores de problemas. Hablemos de la distinción entre resolver y eliminar problemas con ejemplos de dentro y fuera del mundo de la codificación.
Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
Aprenda más sobre cómo aprovechar las características predeterminadas de los espacios de trabajo de npm para ayudarlo a administrar su proyecto monorepo, mientras también explora algunas de las nuevas características de npm cli.
Los Átomos de Jotai Son Simplemente Funciones
React Day Berlin 2022React Day Berlin 2022
22 min
Los Átomos de Jotai Son Simplemente Funciones
Top Content
Jotai es una biblioteca de gestión de estado. La hemos estado desarrollando principalmente para React, pero conceptualmente no está vinculada a React. En esta charla, veremos cómo funcionan los átomos de Jotai y aprenderemos sobre el modelo mental que deberíamos tener. Los átomos son una abstracción agnóstica del marco para representar estados, y básicamente son solo funciones. Comprender la abstracción de átomo ayudará a diseñar e implementar estados en sus aplicaciones con Jotai
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Como desarrolladores, pasamos gran parte de nuestro tiempo depurando aplicaciones, a menudo código que ni siquiera escribimos. Lamentablemente, a pocos desarrolladores se les ha enseñado cómo abordar la depuración, es algo que la mayoría de nosotros aprendemos a través de la experiencia dolorosa. La buena noticia es que _puedes_ aprender a depurar de manera efectiva, y hay varias técnicas y herramientas clave que puedes usar para depurar aplicaciones de JS y React.
Luchando contra la Deuda Técnica con la Refactorización Continua
React Day Berlin 2022React Day Berlin 2022
29 min
Luchando contra la Deuda Técnica con la Refactorización Continua
Top Content
Afrontémoslo: la deuda técnica es inevitable y reescribir tu código cada 6 meses no es una opción. La refactorización es un tema complejo que no tiene una solución única para todos. Las aplicaciones de Frontend son particularmente sensibles debido a los frecuentes cambios de requisitos y flujos de usuario. Nuevas abstracciones, patrones actualizados y limpieza de esas viejas funciones - todo suena genial en papel, pero a menudo falla en la práctica: los todos se acumulan, los tickets terminan pudriéndose en el backlog y el código legado aparece en cada rincón de tu base de código. Por lo tanto, un proceso de refactorización continua es la única arma que tienes contra la deuda técnica. En los últimos tres años, he estado explorando diferentes estrategias y procesos para refactorizar el código. En esta charla describiré los componentes clave de un marco para abordar la refactorización y compartiré algunos de los aprendizajes acumulados en el camino. Espero que esto te ayude en tu búsqueda de mejorar la calidad del código de tus bases de código.
El Epic Stack
React Summit US 2023React Summit US 2023
21 min
El Epic Stack
Top Content
El desarrollo web moderno es fantástico. ¡Hay tantas herramientas geniales disponibles! El desarrollo web moderno es agotador. ¡Hay tantas herramientas geniales disponibles! Cada uno de estos sentimientos es cierto. Lo que es genial es que la mayoría de las veces, es difícil tomar una decisión que sea incorrecta. En serio. Los compromisos de la mayoría de los marcos y herramientas que podrías usar para construir tu aplicación se ajustan a las limitaciones de la gran mayoría de las aplicaciones. A pesar de esto, los ingenieros luchan constantemente con la parálisis del análisis.Hablemos de esto, y de una solución en la que estoy trabajando para ello.

Workshops on related topic

React, TypeScript y TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Masterclass Web3 - Construyendo Tu Primer Dapp
React Advanced Conference 2021React Advanced Conference 2021
145 min
Masterclass Web3 - Construyendo Tu Primer Dapp
Top Content
Featured WorkshopFree
Nader Dabit
Nader Dabit
En esta masterclass, aprenderás cómo construir tu primer dapp de pila completa en la blockchain de Ethereum, leyendo y escribiendo datos en la red, y conectando una aplicación de front end al contrato que has desplegado. Al final de la masterclass, entenderás cómo configurar un entorno de desarrollo de pila completa, ejecutar un nodo local e interactuar con cualquier contrato inteligente usando React, HardHat y Ethers.js.
Fundamentos de Remix
React Summit 2022React Summit 2022
136 min
Fundamentos de Remix
Top Content
Featured WorkshopFree
Kent C. Dodds
Kent C. Dodds
Construir aplicaciones web modernas está lleno de complejidad. Y eso solo si te molestas en lidiar con los problemas
¿Cansado de conectar onSubmit a las API del backend y asegurarte de que tu caché del lado del cliente se mantenga actualizada? ¿No sería genial poder utilizar la naturaleza global de CSS en tu beneficio, en lugar de buscar herramientas o convenciones para evitarla o trabajar alrededor de ella? ¿Y qué te parecería tener diseños anidados con una gestión de datos inteligente y optimizada para el rendimiento que simplemente funciona™?
Remix resuelve algunos de estos problemas y elimina completamente el resto. Ni siquiera tienes que pensar en la gestión de la caché del servidor o en los conflictos del espacio de nombres global de CSS. No es que Remix tenga APIs para evitar estos problemas, simplemente no existen cuando estás usando Remix. Ah, y no necesitas ese enorme y complejo cliente graphql cuando estás usando Remix. Ellos te tienen cubierto. ¿Listo para construir aplicaciones más rápidas de manera más rápida?
Al final de esta masterclass, sabrás cómo:- Crear Rutas de Remix- Estilizar aplicaciones de Remix- Cargar datos en los cargadores de Remix- Mutar datos con formularios y acciones
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Top Content
Featured WorkshopFree
Mikhail Kuznetcov
Mikhail Kuznetcov
Vue3 fue lanzado a mediados de 2020. Además de muchas mejoras y optimizaciones, la principal característica que trae Vue3 es la API de Composición, una nueva forma de escribir y reutilizar código reactivo. Aprendamos más sobre cómo usar la API de Composición de manera eficiente.

Además de las características principales de Vue3, explicaremos ejemplos de cómo usar bibliotecas populares con Vue3.

Tabla de contenidos:
- Introducción a Vue3
- API de Composición
- Bibliotecas principales
- Ecosistema Vue3

Requisitos previos:
IDE de elección (Inellij o VSC) instalado
Nodejs + NPM
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
JSNation 2023JSNation 2023
174 min
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
Top Content
Featured WorkshopFree
Alba Silvente Fuentes
Roberto Butti
2 authors
Esta masterclass de SvelteKit explora la integración de servicios de terceros, como Storyblok, en un proyecto SvelteKit. Los participantes aprenderán cómo crear un proyecto SvelteKit, aprovechar los componentes de Svelte y conectarse a APIs externas. La masterclass cubre conceptos importantes incluyendo SSR, CSR, generación de sitios estáticos y despliegue de la aplicación usando adaptadores. Al final de la masterclass, los asistentes tendrán una sólida comprensión de la construcción de aplicaciones SvelteKit con integraciones de API y estarán preparados para el despliegue.
De vuelta a las raíces con Remix
React Summit 2023React Summit 2023
106 min
De vuelta a las raíces con Remix
Featured Workshop
Alex Korzhikov
Pavlik Kiselev
2 authors
La web moderna sería diferente sin aplicaciones ricas del lado del cliente respaldadas por potentes frameworks: React, Angular, Vue, Lit y muchos otros. Estos frameworks se basan en JavaScript del lado del cliente, que es su núcleo. Sin embargo, existen otros enfoques para el renderizado. Uno de ellos (bastante antiguo, por cierto) es el renderizado del lado del servidor completamente sin JavaScript. Descubramos si esta es una buena idea y cómo Remix puede ayudarnos con ello?
Prerrequisitos- Buen entendimiento de JavaScript o TypeScript- Sería útil tener experiencia con React, Redux, Node.js y escribir aplicaciones FrontEnd y BackEnd- Preinstalar Node.js, npm- Preferimos usar VSCode, pero también se pueden utilizar IDE en la nube como codesandbox (otros IDE también están bien)