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.

This talk has been presented at React Advanced 2022, check out the latest edition of this React Conference.

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 2021React Advanced 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Kent C. Dodds discusses the concept of problem elimination rather than just problem-solving. He introduces the idea of a problem tree and the importance of avoiding creating solutions prematurely. Kent uses examples like Tesla's electric engine and Remix framework to illustrate the benefits of problem elimination. He emphasizes the value of trade-offs and taking the easier path, as well as the need to constantly re-evaluate and change approaches to eliminate problems.
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
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.
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
State management in React is a highly discussed topic with many libraries and solutions. Jotai is a new library based on atoms, which represent pieces of state. Atoms in Jotai are used to define state without holding values and can be used for global, semi-global, or local states. Jotai atoms are reusable definitions that are independent from React and can be used without React in an experimental library called Jotajsx.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
El Epic Stack
React Summit US 2023React Summit US 2023
21 min
El Epic Stack
Top Content
This Talk introduces the Epic Stack, a project starter and reference for modern web development. It emphasizes that the choice of tools is not as important as we think and that any tool can be fine. The Epic Stack aims to provide a limited set of services and common use cases, with a focus on adaptability and ease of swapping out tools. It incorporates technologies like Remix, React, Fly to I.O, Grafana, and Sentry. The Epic Web Dev offers free materials and workshops to gain a solid understanding of the Epic Stack.
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
This Talk discusses the importance of refactoring in software development and engineering. It introduces a framework called the three pillars of refactoring: practices, inventory, and process. The Talk emphasizes the need for clear practices, understanding of technical debt, and a well-defined process for successful refactoring. It also highlights the importance of visibility, reward, and resilience in the refactoring process. The Talk concludes by discussing the role of ownership, management, and prioritization in managing technical debt and refactoring efforts.

Workshops on related topic

React, TypeScript y TDD
React Advanced 2021React Advanced 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 2021React Advanced 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 Kuznetsov
Mikhail Kuznetsov
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.
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Featured Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.