Home Artículos técnicos ¿Puede beneficiarse de la automatización de servidores?
Applications

¿Puede beneficiarse de la automatización de servidores?

About The Author

Outline

En los últimos años, nuestra red ha soportado cientos de miles de eventos deportivos en vivo, descargas masivas de software, miles de millones de horas de contenido de video en streaming y demandas de miles de aplicaciones web que requieren una capacidad de respuesta en tiempo real y un rendimiento global consistente. Para apoyar este crecimiento masivo, desde 2015, nuestra red global ha crecido a más de 250 Tbps, lo que requiere miles de nuevos servidores en nuestros 300 POP.

Para mantenerse al día con el desafío de implementar una huella de red que siempre está creciendo y cambiando, nuestros equipos de operaciones desarrollaron una plataforma de automatización DE TI utilizando StackStorm. Es un gran avance que ha transformado la forma en que nuestros equipos implementan, cambian, reparan y desactivan la infraestructura de servidores, abarcando más del 95% de la población de servidores en toda nuestra red global.

Aquí hay un vistazo a cómo construimos una plataforma de automatización que nos permitió:

  • Agregue más de 12.000 servidores a nuestra red en menos de tres años.
  • Automatice la generación de tickets en algunos casos y resuelva problemas sin tickets en otros.
  • Dé a nuestros equipos herramientas para que puedan colaborar en tiempo real.
  • Reduzca el tiempo empleado por el ingeniero siguiendo una serie manual de pasos.

Personalización de StackStorm en el proyecto cangrejo de río

Reconociendo el valor y la creciente madurez de las plataformas de automatización DE TI, en 2015 formamos el equipo de Automatización de Infraestructura bajo el nombre del proyecto Crayfish. Comenzamos a desarrollar una solución de automatización DE TI en serio, una tarea no pequeña para una organización de nuestro tamaño. La elección del nombre para el proyecto, que todavía estamos usando, fue intencional. Durante mucho tiempo hemos tenido temas de peces y náuticos para nuestras herramientas, pero más que eso, elegimos cangrejos porque sirven como alimentadores de filtro, ayudando a mantener limpio el ambiente en el que viven.

Inicialmente, consideramos desarrollar nuestro propio marco de automatización DE TI, pero decidimos desde el principio que StackStorm, con mejoras adicionales para respaldar nuestros requisitos y escalabilidad únicos, nos permitió avanzar de la manera más efectiva. StackStorm es una plataforma basada en eventos de código abierto que admite un enfoque de “infraestructura como código” para la automatización de DevOps. Se destaca en la ejecución de flujos de trabajo basados en eventos, se integra con Slack, que utilizamos en nuestros equipos de operaciones, y tiene soporte nativo de ChatOps.

Se han realizado algunos cambios de configuración en StackStorm para permitir que se ejecute a la escala que necesitamos. Principalmente, esto implicó aumentar el número de instancias de servicio en ejecución y reducir la retención de datos. Cuando empezamos el proyecto, nuestra red consistía en 8.000 servidores. Ahora estamos en 20.000 servidores y contando. La clave de nuestra escalabilidad ha sido la capacidad de ejecutar cualquier número de instancias de StackStorm como trabajadores en lugar de intentar que una sola instancia de StackStorm se encargue de todo. Como se muestra en la siguiente ilustración, esto es posible gracias a algo que hemos desarrollado llamado Policy Engine, que permite el envío de solicitudes a StackStorm en base a nuestra lógica de negocio. Policy Engine puede poner en cola las solicitudes de forma opcional y ejecutarlas automáticamente cuando las políticas determinan que es seguro. Estas políticas supervisan la concurrencia, la capacidad, el tráfico, el estado de la producción, la infraestructura, las listas negras y la tasa de fallos.

Las solicitudes de envío se dirigen a través de una instancia de Policy Engine a cualquier número de trabajadores de StackStorm para una escalabilidad prácticamente ilimitada.

Codificación del conocimiento tribal

El enfoque básico en cualquier proyecto de automatización DE TI es capturar procesos y flujos de trabajo existentes, convertirlos en código que pueda implementar los pasos del flujo de trabajo sin intervención manual, y almacenar los flujos de trabajo codificados en un repositorio centralizado donde se pueden llamar según sea necesario, ya sea como parte de otra automatización o a través de comandos de ChatOps.

Una vez que el proyecto se puso en marcha, el equipo de cangrejos capturó los flujos de trabajo y procesos existentes de toda la organización. Afortunadamente, la mayoría de los procesos más importantes utilizados por diferentes grupos, como el Centro de Operaciones de Red (NOC), Operaciones de Centros de Datos o SysOps, estaban bien documentados y podían ser codificados rápidamente usando el lenguaje de programación Python y añadidos a cangrejos de río.

Por ejemplo, si nuestro NOC quisiera implementar un flujo de trabajo de reinicio, tendría que verificar que es seguro trabajar en la máquina basándose en varias comprobaciones de políticas. Por ejemplo, si un servidor estuviera en producción, el sistema tomaría medidas para drenar las conexiones y actualizar el estado. A continuación, realizaría el reinicio real y los pasos necesarios para verificar que la máquina está lista para la producción antes de devolverla finalmente a la producción.

Para estar seguro, había un montón de casos de borde. Entre los más desafiantes estaban los procesos que no habían llegado a la documentación. Estos casos de conocimiento tribal requerían una colaboración interfuncional y hablar con las personas cuya experiencia garantizaba que se trataran correctamente. Un beneficio adicional del esfuerzo de automatización fue que fuimos capaces de capturar este conocimiento, asegurándonos de que permaneciera dentro de nuestra organización en el futuro.

En algunos casos, incluso pudimos identificar formas más eficientes de manejar una tarea en particular al conectarnos con varios ingenieros y técnicos que entendieron lo que estaba pasando para una tarea específica o cómo solucionar un problema en particular. Encontramos que en algunos casos, había diferentes niveles de conocimiento entre los miembros del equipo. Fue entonces cuando reunimos la inteligencia de todos y desarrollamos un único flujo de trabajo que todos acordaron que proporcionaría la solución más eficiente.

Implementación de nuevos servidores bajo demanda

Crayfish ha transformado nuestras operaciones DE TI en muchos niveles, como simplificar la administración de servidores, reducir el tiempo de inactividad del servidor y acelerar la implementación del servidor. Solo en 2018, ITOps agregó 22 Tbps de capacidad a nuestra red global. Agregar miles de servidores no habría sido posible sin la automatización de cangrejos de río. Y se logró sin aumentar significativamente los niveles de personal.

Actualmente, cangrejo de río proporciona una robusta automatización para unos 20 tipos de servidores diferentes. En nuestra organización, definimos un tipo de servidor como un grupo de servidores que ejecutan más o menos el mismo servicio. Diferentes aplicaciones se ejecutan en diferentes tipos de servidor, y cada tipo de servidor tiene diferentes necesidades de soporte cuando está en producción. Hoy en día, Crayfish es compatible con el ciclo de vida completo del servidor para aproximadamente 10 tipos de servidores y también puede hacer la mayoría de las reparaciones, revisiones y parches para aproximadamente 10 tipos de servidores adicionales. También proporciona diversos grados de soporte para aproximadamente 40 o 50 más. Dado que nos enfocamos en los tipos de servidores más ampliamente implementados, cangrejo de río soporta aproximadamente el 96% de nuestra población global de servidores.

El uso de cangrejos de río ha llevado a un aumento general en el rendimiento de la CDN y su capacidad para acomodar eventos inesperados. Nuestra red está bien equipada para soportar un tráfico masivo y cada vez mayor de transmisiones de eventos deportivos importantes y descargas de software de pico, por ejemplo, manteniendo más servidores en producción y reduciendo la interrupción de la eliminación de servidores de producción durante las horas de pico de tráfico.

Nuestra escala contribuye a por qué el cangrejo de río es esencial desde una perspectiva de rendimiento. Si su empresa tiene un centro de datos, puede programar el tiempo de inactividad y mantenerse al tanto de las necesidades de ese centro de datos. Pero cuando se habla de un centro de datos en casi todas las zonas horarias, como se muestra en el mapa de red a continuación, tiene que lidiar con diferentes perfiles, uso y tiempos de uso. Tener en cuenta todos esos factores caso por caso puede ser extremadamente complejo, pero el cangrejo de río lo maneja fácilmente.

Con el cangrejo de río, todavía podemos programar tareas como el aprovisionamiento o las actualizaciones para que se realicen automáticamente, pero el sistema es lo suficientemente inteligente como para adaptarse a las necesidades locales. Digamos que un evento noticioso en Letonia causó un gran aumento en la transmisión de video justo cuando queríamos reaprovisionar todos los servidores en Letonia. Debido a la integración entre el cangrejo de río y nuestro sistema de recolección de métricas, el sistema vería el aumento del tráfico y la reprovisión se detendría. Incluso podría poner más servidores en producción si es necesario.

Detectar fallos de infraestructura antes de que se conviertan en interrupciones del servicio

Los cangrejos de río y otros sistemas de monitoreo reducen significativamente el tiempo de inactividad del servidor individual y el tiempo de reparación. Nuestros sistemas monitorean continuamente la red en busca de problemas o fallos y pueden crear automáticamente tickets o aplicar correcciones directamente. Con los sistemas automatizados, el personal no está obligado a tener «ojos en el vidrio» para detectar errores de red: Las computadoras nunca se aburren o cansan y monitorean continuamente.

Hay muy poca limitación a la cantidad de comprobaciones que se pueden hacer de esta manera. Nuestro sistema de métricas ejecuta continuamente comprobaciones de hardware que no requieren sacar máquinas fuera de producción, mientras que otro sistema busca malos valores y llamará a los cangrejos de río para comprobar en la máquina cuando se encuentren problemas. Con este enfoque, podemos detectar fallos de hardware muy pronto.

Por ejemplo, si las métricas muestran que un disco duro está empezando a fallar, los sistemas automatizados iniciarán un flujo de trabajo en cangrejos de río que verifica el error en la máquina afectada y recopila detalles sobre el fallo, como qué disco duro falló en qué ranura, el número de escudo, etc. A continuación, crea un ticket especialmente diseñado para el grupo Operaciones del centro de datos y se enviará un técnico para instalar un reemplazo.

Históricamente, cualquier flujo de trabajo manual que requiriera que varios departamentos coordinaran o distribuyeran entre pasos introdujo retrasos significativos en el camino. Con un flujo de trabajo automatizado, el tiempo de finalización puede ser de minutos en lugar de días en una cola de tickets esperando a que aparezca la solicitud. Esto pone más control en manos de los equipos de operaciones individuales que conocen mejor sus sistemas y aplicaciones.

Dar a los ingenieros herramientas que los hacen más productivos

Nuestro enfoque anterior al trabajo de NOC implicaba emitir un comando y esperar a que las cosas sucedan. Si un técnico de NOC pasa 10, 20 o 30 minutos esperando que un servidor se cierre con gracia, usted tiene que preguntar por qué. ¿Es un buen uso del tiempo? Los cangrejos de río pueden ejecutar muchas, muchas ejecuciones en paralelo. Y, como se señaló anteriormente, el cangrejo de río fue diseñado para escalar horizontalmente. Entonces, si necesitamos más trabajo, podemos agregar un nuevo nodo. Si de repente nos encontramos teniendo que hacer mucho trabajo a la vez, podemos escalar un par de nodos a través de toda la CDN y luego escalarlo nuevamente.

Además, los técnicos solo tienen tanta memoria con respecto a cuántas máquinas pueden trabajar en cualquier momento. Solo el multitasker más excepcional puede manejar más de cinco o seis máquinas en diferentes estados sin perder el rastro o cometer errores. Pero con los cangrejos de río, no hay necesidad de saltar entre varias tareas, pueden emitir un comando y seguir adelante.

Basándose en los sistemas de aprovisionamiento inteligentes existentes desarrollados por los equipos de Infraestructura de Software y Operaciones de Sistemas, otros aspectos de los ciclos de vida del servidor son totalmente compatibles dentro de los cangrejos de río y ocurren en gran medida de forma autónoma, incluyendo actualizaciones de sistemas operativos, aprovisionamiento o reaprovisionamiento de servidores, actualizaciones de firmware y parches de seguridad. Cuando se lanza un nuevo parche, el cangrejo de río acelera las pruebas de validación para garantizar que el parche esté bien para ser liberado.

Debido a que el cangrejo de río está integrado con Slack, soporta procesos INFORMÁTICOS normales y facilita el trabajo colaborativo a medida que cambian las necesidades y los requisitos. En lugar de esperar a que un solo departamento implemente un cambio, los equipos ahora pueden definir su proceso manual como un flujo de trabajo automatizado. A continuación, pueden dar el flujo de trabajo a los usuarios finales para que se ejecuten bajo demanda. También se pueden implementar políticas que limitan cuándo un flujo de trabajo puede ejecutarse de forma segura. Esto también permite a un ingeniero que se encuentra frente a un servidor en un centro de datos emitir un comando para cambiar el estado de producción de un servidor en el que le gustaría trabajar.

Pensamientos finales

Con miles de clientes que envían terabytes de datos a través de nuestra red global de más de 20.000 servidores diarios, nuestra implementación de StackStorm se ha convertido en una herramienta operativa esencial para mantener nuestros servicios sanos y seguros. Nos ha permitido escalar nuestra red más rápidamente para satisfacer la demanda de los clientes y ofrecer un mejor rendimiento a pesar de los cambios dinámicos y las subidas de tráfico inesperadas. Esta agilidad operativa nos convierte en un proveedor de servicios más confiable que puede escalar para satisfacer las demandas de medios de transmisión y aplicaciones web.

Si bien la mayoría de las organizaciones no operan a la misma escala que nosotros, todavía hay varias mesas operativas que pueden hacer que la automatización sea atractiva, incluida su capacidad para:

  • Enfoca a los desarrolladores en el trabajo que genera un mayor retorno
  • Estandarizar tareas rutinarias y mundanas.
  • Mejore la colaboración entre departamentos.
  • Reduzca el tiempo de inactividad del servidor.
  • Mejore la seguridad mediante la implementación de actualizaciones de firmware y parches de seguridad.

Sin lugar a dudas, el cambio a la automatización DE TI ofrece un retorno de la inversión muy atractivo, pero es importante asegurarse de que está haciendo un movimiento por las razones correctas. Un buen enfoque es pensar en la automatización como una forma de dar a los ingenieros herramientas que los harán más productivos y competentes y les permitirán centrarse en las mejoras.

La transición a la automatización basada en el flujo de trabajo es una excelente manera de socializar y codificar el conocimiento tribal. En lugar de que cada uno tenga su propio enfoque, reunimos a la tribu, creamos un flujo de trabajo común y permitimos que todos contribuyan con el conocimiento futuro adquirido a un único resultado final.