Automatizar implementaciones de API con APIOps
APIOps es una metodología que aplica los conceptos de GitOps y DevOps a la implementación de API. Al igual que DevOps, APIOps ayuda a los miembros del equipo a realizar cambios fácilmente e implementarlos de forma iterativa y automatizada. Esta arquitectura muestra cómo puede mejorar todo el ciclo de vida de la API y la calidad de la API mediante APIOps.
Arquitectura
Descargue un archivo de Visio de esta arquitectura.
Flujo de trabajo
Los operadores de API ejecutan la canalización de extractor de para sincronizar el repositorio de Git con la instancia de API Management y rellenar el repositorio de Git con objetos de API Management en el formato necesario.
Si se detecta un cambio de API en la instancia de API Management, se crea una solicitud de incorporación de cambios (PR) para que los operadores la revisen. Los operadores combinan los cambios en el repositorio de Git.
Los desarrolladores de API clonan el repositorio de Git, crean una rama y crean definiciones de API mediante la especificación de OpenAPI o las herramientas que prefieran.
Si un desarrollador envía cambios al repositorio, se crea una solicitud de incorporación de cambios para su revisión.
El PR se puede aprobar o revisar automáticamente, dependiendo del nivel de control que se requiera.
Una vez aprobados y fusionados los cambios, la canalización de publicación implementa los últimos cambios en la instancia de API Management.
Los operadores de la API crean y modifican las políticas de API Management, diagnósticos, productos y otros objetos relevantes, y luego confirman los cambios.
Los cambios se revisan y se fusionan después de su aprobación.
Después de fusionar los cambios, la canalización de publicación implementa los cambios utilizando el proceso de definición de la API.
Componentes
Azure API Management crea puertas de enlace de API modernas y coherentes para los servicios back-end. Además de enrutar las llamadas de API a los back-ends, esta plataforma también verifica las credenciales, impone cuotas de uso y registra los metadatos.
Azure DevOps es un servicio para administrar el ciclo de vida de desarrollo de un extremo a otro, incluida la planeación y la administración de proyectos, la administración de código y la compilación y versión continuas.
Azure Pipelines permite la integración continua y la entrega continua (CI/CD) para probar y compilar el código y enviarlo a cualquier destino.
Azure Repos es un conjunto de herramientas de control de versiones, incluido Git estándar, que puede usar para administrar el código.
Alternativas
Esta solución usa Azure Repos para proporcionar funcionalidad de Git y Azure Pipelines proporciona las canalizaciones. Puede usar cualquier tecnología comparable.
Detalles del escenario
APIOps usa el control de versiones para administrar las API y crear una pista de auditoría de los cambios en las API, las directivas y las operaciones.
Los desarrolladores de API que usan la metodología APIOps revisan y auditan las API antes y con más frecuencia, detectando y resolviendo desviaciones de los estándares de API con mayor rapidez para mejorar las especificaciones y la calidad de la API. Cuantas más API se construyan y desplieguen con un enfoque de APIOps, mayor será la coherencia entre las API.
Esta arquitectura de APIOps usa Azure API Management como plataforma de API Management. Azure DevOps organiza API Management. Azure Repos proporciona funcionalidad de Git y Azure Pipelines crea la canalización de CI/CD.
Posibles casos de uso
- Cualquier organización que desarrolle y administre las API
- Sectores altamente regulados: seguros, banca, finanzas, gobierno
Consideraciones
Estas consideraciones implementan los pilares de Azure Well-Architected Framework, que es un conjunto de principios rectores que puede usar para mejorar la calidad de una carga de trabajo. Para obtener más información, consulte Well-Architected Framework.
Seguridad
La seguridad proporciona garantías contra ataques deliberados y el uso indebido de sus valiosos datos y sistemas. Para obtener más información, consulte Lista de comprobación de revisión de diseño para seguridad.
Esta solución proporciona varias ventajas relacionadas con la seguridad. Los desarrolladores individuales, e incluso los operadores, no acceden directamente a la instancia de API Management para aplicar cambios o actualizaciones. Los usuarios envían los cambios a un repositorio Git, y el extractor y los canales de publicación los leen y los aplican a la instancia de API Management. Este enfoque sigue el procedimiento recomendado de seguridad de privilegios mínimos al no conceder permisos de escritura a los equipos en la instancia del servicio API Management. En escenarios de diagnóstico o de solución de problemas, puede conceder permisos elevados durante un tiempo limitado en función de cada caso.
Para asegurarse de que las instancias de API Management usan los procedimientos recomendados para la seguridad, puede ampliar esta solución para hacer cumplir los procedimientos recomendados de la API mediante el uso de herramientas de terceros y pruebas unitarias. Los equipos pueden proporcionar comentarios oportunos a través de la revisión de PR si los cambios propuestos en una API o política infringen las normas.
Además de la tarea de configurar los permisos del repositorio, considere la posibilidad de implementar las siguientes medidas de seguridad en los repositorios Git que se sincronizan con las instancias de API Management:
- Revisión de solicitud de incorporación de cambios (PR): use ramas y proteja las ramas que representan el estado de las instancias de API Management de tener cambios insertados en ellas directamente. Exigir que los RP tengan al menos un revisor para hacer cumplir el principio de los cuatro ojos.
- Historial inmutable: solo permite nuevas confirmaciones sobre los cambios existentes. El historial inmutable es especialmente importante para fines de auditoría.
- Autenticación multifactor: requerir que los usuarios activen la autenticación en dos fases.
- Confirmaciones firmadas: permite solo confirmaciones firmadas que no se pueden modificar después del hecho.
Optimización de costos
La optimización de costos se centra en formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para obtener más información, consulte Lista de comprobación de revisión de diseño para la optimización de costos.
Use la calculadora de precios de Azure para calcular los costos.
API Management ofrece los siguientes niveles: consumo, desarrollador, básico, estándar y premium.
GitHub ofrece un servicio gratuito. Sin embargo, para usar las funciones avanzadas relacionadas con la seguridad, como los propietarios de código o los revisores requeridos, se necesita el plan de Equipo. Para más información, consulte Precios de GitHub.
Excelencia operativa
La excelencia operativa abarca los procesos de las operaciones que implementan una aplicación y la mantienen en ejecución en producción. Para obtener más información, consulte Lista de comprobación de revisión de diseño para la excelencia operativa.
APIOps puede aumentar la productividad de DevOps para el desarrollo y la implementación de API. Una de las características más útiles es la capacidad de usar las operaciones de Git para revertir rápidamente los cambios que se comportan de forma inesperada. El grafo de confirmaciones contiene todos las confirmaciones, por lo que puede ayudar con el análisis final.
Los operadores de API suelen administrar varios entornos para el mismo conjunto de API. Es normal tener varias etapas de una API implementadas en diferentes instancias de API Management o en una instancia compartida de API Management. El repositorio de Git, que es el único origen de certeza, muestra qué versiones de las aplicaciones están implementadas actualmente en un clúster.
Cuando alguien hace una PR en el repositorio Git, el operador de la API sabe que tiene un nuevo código que revisar. Por ejemplo, cuando un desarrollador toma la especificación de OpenAPI y compila la implementación de la API, agregan este nuevo código al repositorio. Los operadores pueden revisar el PR y asegurarse de que la API que se envió para su revisión cumple con los procedimientos recomendados y estándares más adecuados.
Eficiencia del rendimiento
La eficiencia del rendimiento hace referencia a la capacidad de escalado de la carga de trabajo para satisfacer las demandas de los usuarios de forma eficaz. Para obtener más información, vea Lista de comprobación de revisión de diseño para la eficiencia del rendimiento.
APIOps tiene muchos beneficios, pero a medida que crecen los entornos de API Management, también lo hace la complejidad de su administración. Esta solución ayuda a satisfacer desafíos como:
- Mantener una visión general de todos los entornos e instancias de API Management.
- Realizar un seguimiento de los cambios críticos en las API y políticas.
- Crear una pista de auditoría para todos los cambios implementados.
Implementación de este escenario
La implementación de esta solución requiere los siguientes pasos:
Desarrolle la API en el portal o realice cambios en la especificación de OpenAPI mediante una herramienta de su elección.
Si realiza los cambios en el portal, puede ejecutar el extractor para extraer automáticamente todas las API y otras políticas, operaciones y configuraciones relevantes de API Management. Puede sincronizar esta información con el repositorio de Git.
Opcionalmente, use la CLI de Azure DevOps para crear una nueva solicitud de incorporación de cambios.
El flujo de trabajo del extractor incluye los siguientes pasos que se deben realizar:
Ejecute una canalización que descargue los cambios en el portal a la instancia de API Management.
-
En nuestro escenario, la canalización que descarga los cambios en el portal en la instancia de API Management tiene las siguientes fases: Crear extractor, Crear artefactos desde el portal y Crear rama de plantilla.
Extractor de compilación
Esta etapa crea el código del extractor.
Creación de artefactos desde el portal
Esta etapa ejecuta el extractor y crea artefactos que se asemejan a una estructura de repositorio Git como la que se muestra en la siguiente captura de pantalla:
Creación de una rama de plantilla
Tras generar el artefacto, esta etapa crea un PR con los cambios extraídos para que el equipo de la plataforma lo revise.
La primera vez que se ejecuta el extractor, extrae todo del repositorio Git La PR que se crea tendrá todas las API, políticas, artefactos, etc.
Las extracciones posteriores tienen solo los cambios que se hicieron antes de la extracción en la PR A veces los cambios solo pueden ser en la especificación de una API, que es el caso del siguiente ejemplo de un PR.
Un revisor va a Solicitudes de incorporación de cambios para ver las solicitudes de incorporación de cambios actualizadas. También puede configurar aprobaciones automáticas para automatizar este paso.
Después de que la PR sea aprobada, desencadena otra canalización que publica desde la API Management al portal. En nuestro ejemplo, tiene las siguientes fases: creador de compilación, terminador de compilación y publicación de instancias de APIM.
- La fase de creador de compilación controla la creación de nuevas API.
- La fase del terminador de compilación controla las eliminaciones.
- La fase publicar instancias de APIM publica los cambios en la instancia de API Management.
Después de que esta canalización se ejecute con éxito, publica los cambios en la instancia de gestión de la API.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Autor principal:
- Rishabh Saha | Arquitecto principal de soluciones
Para ver perfiles de LinkedIn no públicos, inicie sesión en LinkedIn.
Pasos siguientes
- Azure Pipelines
- APIOps para Azure API Management
- CI/CD para API Management mediante plantillas de Azure Resource Manager
- Introducción a GitOps
- Guardar GitOps
- Tutorial: Implementación de configuraciones mediante GitOps en un clúster de Kubernetes habilitado para Azure Arc