Home Ciencia y Tecnología El arte de un gran despliegue

El arte de un gran despliegue

28
0

Vivimos en la period de las implementaciones de software program de alta frecuencia, donde los productos de software program de mercado masivo se actualizan varias veces al día, a veces entregando cientos o incluso miles de cambios. Tome Fb, por ejemplo: empuja miles de cambios en el código a much de millones de usuarios en todo el mundo (implementación continua en Fb y Oanda). La tendencia es persistente y probablemente se acelere con el avance de AI y LLM.

Por que la prisa

Los lanzamientos de alta frecuencia no son solo la velocidad por el bien de la velocidad; Se trata de aprender más rápido, experimentar rápidamente y adaptarse a las demandas de los usuarios en constante cambio. Las empresas pueden probar rápidamente concepts y mantenerse competitivos en el mercado de rápido evolución.

Sin embargo, implementar el código o la configuración a esa frecuencia es un negocio serio. La mayoría de los problemas de producción no son causados por cortes de fibra o tormentas de viento, se deben a que los errores se deslizan a través de nuestros sistemas y golpean a los usuarios finales (¿cómo combatir los incidentes de producción? Un estudio empírico en un servicio en la nube a gran escala). Y el costo de las violaciones de confiabilidad es alto.

El mito de estabilidad

Entonces, ¿qué tenemos? Por un lado, las empresas quieren desplegarse con más frecuencia y adaptarse a los mercados de rápido crecimiento. Por otro lado, el costo de los cambios defectuosos que afectan la confiabilidad/usuarios finales es alto. ¿Cómo optimizar ambos? Se siente como una compensación: velocidad versus estabilidad.

La rápida verificación de la realidad muestra lo contrario, aunque la investigación de Dora ha demostrado repetidamente que la velocidad y la estabilidad no son compensaciones. De hecho, los cambios más frecuentes y más pequeños suelen ser menos riesgosos que los grandes y infrecuentes.

Cómo desplegar con más frecuencia

Cada vez que surgen temas de despliegue de software program, a menudo escuchará palabras como “DevOps” y “CI/CD”. La demanda de mejores tuberías de implementación es tan alta que las empresas enteras se hayan construido en torno a estos conceptos. Las plataformas como GitHub Actions, GitLab y Circleci permiten a millones de desarrolladores automatizar compilaciones e implementaciones (ver: ¿Qué es CI/CD?).

Hay más que solo herramientas. Es possible que la thought central detrás de impulsar con más frecuencia sea: dejar de tratar la implementación como un evento arriesgado y comenzar a tratarla como una rutina automatizada repetible, de bajo riesgo.

Para llegar allí, tanto las prácticas de ingeniería como la infraestructura deben evolucionar para capacitar a los equipos de ingeniería para poseer los cambios de extremo a extremo. Eso significa que el ingeniero que trabaja en una característica a menudo está en la mejor posición para implementarlo de manera segura. Este patrón a menudo es adoptado por compañías de productos masivos, por ejemplo, Spotify, Meta, Netflix y otros.

Moverse rápido y romper las cosas con infraestructura estable

“Mover Quick and Break Issues” fue un lema de Fb alrededor de 2014 antes de que cambiara a “moverse rápido con una infraestructura estable”. Esto reflejó un cambio profundo en la cultura de la ingeniería, reconociendo que romper las cosas en realidad no lo acelera cuando el costo operativo es alto.

La industria ha recorrido un largo camino desde entonces y ha desarrollado un conjunto sólido de prácticas y patrones. Hoy, las prácticas seguras de implementación están bien establecidas. Caminemos por los ingredientes clave.

Propiedad de funciones

Se espera que los ingenieros posean despliegos. Eso prácticamente significa tres cosas: probar cosas, monitorear las cosas y tener una estrategia de reversión.

¿Cómo validan las funciones de la función? Un gran plan de prueba debe tener un componente guide que explique los pasos exactos que tomó (que un nuevo ingeniero en su equipo podría seguir fácilmente) y un componente automatizado.

A medida que se implementa este código, ¿cómo monitoreará su salud? Enlace a paneles específicos que estará mirando a medida que se desplegará. Esto debe especificarse en la sección del plan de prueba de la diferencia.

¿Cómo sabes si algo sale mal? Tenga las métricas listas, Configuración de alertas. La clave aquí es que la condición es de su elección. Usted resolve cuáles son las condiciones normales y anormales para su componente, y cuando una condición garantiza abrir una tarea o llamar a la guardia.

Despliegue progresivo / canario

¿Cómo limitamos el radio de explosión de las fallas? Llegue a nuevos cambios a un pequeño porcentaje de usuarios o servidores (por ejemplo, 1%) antes de expandirse gradualmente. Por ejemplo, las actualizaciones típicas de meta productores involucran la etapa de comida para perros, es decir, el lanzamiento de Canary en los empleados primero para atrapar problemas antes de alcanzar el resto de los usuarios.

Marcas / actividades de características

Tradicionalmente, el despliegue y la liberación ocurren juntos; Envía un nuevo código, y la función se pone en marcha de inmediato. Pero a medida que aumenta el rendimiento del cambio, este acoplamiento no escala bien. Los indicadores de funciones resuelven esto mediante la implementación de desacoplamiento de la versión. Puede implementar código de forma segura, luego usar los interruptores de configuración para controlar quién ve la función (por ejemplo, empleados, usuarios beta o regiones específicas).

Prueba A/B

¿Cómo medimos el impacto, no solo la corrección? Las pruebas A/B a menudo se usan para cuantificar el impacto del cambio asignando el tráfico para controlar y probar grupos con pruebas estadísticas.

Todo es un cambio

¿Código? Cambiar. Configuración? Cambiar. ¿Actualización de ACL? También un cambio. De hecho, los cambios de configuración a menudo son aún más riesgosos que los cambios en el código.

Eso significa que todos los cambios, sin importar el tipo, deben seguir más o menos los mismos principios:

  • Canario primero
  • Validar con métricas
  • Auto-Rollback en el fracaso

El objetivo remaining

El objetivo no es solo enviar más. Es para enviar más de forma segura. Con infraestructura estable, controles automatizados y una fuerte propiedad, la iteración rápida se convierte en la norma, no la excepción. Ese es el arte de un gran despliegue.

fuente

LEAVE A REPLY

Please enter your comment!
Please enter your name here