Automatizar implementaciones de API con APIOps

Azure API Management
Azure DevOps
Azure Pipelines

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 fácilmente cambios 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.

Architecture

Diagrama de la arquitectura para implementaciones automatizadas de API utilizando APIOps en Azure.

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo

  1. Los operadores de API ejecutan la canalización de extracción para sincronizar el repositorio Git con la instancia de API Management y rellenar el repositorio Git con objetos de API Management en el formato requerido.

  2. 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.

  3. Los desarrolladores de API clonan el repositorio Git, crean una rama y crean definiciones de API mediante la especificación OpenAPI o las herramientas de su elección.

  4. Si un desarrollador envía cambios al repositorio, se crea una solicitud de incorporación de cambios para su revisión.

  5. El PR se puede aprobar o revisar automáticamente, dependiendo del nivel de control que se requiera.

  6. Una vez aprobados y fusionados los cambios, la canalización de publicación implementa los últimos cambios en la instancia de API Management.

  7. 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.

  8. Los cambios se revisan y se fusionan después de su aprobación.

  9. 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 de 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 gestionar su ciclo de vida de desarrollo de principio a fin, incluyendo la planificación y la gestión del proyecto, la gestión del código y la continuación de la construcción y el lanzamiento.

  • Azure Pipelines combina la integración continua (CI) y la entrega continua (CD) para probar y compilar el código y enviarlo a cualquier destino.

  • Azure Repos es un conjunto de herramientas de control de versiones, incluyendo Git estándar, que puede usar para administrar su código.

Alternativas

Esta solución usa Azure Repos para proporcionar la funcionalidad 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 la 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 constituyen los pilares del Marco de buena arquitectura de Azure, un conjunto de principios rectores que puede usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.

Seguridad

La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para más información, consulte Introducción al pilar de 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 mínimo privilegio al no dar a los equipos permisos de escritura en la instancia de servicio de 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 solicitudes de extracción (PR): Utilice ramas y proteja las ramas que representan el estado de las instancias de gestión de la API para que no se les apliquen cambios directamente. Exigir que los RP tengan al menos un revisor para hacer cumplir el principio de los cuatro ojos.
  • Historial inmutable: permita solo nuevas confirmaciones a partir de los cambios existentes. El historial inmutable es especialmente importante para fines de auditoría.
  • Autenticación multifactor: exija a los usuarios que activen la autenticación en dos fases.
  • Confirmaciones firmadas: permitir solo confirmaciones firmadas que no se pueden modificar después del hecho.

Optimización de costos

La optimización de costos trata de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.

  • Puede usar 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 los 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 más información, consulte Introducción al pilar de 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 crea la implementación de la API, agrega 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 es la capacidad de la carga de trabajo para escalar con el fin de satisfacer de manera eficiente las demandas que los usuarios hayan ejercido sobre ella. Para obtener más información, vea Resumen del pilar de 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 con la herramienta que desee.

    • 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 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:

  • En nuestro escenario, la canalización que descarga los cambios en el portal a la instancia de API Management tiene las siguientes etapas: Crear extractor, Crear artefactos desde el portal y Crear rama de plantilla.

    • Crear extractor

      Esta etapa crea el código del extractor.

    • Crear 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:

      Captura de pantalla de 'APIM-automation' que muestra 'apim-instances' y una jerarquía de carpetas.

      • Crear 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.

        Captura de pantalla de un ejemplo de solicitud de incorporación de cambios después de una extracción que muestra los cambios propuestos en un archivo llamado 'specification.yml'.

  • 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.

    Captura de pantalla de un ejemplo de solicitud de extracción que muestra cambios en el contenido de 'policy.xml' y cambios solo en los espacios en blanco en otros archivos.

  • Después de que la PR sea aprobada, desencadena otra canalización que publica desde la API Management al portal. El ejemplo tiene las siguientes etapas: creación de la compilación, terminado de la compilación y publicación de las instancias APIM.

    Captura de pantalla de las etapas en APIM-publish-to-portal, una canalización.

    • La etapa de creación se encarga de la creación de nuevas API.
    • La etapa de terminado de la compilación se encarga de las eliminaciones.
    • La etapa de publicación de las instancias APIM publica los cambios en la instancia de API Management.

    Captura de pantalla que muestra los trabajos en una ejecución de ejemplo de APIM-publish-to-portal, una canalización.

    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:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes