Compartir a través de


Recomendaciones para implementar la automatización

Se aplica a esta recomendación de lista de comprobación de excelencia operativa del marco bien diseñado:

OE:09 Automatizar todas las tareas que no se benefician de la información y la adaptación de la intervención humana, son altamente de procedimiento y tienen una vida útil que produce un retorno de la inversión en automatización. Cuando sea posible, elija software listo 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 que son repetitivas y propensas a errores humanos para ayudar a los equipos a obtener eficacia 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. La automatización 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 las ventajas de la automatización con el fin de reducir la carga de administración y minimizar el error humano. Evalúe estas oportunidades y considere 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 procedimiento 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 requieren 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.

Evaluación de tareas para automatizar

Tenga en cuenta las siguientes recomendaciones para asegurarse de priorizar las tareas que más se benefician 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 la automatización de tareas que requieren escribir scripts complejos para tener en cuenta fenómenos variables o tareas que rara vez se producen.

    Entre los ejemplos de tareas altamente automatizables se incluyen el reinicio de servidores, la creación de cuentas y la transferencia de 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 PYME. 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 permitirles crear de forma segura una base de datos vacía. O bien, 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 demostrable de eficiencia. Si puede guardar el equipo de operaciones una hora cada día mediante la automatización de entradas de base de datos, por ejemplo, les 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 la administración diaria hasta el desarrollo. 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 asegurarse de que las pruebas están 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 que están disponibles en la solución de supervisión para inscribir automáticamente recursos recién implementados y configurar acciones desencadenadas por alertas para ayudar a solucionar problemas 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 conservación automática.

  • Administración de configuración: use 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: habilite los sistemas para tomar 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 estrechamente 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 a 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 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 estantería 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 las herramientas. Es posible que el equipo esté más familiarizado con ciertos lenguajes de desarrollo y marcos de trabajo. Inicialmente, puede centrarse en herramientas fuera del estante que pueden usar sin una curva de aprendizaje alta. Refleje las tareas que planea abordar con la automatización e invierta en las herramientas que pueden abordar específicamente esas tareas. No adquiera herramientas que generalmente prefiera y, después, considere las tareas posteriores.

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 sus objetivos de automatización. Pero cuando se usan varios complementos para realizar una sola tarea, puede dificultar la automatización de las actualizaciones y la solución de problemas. Sea sensato en su uso de complementos. Evite también soluciones que tengan dependencias de versión de marco porque son una carga que se mantiene con el tiempo. Para ayudar a minimizar el riesgo de estos tipos de problemas, normalice la selección de herramientas y complementos de automatización y use 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 las 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 en cuenta 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 de ese proceso en el futuro.

  • Al usar un enfoque híbrido manual y automatizado, debe tener especial cuidado. Si un script ejecuta la mayoría 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. Según los requisitos y 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 tareas mediante el lenguaje de desarrollo preferido. Functions proporciona un conjunto completo de desencadenadores y enlaces controlados por eventos que conectan las funciones a otros servicios. No tiene que escribir código adicional.

Acciones de GitHub para Azure: puede usar Acciones de GitHub para Azure para automatizar 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 implementar solicitudes de incorporación de cambios combinadas en producción.

Acciones de GitHub va más allá de Solo DevOps y le 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 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. Solo, estos lenguajes no ofrecen una plataforma para la administración centralizada, el control de versiones o 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 en Azure como en otros que no son de Azure. El código de PowerShell y Python se almacena en un runbook de Automation. Use el servicio 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.

Azure Update Manager: Update Manager es un servicio unificado para ayudar 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 eficiencia de los costos. 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 de 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.