Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En la infraestructura de nube definida por software, los equipos usan diversas herramientas y técnicas para aprovisionar, configurar y administrar la infraestructura. A medida que los equipos evolucionan y crecen, pueden pasar del uso de portales y esfuerzos manuales al uso de código y automatización para aprovisionar, configurar y administrar la infraestructura y los servicios.
Consideraciones sobre automatización de la plataforma
- La implementación de la metodología Todo como código (EaC) permite a los equipos desbloquear ventajas clave, crear una cultura de desarrollo sólida y permitir que todos los miembros de cada equipo inspeccionen cómo y qué recursos se implementan. EaC también ayuda a los equipos de plataforma a adoptar prácticas clave de desarrollo que mejoran su agilidad y eficiencia. Los equipos pueden realizar un seguimiento de los cambios y controlar cuáles se mueven a producción almacenando el código en repositorios y usando sistemas de control de versiones para administrarlo.
- Los equipos pueden seguir el principio de 4 ojos y usar la programación entre pares o la revisión entre pares para garantizar que los cambios de código nunca se realizan solos. La programación del mismo nivel y la revisión del mismo nivel mejoran la calidad del código, permiten a los equipos compartir la responsabilidad de los cambios y aumentar el conocimiento del equipo sobre lo que se ha acordado e implementado. La revisión de código es una forma fantástica de que los miembros del equipo aprendan nuevas técnicas y métodos para codificar y automatizar.
- Los equipos deben usar sistemas de control de versiones como Git, junto con repositorios de Git, para implementar la revisión por pares. Los repositorios de Git permiten a los equipos definir ramas importantes y protegerlos con directivas de rama. Puede usar la directiva para requerir cambios de código en estas ramas para cumplir determinados criterios, como un número mínimo de aprobaciones de miembros del equipo, para poder combinarlos en una rama protegida.
- Los equipos deben conectar la metodología de EaC y el proceso de revisión de cambios con un proceso de integración continua y entrega continua (CI/CD). Cada cambio de código debe desencadenar automáticamente un proceso de CI que ejecute implementaciones de prueba, validación y análisis de código estáticos. CI garantiza que los desarrolladores comprueben su código al principio (a menudo denominado error en pruebas rápidas o de desplazamiento a la izquierda) para detectar errores que puedan causar problemas futuros. En función de la estrategia de bifurcación que use el equipo, los cambios en cualquier rama importante deben desencadenar la implementación en distintos entornos. Una vez aprobados y combinados los cambios en
main
, el proceso de CD implementa esos cambios en producción. Este sistema de administración de código proporciona a su equipo una única fuente de verdad para lo que se ejecuta en cada entorno. - Para asegurarse de que su plataforma sea completamente autosuficiente y proporcione autoservicio para los equipos de carga de trabajo, el equipo de la plataforma debe esforzarse por automatizar todo (a menudo denominado Automatización extrema), desde el aprovisionamiento, la configuración y la gestión de la plataforma hasta la provisión de suscripciones de la landing zone para los equipos de carga de trabajo. La automatización extrema permite al equipo de plataforma centrarse en proporcionar valor en lugar de implementar, configurar y administrar la plataforma. La automatización extrema también crea un ciclo de mejora automática que proporciona a su equipo más tiempo para crear más automatización.
- A medida que los equipos de la plataforma automatizan las actividades operativas y reducen la intervención humana, deben cambiar su enfoque a tareas importantes que permitan y aceleren la innovación del equipo de cargas de trabajo en Azure. Para ello, el equipo de plataforma debe recorrer en iteración varios ciclos de creación y desarrollo a medida que ponen en marcha las herramientas, scripts y mejoras de funcionalidad de la plataforma.
- Hay varias opciones disponibles para ayudar al equipo a empezar a trabajar con su implementación de la zona de aterrizaje de Azure. Estas opciones dependen de las funcionalidades actuales de su equipo y pueden crecer a medida que evoluciona el equipo. Más concretamente, para implementación de plataforma, puede elegir entre experiencias basadas en Portal, Bicep o Terraform, en función de la infraestructura como competencia de código (IaC) y preferencia de herramientas de los equipos respectivos.
- Los equipos de plataforma nuevos y emergentes que todavía conocen IaC y que están familiarizados con el uso de un portal para implementar y administrar recursos pueden usar el acelerador de zonas de aterrizaje de Azure. Este acelerador admite equipos que actualmente usan un enfoque clickOps . ClickOps es el proceso de aprovisionamiento, configuración y administración de recursos haciendo clic en portales, consolas de administración y asistentes. Este acelerador permite al equipo usar el portal como herramienta de implementación inicial. A medida que crece la madurez de la ingeniería de plataformas, el equipo puede incorporar gradualmente la CLI de Azure, PowerShell o IaC.
- La solución AzOps permite a los equipos evolucionar sus prácticas de administración y automatización de plataformas, pasando de estar impulsadas por ClickOps a ser capaces de soportar DevOps. Su equipo puede realizar la transición de utilizar el acceso personal a aplicar los principios y prácticas de DevOps, basándose únicamente en CI/CD con AzOps e IaC. AzOps permite que el equipo traiga su propia arquitectura, use la arquitectura implementada por el acelerador del portal de zona de aterrizaje de Azure (después de la implementación inicial basada en el portal, ya que la integración de AzOps no forma parte de la experiencia del portal de ALZ), se integra con una implementación de brownfield o usa plantillas personalizadas (Bicep o ARM) para compilar y poner en funcionamiento la plataforma.
- Los equipos de plataforma con aptitudes y funcionalidades establecidas pueden adoptar un enfoque codificado que sigue los principios y prácticas de DevOps. El equipo debe basarse en gran medida en IaC y en las prácticas de desarrollo moderno, transicionando del uso de acceso a Azure en sus cuentas personales hacia la ejecución de todas las operaciones a través de la canalización de CI/CD. Tu equipo debe usar aceleradores basados en IaC, como ALZ-Bicep o el módulo Terraform de zonas de aterrizaje Azure para acelerar esta transición.
- Los aceleradores basados en IaC tienen un ámbito de administración limitado. Las nuevas versiones proporcionan más funcionalidades y una mayor capacidad de administración de recursos. Si usa un acelerador, el equipo debe tener en cuenta un enfoque en capas que comience con un acelerador y, a continuación, agregue una capa de automatización. La capa de automatización proporciona capacidades que su equipo necesita con el fin de apoyar plenamente a los equipos dedicados a la carga de trabajo con funcionalidades de plataforma, como la implementación de controladores de dominio para aplicaciones obsoletas.
- A medida que el equipo de la plataforma realiza la transición a un enfoque de DevOps, deben establecer un proceso para controlar las correcciones de emergencia. Pueden usar permisos aptos de Privileged Identity Management (PIM) para solicitar acceso para realizar correcciones y, posteriormente, devolverlo al código para limitar el desfase de configuración, o pueden usar código para implementar una corrección rápida. Su equipo siempre debe registrar correcciones rápidas en su trabajo pendiente para que puedan volver a trabajar cada corrección en un momento posterior y limitar su deuda técnica. Demasiada deuda técnica conduce a una desaceleración futura, ya que algún código de plataforma no se revisa completamente y no cumple las directrices y principios de codificación del equipo.
- Puede usar directivas de Azure para agregar cierta automatización a la plataforma. Considere la posibilidad de usar IaC para implementar y administrar directivas de Azure, a menudo denominadas Policy-as-Code (PaC). Estas directivas permiten automatizar actividades como la recopilación de registros. Muchos marcos de PaC también implementan un proceso de exención, por lo que planifica para que los equipos encargados de la carga de trabajo soliciten exenciones de políticas.
- Utilice "Gobernanza controlada por políticas" para indicar a los equipos de trabajo cuando intenten implementar recursos que no cumplan con un control de seguridad. Considere implementar directivas con el
deny
efecto para estas situaciones, lo que permite que los equipos de carga de trabajo también traten todo como código y eviten el desfase de configuración donde el código declara una cosa y la directiva cambió una configuración en el momento de la implementación. Evite el uso de efectosmodify
, por ejemplo, si un equipo de trabajo despliega una cuenta de almacenamiento consupportOnlyHttpsTraffic = false
definida en su código, donde una directivamodify
lo cambia atrue
durante la implementación para mantenerla conforme. Esto conduce a una desviación del código respecto a lo que se despliega.
Recomendación de diseño de automatización de plataformas
- Siga un enfoque todo como código para lograr una transparencia completa y el control de configuración de la plataforma Azure, la documentación, la implementación y el proceso de prueba.
- Use el control de versiones para administrar todos los repositorios de código, entre los que se incluyen:
- Infraestructura como código
- Directiva como código
- Configuración como código
- Implementación como código
- Documentación como código
- Implemente el principio de 4 ojos y un proceso de programación en pareja o revisión por pares para asegurarse de que su equipo revise todos los cambios de código antes de implementarlos en producción.
- Adopte una estrategia de bifurcación para el equipo y establezca directivas de rama para las ramas que desea proteger. Con las directivas de rama, los equipos deben usar solicitudes de extracción para fusionar cambios.
- Use la integración continua y la entrega continua (CI/CD) para automatizar las pruebas de código y la implementación en diferentes entornos.
- Trabaje para automatizar todo, como el aprovisionamiento, la configuración y la administración de la plataforma y el aprovisionamiento de suscripciones de zona de aterrizaje para los equipos de carga de trabajo.
- Use uno de los aceleradores disponibles que coincidan con las funcionalidades de su equipo para empezar a implementar Azure Landing Zones.
- Planifique usar un enfoque de despliegue por capas para agregar funcionalidad que no está cubierta por un acelerador, pero que es necesaria para apoyar plenamente a los equipos de cargas de trabajo.
- Establezca un proceso para usar código para implementar correcciones rápidas. Registre siempre correcciones rápidas en el trabajo pendiente de su equipo para que cada corrección se pueda volver a trabajar en un momento posterior y puede limitar la deuda técnica.
- Uso de la infraestructura como código para implementar y administrar directivas de Azure (a menudo denominadas directivas como código)
- Implemente un proceso de exención para las políticas. Planifique para que los equipos de trabajo soliciten exenciones de políticas y para estar listos para desbloquear los equipos cuando sea necesario.
- Use "Gobernanza controlada por directivas" para bloquear los equipos de tareas cuando intenten implementar recursos que no cumplen con los controles de seguridad. Esto ayuda a reducir el desfase de configuración, donde el código declara un estado diferente al que termina de implementarse.
Más información
- Adopción de barreras de protección controladas por directivas
- Aspectos básicos de los bíceps
- Bicep intermedio
- Bicep avanzado
- Uso de Bicep y Acciones de GitHub para implementar recursos de Azure
- Uso de Bicep y Azure Pipelines para implementar recursos de Azure
- Controla y administra tu entorno de Azure mediante la implementación de tu infraestructura como código