Implementación de la aplicación e integración con otros servicios de Azure
Ahora que conoce diferentes opciones para hospedar aplicaciones en Azure, quiere explorar cómo implementar aplicaciones de Azure Database for MySQL: Aplicaciones de servidor flexible en estos servicios. En esta unidad, explorará dos de los servicios más utilizados, Azure App Service y AKS, revisará opciones para automatizar tareas de CI/CD mediante Azure DevOps y GitHub, y aprenderá a infundir inteligencia artificial en estas aplicaciones mediante la integración con Búsqueda de Azure AI y Azure OpenAI.
Azure App Service + Azure Database for MySQL con servidor flexible: limitaciones de servicio
Para implementar la aplicación en Azure App Service e integrarla con Azure Database for MySQL: Servidor flexible, tenga en cuenta las siguientes opciones:
- Use Aplicación web + base de datos desde Azure Marketplace para crear una aplicación web y un servidor flexible MySQL aislado en una red virtual (VNet). La información de conexión del servidor flexible se agrega automáticamente a la configuración de la aplicación de App Service mediante una cadena de conexión.
- Cree un servidor flexible de Azure Database for MySQL y una aplicación de App Service individualmente y luego agregue la información de conexión del servidor flexible de MySQL en Configuración de la aplicación en Opciones de configuración en la aplicación de App Service.
Después de configurar la aplicación de App Service y el servidor flexible de MySQL, puede implementar el código de la aplicación en Azure mediante varios métodos de implementación compatibles con Azure App Service. Estos métodos incluyen la implementación desde un paquete ZIP, repositorios de Git locales, Azure Container Registry, Acciones de GitHub o Azure Pipelines, con cada opción que ofrece flexibilidad en función de los flujos de trabajo operativos y de desarrollo.
En la siguiente unidad, creará una aplicación PHP de ejemplo y la implementará en Azure App Service, recorrerá cada paso implicado en el proceso de implementación y usará las características sólidas de la plataforma de Azure para optimizar el rendimiento y la escalabilidad de la aplicación.
Azure Kubernetes Service (AKS) y MySQL: servidor flexible
La integración de AKS con Azure Database for MySQL: Servidor flexible crea una plataforma eficaz para implementar aplicaciones en contenedores, una que puede simplificar la administración de bases de datos y mejorar la escalabilidad y la resistencia de las aplicaciones. Para implementar y administrar de forma eficaz las aplicaciones en AKS con un servidor flexible MySQL en back-end, tenga en cuenta la siguiente información.
En el diagrama siguiente se muestran tres formas comunes de integrar MySQL con la aplicación de AKS:
- Usar Azure Database for MySQL: Servidor flexible, lo que reduce la sobrecarga operativa de administrar el servidor MySQL, lo que mejora la productividad del desarrollador.
- Usar MySQL en máquinas virtuales de Azure, una oferta de infraestructura como servicio que requiere que se asuma la responsabilidad de administrar y mantener el servidor MySQL.
- Ejecutar MySQL en Kubernetes, que ofrece ventajas de automatización pero exige esfuerzos a los desarrolladores para garantizar la estabilidad, la alta disponibilidad, la persistencia de datos y el cumplimiento. Además, dada la naturaleza transitoria de los pods de Kubernetes, hay una mayor probabilidad de conmutaciones por error y reinicios, lo que puede afectar a la disponibilidad de las aplicaciones y la continuidad empresarial.
Para implementar una aplicación en AKS que se integre con Azure Database for MySQL: servidor flexible, realice este proceso de cinco pasos:
Creación de una instancia de Azure Database for MySQL: Servidor flexible mediante Azure Portal, la CLI de Azure, una plantilla de ARM/Bicep u otras herramientas de Azure. Además de elegir las opciones de proceso, almacenamiento, copia de seguridad y alta disponibilidad adecuadas, es importante decidir la opción de red adecuada al crear el servidor flexible de MySQL.
Importante: A menos que el escenario solo implique pequeños proyectos o demostraciones, se recomienda encarecidamente crear el servidor con acceso privado, lo que ayuda a proteger el acceso al servidor a través de la integración con red virtual.
Preparar la aplicación realizando los siguientes cambios en el código de la aplicación:
- Para que la aplicación use el servidor flexible de MySQL, modifique el archivo de configuración o el archivo de propiedades de la aplicación correspondientes para agregar código que indique la dirección URL del servidor host, el nombre de base de datos, el nombre de usuario y la contraseña, que se leerán de las variables de entorno (tal como se definen en el archivo de manifiesto de Kubernetes y se pasan desde este).
- Crear un Dockerfile para compilar la imagen de Docker de la aplicación.
Crear un registro de contenedor de Azure e insertar la aplicación en el registro como una imagen de Docker.
Crear un clúster de AKS y adjuntar la cuenta del registro de contenedor de Azure al clúster.
Implementar la aplicación en el clúster y, después, probar la implementación. Para implementar la aplicación en el clúster de AKS, en primer lugar debe crear un archivo de manifiesto de Kubernetes que defina un estado deseado para el clúster como, por ejemplo, qué imágenes de contenedor se van a ejecutar.
En el archivo YAML del manifiesto de Kubernetes, los elementos clave que se deben definir incluyen lo siguiente:
- The container image name: replace it with your own in the format [registryname].azurecr.io/[image-name]:[tag]
- Environment variables for MySQL flexible server host URL, database name, admin username and password.
- A service resource to access the app in the cluster. For example, a service of the type "LoadBalancer" will create an external load balancer providing an externally accessible IP address to the app.
After the YAML file is ready, deploy it with either `kubectl apply` or within the Kubernetes resource view in the Azure portal.
Automatización de tareas de CI/CD de base de datos con Azure DevOps, GitHub y el operador de servicios de Azure
La implementación manual de aplicaciones puede ser ineficaz y propensa a errores, con la necesidad de realizar pruebas y ajustes frecuentes. Para simplificar este proceso, se recomienda encarecidamente la automatización a través de la integración continua (CI) y la entrega/implementación continua (CD). CI/CD permite a los equipos de desarrollo publicar periódicamente y con confianza actualizaciones y características más pequeñas, lo cual reduce significativamente el riesgo y el esfuerzo implicados en comparación con las actualizaciones más grandes y menos frecuentes.
Para automatizar la implementación de aplicaciones y Azure Database for MySQL: Servidor flexible, considere la posibilidad de usar las siguientes herramientas de CI/CD.
Azure Pipelines
Azure Pipelines, que forma parte de Azure DevOps, proporciona funcionalidades sólidas de CI/CD, para facilitar las implementaciones de código automatizadas en varios destinos, incluyendo servicios PaaS de Azure, máquinas virtuales y registros de contenedor. Esta plataforma también admite implementaciones en distintos entornos, como otras plataformas en la nube o sistemas locales.
Específicamente para las implementaciones de bases de datos, puede usar Azure Pipelines para automatizar las actualizaciones de Azure Database for MySQL: servidor flexible mediante la incorporación de tareas en la canalización que ejecutan comandos de la CLI de Azure. Estas tareas pueden aplicar actualizaciones directamente desde archivos SQL o ejecutar scripts SQL insertados, lo cual garantiza que los esquemas de base de datos y los datos estén actualizados después de cada compilación correcta.
Acciones de GitHub
Las Acciones de GitHub permiten la automatización de flujos de trabajo en respuesta a eventos de repositorio, como solicitudes de inserción, incorporación de cambios o creación de problemas. Esta integración permite una canalización de CI/CD directa dentro del ecosistema de GitHub, con un control total, desde flujos de trabajo de compilación y prueba para nuevas solicitudes de incorporación de cambios a flujos de trabajo de implementación tras la creación de la versión.
En el caso de las bases de datos, puede configurar Acciones de GitHub para conectarse directamente a Azure Database for MySQL: servidor flexible para implementar o actualizar bases de datos siempre que se combinen o inserten cambios. Esto garantiza la sincronización continua entre las actualizaciones de aplicaciones y los cambios en el esquema de la base de datos.
Operador de servicios de Azure
Azure Service Operator integra la administración de recursos de Azure en el entorno de Kubernetes, lo cual permite administrar recursos de Azure, como Azure Database for MySQL: servidor flexible directamente a través de herramientas de Kubernetes. Este operador permite incorporar actualizaciones de infraestructura en flujos de trabajo de implementación de Kubernetes, lo cual permite un enfoque unificado para administrar las aplicaciones y sus servicios de Azure dependientes.
Otras herramientas
Además de estas herramientas específicas, puede usar otras tecnologías para mejorar los flujos de trabajo de CI/CD:
- Ranuras de implementación de App Service: Resulta útil para almacenar nuevas versiones antes de que se publiquen, permitiendo validaciones finales y un intercambio frecuente al entorno de producción con un tiempo de inactividad mínimo.
- Centro de implementación de App Service: Simplifica las configuraciones de CI/CD con Azure App Services, la integración con el control de código fuente y los servicios de compilación.
- Jenkins: Un servidor de automatización de código abierto que admite la creación, implementación y automatización de cualquier proyecto, Jenkins puede ser especialmente eficaz en entornos complejos que requieren creación de scripts personalizada y una amplia integración.
El uso de estas herramientas permite garantizar que tanto la aplicación como su infraestructura de base de datos subyacente estén siempre alineadas con los últimos cambios en el código, para minimizar el tiempo de inactividad y acelerar la entrega de nuevas características y correcciones.
Adición de inteligencia mediante la integración con Búsqueda de Azure AI y Azure OpenAI
La forma más sencilla de mejorar la inteligencia de las aplicaciones MySQL es incluir las funcionalidades enriquecidas de la búsqueda semántica y la IA generativa construyendo una solución mediante la arquitectura de generación aumentada de recuperación (RAG) con los servicios Búsqueda de Azure AI y Azure OpenAI. RAG es una arquitectura que aumenta las funcionalidades de comprensión y generación de lenguaje natural de los LLM como ChatGPT añadiendo un sistema de recuperación de información como Búsqueda de Azure AI que funciona con los datos almacenados en orígenes de datos como Azure Database for MySQL.
Un patrón RAG de ejemplo para una solución de IA de MySQL tiene este aspecto:
- Búsqueda de Azure AI extrae contenido de un origen de datos back-end, como la base de datos de Azure Database for MySQL, mediante un indexador que se ejecuta periódicamente.
- Los datos se vectorizan mediante una llamada integrada al modelo de inserción de texto de Azure OpenAI.
- A continuación, Búsqueda de Azure AI conserva estos datos vectorizados en un índice de búsqueda vectorial.
- Cuando un usuario usa una aplicación de chat de cliente, la consulta se envía a un servicio de finalización de chat de Azure OpenAI.
- Búsqueda de Azure AI ahora se usa como origen de datos para encontrar la respuesta más relevante mediante la búsqueda de vectores o la búsqueda híbrida (vector + búsqueda semántica).
- A continuación, el servicio de finalización de chat de Azure OpenAI usa estos resultados de búsqueda para generar una respuesta personalizada a la consulta del usuario.
Si está ejecutando aplicaciones, como sistemas de administración de contenido (CMS), aplicaciones de comercio electrónico o sitios de juegos, con datos hospedados en Azure Database for MySQL, puede mejorar la experiencia de usuario mediante la creación de aplicaciones de búsqueda y chat de IA generativa usando los LLM disponibles en Azure OpenAI y el almacenamiento vectorial y la indexación proporcionados por Búsqueda de Azure AI.