Recomendaciones para implementar la automatización

Se aplica a esta recomendación de lista de comprobación de excelencia operativa del marco de Well-Architected:

OE:09 Automatizar todas las tareas que no se benefician de la información y la adaptabilidad de la intervención humana, son muy procedimentales y tienen una vida útil que produce un retorno de la inversión en automatización. Cuando sea posible, elija software listo para usar para la automatización frente a implementaciones personalizadas. Trate toda la automatización igual que los componentes de carga de trabajo y aplique los pilares de Well-Architected Framework a su diseño e implementación.

En esta guía se describen las recomendaciones para adoptar la automatización en la carga de trabajo. Puede automatizar tareas repetitivas y propensas a errores humanos para ayudar a los equipos a obtener eficiencia y cumplir los estándares. Automatice las tareas para que la carga de trabajo se optimice y sea coherente. La automatización permite a los equipos de operaciones e ingeniería ser más eficientes, ya que les da más tiempo para trabajar en otras mejoras. Automation es una herramienta eficaz en todos los aspectos de la administración de cargas de trabajo. Implemente cuidadosamente la automatización para capacitar a su organización.

Estrategias de diseño principales

A medida que desarrolla la carga de trabajo, busque oportunidades para aprovechar la automatización con el fin de reducir la carga de administración y minimizar el error humano. Evalúe estas oportunidades y tenga en cuenta el valor que aportan a su organización. Para maximizar el valor de la inversión en automatización, priorizar las tareas que son sencillas, de procedimientos y tienen una larga vida útil. La aplicación de la automatización no es una táctica de todo o nada. Hay secuencias de trabajo que pueden tener operaciones que requieran intervención humana, como puntos de toma de decisiones. Estas secuencias de trabajo todavía pueden beneficiarse de la automatización para realizar otras tareas.

Tareas de destino para automatizar

Tenga en cuenta las siguientes recomendaciones para asegurarse de priorizar las tareas que se benefician más de la automatización:

  • Busca victorias fáciles. Céntrese en las tareas que son altamente procesables y susceptibles a errores humanos. Estas tareas son altamente automatizables. Están claramente definidos, están libres de variables que agregan complejidad y se realizan como parte de las operaciones normales. Por el contrario, no priorice las tareas de automatización que requieren escribir scripts complejos para tener en cuenta los fenómenos variables o las tareas que rara vez se producen.

    Algunos ejemplos de tareas altamente automatizables incluyen reiniciar servidores, crear cuentas y transferir registros a un almacén de datos. Estas tareas pueden producirse según una programación, como respuesta a un evento o alerta de supervisión, o según sea necesario en función de factores externos.

  • Busque formas de capacitar a los operadores y liberar sus pymes. Es posible que tenga expertos en su organización que se basan en escalaciones que podrían ser innecesarias. Por ejemplo, los administradores de bases de datos pueden obtener periódicamente solicitudes para crear nuevas bases de datos al incorporar nuevos clientes a la solución multiinquilino. Si crea un portal de autoservicio para el equipo de soporte técnico, puede habilitarlos para crear de forma segura una base de datos vacía. O como paso intermedio, puede automatizar las solicitudes y los pasos para que el SME realice mediante la creación de scripts que se van a ejecutar.

  • Céntrese en su rentabilidad sobre la inversión. La automatización de alto valor requiere una sobrecarga de administración mínima y agrega un grado de eficiencia demostrable. Si puede guardar el equipo de operaciones una hora cada día mediante la automatización de entradas de base de datos, por ejemplo, le dará tiempo para encontrar otras áreas para mejorar.

Áreas para implementar la automatización

Adopte la automatización durante todo el ciclo de vida de la carga de trabajo, desde el desarrollo hasta la administración diaria. Use la siguiente lista de ejemplos para ayudarle a considerar las amplias áreas del ciclo de vida de la carga de trabajo que pueden beneficiarse de la automatización. Puede automatizar:

  • Definición, ejecución y administración de canalizaciones: use herramientas de integración continua y entrega continua (CI/CD), como Azure DevOps y otras herramientas de DevOps, para definir automáticamente una canalización y cómo se ejecuta. Estas herramientas pueden ayudarle a automatizar las tareas de CI/CD u otras tareas, como la creación de informes.

  • Implementaciones: use herramientas como plantillas de Azure Resource Manager, Bicep, Terraform y Ansible para automatizar los procesos de desarrollo y versión de cargas de trabajo. Implemente y actualice la infraestructura con las mismas plataformas de automatización mediante un enfoque de infraestructura como código (IaC).

  • Pruebas: hay muchas herramientas disponibles para automatizar los procesos de prueba. Estas herramientas pueden aliviar una carga significativa del equipo de control de calidad y garantizar que las pruebas sean estandarizadas y confiables.

  • Escalado: use la funcionalidad proporcionada por la plataforma y otras herramientas, como las herramientas de orquestación, para escalar automáticamente la infraestructura cuando aumenta o disminuye la carga.

  • Supervisión y alertas: use herramientas disponibles en la solución de supervisión para inscribir automáticamente los recursos recién implementados y configurar acciones desencadenadas por alertas para ayudar a acelerar la corrección cuando surjan problemas.

  • Recuperación automática: use alertas generadas por el sistema de supervisión para automatizar acciones y recuperar componentes o trabajos que no funcionan correctamente. Para obtener más información, consulte Recomendaciones para la recuperación automática y la autoconservación.

  • Administración de configuración: use las herramientas de orquestación y directiva para asegurarse de que todos los recursos ejecutan la misma configuración y que se aplican los requisitos de cumplimiento en toda la carga de trabajo.

  • Otras tareas administrativas: use scripts para automatizar tareas repetitivas, como actualizar registros de base de datos o registros DNS.

  • Aprobaciones: permita que los sistemas tomen automáticamente decisiones de aprobación basadas en reglas predefinidas para mejorar la eficacia de los flujos de trabajo que tienen puertas de aprobación. Este método fomenta el uso de plantillas y formularios estandarizados, lo que aumenta la eficacia de los procesos. La aprobación automática en entornos altos puede ser arriesgada. Céntrese y pruebe las aprobaciones automatizadas para asegurarse de que se definen criterios específicos para conceder aprobación.

  • Incorporación de nuevos usuarios y nuevos empleados: puede automatizar muchas tareas asociadas con la incorporación de nuevos usuarios de aplicaciones o nuevos empleados, como las actualizaciones de base de datos y la creación de credenciales.

  • Supervisión y alertas: aproveche las ventajas de la funcionalidad de automatización que proporciona la plataforma de observabilidad. Inscriba automáticamente nuevos dispositivos para supervisar y alertar sobre anomalías.

Elección de una herramienta de automatización adecuada

El desarrollo interno de su propia automatización requiere mucho tiempo y puede suponer una carga de administración para el equipo de desarrollo. Necesitan mantener una herramienta de automatización interna como cualquier otro software interno. Se recomienda usar herramientas fuera de la plataforma siempre que puedan satisfacer sus necesidades. Entre las herramientas comerciales, código abierto y la plataforma en la nube proporcionadas, hay muchas opciones disponibles. Es probable que use una variedad de herramientas para crear la automatización que necesita. Confíe en su experiencia interna para ayudar a guiar sus decisiones al evaluar herramientas. Es posible que el equipo esté más familiarizado con determinados lenguajes de desarrollo y marcos de trabajo. Inicialmente, puede centrarse en herramientas fuera del estante que pueden usar sin una curva de aprendizaje alta. Reflexionar sobre las tareas que planea abordar con la automatización e invertir en las herramientas que pueden abordar específicamente esas tareas. No adquiera herramientas que prefiera y, después, considere las tareas después.

Tenga en cuenta los factores que pueden complicar las operaciones al compilar la automatización, como el bloqueo de versión y el uso excesivo del complemento. Los complementos, como Jenkins o los complementos de Azure DevOps, son una excelente manera de agregar funcionalidad. Debe adoptar complementos cuando se benefician de los objetivos de automatización. Pero cuando se usan varios complementos para realizar una sola tarea, puede hacer que las actualizaciones de automatización y la solución de problemas sean difíciles. Sea sensato en su uso de plugins. Evite también las soluciones que tienen dependencias de versión del marco porque son una carga que se mantiene con el tiempo. Para ayudar a minimizar el riesgo de estos tipos de problemas, estandarizar la selección de herramientas y complementos de automatización, y usar el control de código fuente para todos los proyectos de automatización.

Integración de la automatización en la carga de trabajo

Para cualquier herramienta que use para crear la automatización, haga que sea fácilmente accesible y fácil de administrar para los operadores. Proporcione interfaces claras y fáciles de usar para el equipo de cargas de trabajo. Puede proporcionar acceso a canalizaciones de CI/CD, API y bibliotecas. Al igual que la carga de trabajo que admite la automatización, debe administrar la automatización de forma holística. Proteja la automatización en el mismo grado que otros componentes de carga de trabajo. Supervise la automatización y la somete a los mismos protocolos de prueba que otros componentes de carga de trabajo.

Consideraciones

  • A veces, las eficiencias que obtiene de la automatización superan la carga de administración de desarrollar su propia solución si no se ajustan a sus requisitos. En estos casos, sea prudente en sus esfuerzos de desarrollo. Céntrese estrechamente en desarrollar solo lo que necesita para cubrir brechas que no se pueden resolver con soluciones fuera de la plataforma y minimizar las complejidades como las dependencias.

  • La automatización compleja que requiere un alto grado de mantenimiento puede ser difícil para los equipos de operaciones administrar y solucionar problemas. Mantenga las tareas automatizadas estrechamente centradas en realizar solo trabajos discretos. Intente minimizar las dependencias en otras herramientas o componentes.

  • Tenga cuidado con el uso de procesos manuales. Si decide no automatizar una operación, documente exhaustivamente el proceso manual mediante la creación de una lista de comprobación paso a paso para los operadores. Esta práctica reduce las posibilidades de error humano, como un operador que ejecuta erróneamente el proceso incorrecto. Esta documentación también le ayuda a diseñar la automatización para ese proceso en el futuro.

  • Al usar un enfoque híbrido manual y automatizado, debe tener especial cuidado. Si un script ejecuta la mayor parte de un proceso pero, a continuación, se aplaza a un ser humano para una parte o decisión específica, es importante proporcionar al usuario el contexto y la información necesarios para tomar una decisión informada.

Facilitación de Azure

Azure ofrece muchas herramientas para ayudarle a automatizar las tareas de la carga de trabajo.

Herramientas de IaC: puede usar Terraform, Bicep y Azure Resource Manager para implementaciones de IaC. En función de los requisitos y de la familiaridad de su equipo con las herramientas, puede usar una o varias de estas herramientas para las implementaciones y la administración de recursos.

Azure Functions: Azure Functions es una herramienta sin servidor que puede usar para automatizar las tareas mediante el lenguaje de desarrollo que prefiera. Functions proporciona un conjunto completo de desencadenadores y enlaces controlados por eventos que conectan las funciones a otros servicios. No es necesario escribir código adicional.

Acciones de GitHub para Azure: puede usar Acciones de GitHub para Azure para automatizar los procesos de CI/CD. Acciones de GitHub se integra con Azure para simplificar las implementaciones. Puede crear flujos de trabajo que compilen y prueben cada solicitud de incorporación de cambios en el repositorio, o bien implementar solicitudes de incorporación de cambios combinadas en producción.

Acciones de GitHub va más allá de Solo DevOps y permite ejecutar flujos de trabajo cuando se producen otros eventos en el repositorio. Por ejemplo, puede ejecutar un flujo de trabajo para agregar automáticamente las etiquetas adecuadas cuando alguien crea un nuevo problema en el repositorio.

Azure Automation: PowerShell y Python son lenguajes de programación populares para automatizar tareas operativas. Use estos lenguajes para realizar operaciones como reiniciar servicios, transferir registros entre almacenes de datos y escalar la infraestructura para satisfacer la demanda. Puede expresar estas operaciones en el código y ejecutarlas a petición. Por sí solo, estos lenguajes no ofrecen una plataforma para la administración centralizada, el control de versiones ni el historial de ejecución. Los idiomas también carecen de un mecanismo nativo para responder a eventos como alertas controladas por supervisión. Para proporcionar estas funcionalidades, necesita una plataforma de automatización.

Automation proporciona una plataforma hospedada en Azure para hospedar y ejecutar código de PowerShell y Python en entornos locales y en la nube, tanto azure como no azure. El código de PowerShell y Python se almacena en un runbook de Automation. Use Automation para:

  • Desencadene runbooks a petición, según una programación o a través de un webhook.

  • Historial de ejecución y registro.

  • Integrar un almacén de secretos.

  • Integrar el control de código fuente.

Administrador de actualizaciones de Azure: Update Manager es un servicio unificado que ayuda a administrar y controlar las actualizaciones de las máquinas virtuales. Puede supervisar el cumplimiento de actualizaciones de Windows y Linux en toda la carga de trabajo. También puede usar Update Manager para realizar actualizaciones en tiempo real o programarlas dentro de una ventana de mantenimiento definida. Use Update Manager para:

  • Supervise el cumplimiento de toda la flota de máquinas.
  • Programación de actualizaciones periódicas
  • Implementación de actualizaciones críticas

Entornos de implementación de Azure: los entornos de implementación permiten a los equipos de desarrollo crear rápidamente una infraestructura de aplicaciones coherente mediante plantillas basadas en proyectos. Estas plantillas minimizan el tiempo de instalación y maximizan la seguridad, el cumplimiento y la rentabilidad. Un entorno de implementación es una colección de recursos de Azure que se implementan en suscripciones predefinidas. Los administradores de infraestructura de desarrollo pueden aplicar directivas de seguridad empresarial y proporcionar un conjunto mantenido de plantillas de IaC predefinidas.

Los administradores de infraestructura de desarrollo definen entornos de implementación como elementos de catálogo. Los elementos de catálogo se hospedan en un repositorio de GitHub o Azure DevOps, denominado catálogo. Un elemento de catálogo consta de una plantilla iaC y un archivo manifest.yaml.

Puede crear scripts de entornos de implementación y administrar mediante programación los entornos.

Azure Logic Apps y Microsoft Power Automate: al crear automatización de procesos digitales (DPA) personalizados para controlar tareas de carga de trabajo como flujos de aprobación o crear integraciones de ChatOps, considere la posibilidad de usar Logic Apps o Power Automate. Puede construir flujos de trabajo a partir de conectores y plantillas integrados. Logic Apps y Power Automate se basan en la misma tecnología subyacente y son adecuadas para tareas basadas en desencadenadores o basadas en tiempo.

Escalado automático: muchas tecnologías de Azure tienen funcionalidades de escalado automático integradas. También puede programar otros servicios para escalar automáticamente mediante las API. Para obtener más información, consulte Recomendaciones para diseñar una estrategia de escalado confiable.

Grupos de acciones de Azure Monitor: para ejecutar automáticamente operaciones de recuperación automática cuando se desencadena una alerta, use grupos de acciones de Azure Monitor. Puede definir estas operaciones mediante un runbook, una función de Azure o un webhook.

Ejemplo

Para obtener un ejemplo del uso de Automation junto con otros servicios de Azure, consulte Automatización de operaciones mediante Azure Event Grid. En este ejemplo se usa Logic Apps y Event Grid para automatizar las tareas operativas.

Lista de comprobación de excelencia operativa

Consulte el conjunto completo de recomendaciones.