Uw app implementeren en integreren met andere Azure-services
Nu u weet wat de verschillende opties zijn voor het hosten van apps in Azure, wilt u verkennen hoe u Azure Database for MySQL - Flexible Server-apps op deze services implementeert. In deze les verkent u twee van de meest gebruikte services, Azure-app Service en AKS, bekijkt u opties voor het automatiseren van CI/CD-taken met behulp van Azure DevOps en GitHub, en leert u hoe u kunstmatige intelligentie in deze toepassingen kunt integreren met Azure AI Search en Azure OpenAI.
Azure-app Service + Azure Database for MySQL - Flexibele server
Als u uw app wilt implementeren in Azure-app Service en wilt integreren met Azure Database for MySQL - Flexible Server, kunt u de volgende opties overwegen:
- Gebruik Web App + Database vanuit Azure Marketplace om een web-app en een flexibele MySQL-server te maken die is geïsoleerd in een virtueel netwerk (VNet). De verbindingsgegevens van de flexibele server worden automatisch toegevoegd aan de configuratie-instellingen van de App Service-app met behulp van een verbindingsreeks.
- Maak een flexibele Azure Database for MySQL-server en een App Service-app afzonderlijk en voeg vervolgens in de App Service-app in Toepassingsinstellingen onder Configuratie-instellingen de verbindingsgegevens van de Flexibele MySQL-server toe.
Nadat u uw App Service-app en de flexibele MySQL-server hebt ingesteld, kunt u uw app-code implementeren in Azure met behulp van verschillende implementatiemethoden die worden ondersteund door Azure-app Service. Deze methoden omvatten het implementeren vanuit een ZIP-pakket, lokale Git-opslagplaatsen, Azure Container Registry, GitHub Actions of Azure Pipelines, waarbij elke optie flexibiliteit biedt op basis van uw ontwikkel- en operationele werkstromen.
In de volgende eenheid bouwt u een PHP-voorbeeld-app en implementeert u deze in Azure-app Service, doorloopt u elke stap die bij het implementatieproces is betrokken en gebruikt u de krachtige platformfuncties van Azure om de prestaties en schaalbaarheid van uw app te optimaliseren.
Azure Kubernetes Service (AKS) + MySQL - Flexibele server
De integratie van AKS met Azure Database for MySQL - Flexible Server maakt een krachtig platform voor het implementeren van container-apps, een platform dat databasebeheer kan stroomlijnen en de schaalbaarheid en tolerantie van apps kan verbeteren. Als u uw apps op AKS effectief wilt implementeren en beheren met een flexibele back-endserver van MySQL, moet u rekening houden met de volgende informatie.
In het volgende diagram ziet u drie algemene manieren om MySQL te integreren met uw AKS-app:
- Gebruik Azure Database for MySQL - Flexible Server, waardoor de operationele overhead van het beheren van de MySQL-server wordt verminderd, waardoor de productiviteit van ontwikkelaars wordt verbeterd.
- Gebruik MySQL op Azure VM, een infrastructuur als een serviceaanbieding. Hiervoor moet u verantwoordelijk zijn voor het beheren en onderhouden van de MySQL-server.
- Voer MySQL uit op Kubernetes, dat automatiseringsvoordelen biedt, maar vereist ontwikkelaarsinspanningen om stabiliteit, hoge beschikbaarheid, gegevenspersistentie en naleving te garanderen. Gezien de tijdelijke aard van Kubernetes-pods is er bovendien een hogere kans op failovers en opnieuw opstarten, wat van invloed kan zijn op de beschikbaarheid van toepassingen en bedrijfscontinuïteit.
Als u een app wilt implementeren in AKS die is geïntegreerd met Azure Database for MySQL - Flexible Server, gebruikt u het volgende proces in vijf stappen:
Maak een Azure Database for MySQL - Flexible Server met behulp van Azure Portal, de Azure CLI, een ARM/Bicep-sjabloon of andere Azure-hulpprogramma's. Naast het kiezen van de juiste opties voor rekenkracht, opslag, back-up en hoge beschikbaarheid, is het belangrijk om de geschikte netwerkoptie te bepalen tijdens het maken van de flexibele MySQL-server.
Belangrijk: Tenzij uw scenario alleen kleine projecten of demo's omvat, wordt het ten zeerste aanbevolen om uw server te maken met privétoegang, waardoor u de toegang tot uw server kunt beveiligen via VNet-integratie.
Bereid uw app voor door de volgende wijzigingen aan te brengen in uw app-code:
- Als u wilt dat de app MySQL Flexibele server gebruikt, wijzigt u het bijbehorende configuratiebestand of app-eigenschappenbestand om code toe te voegen die de URL van de hostserver, de databasenaam, de gebruikersnaam en het wachtwoord aangeeft, die worden gelezen uit de omgevingsvariabelen (zoals gedefinieerd in en doorgegeven vanuit het Kubernetes-manifestbestand).
- Maak een Dockerfile om de Docker-installatiekopieën van de app te bouwen.
Maak een Azure-containerregister en push de app naar het register als docker-installatiekopieën.
Maak een AKS-cluster en koppel het Azure Container Registry-account aan het cluster.
Implementeer de app in het cluster en test de implementatie. Als u de app wilt implementeren in het AKS-cluster, moet u eerst een Kubernetes-manifestbestand maken dat een gewenste status voor het cluster definieert, zoals welke containerinstallatiekopieën moeten worden uitgevoerd.
In het YAML-bestand van het Kubernetes-manifest zijn belangrijke zaken die moeten worden gedefinieerd:
- 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.
Database-CI/CD-taken automatiseren met Azure DevOps, GitHub en Azure Service Operator
Het handmatig implementeren van apps kan inefficiënt en foutgevoelig zijn, waardoor frequente tests en aanpassingen nodig zijn. Om dit proces te stroomlijnen, wordt automatisering via CI (Continuous Integration) en Continuous Delivery/Deployment (CD) ten zeerste aanbevolen. MET CI/CD kunnen ontwikkelteams regelmatig en betrouwbaar kleinere updates en functies vrijgeven, waardoor de risico's en inspanningen aanzienlijk worden verminderd vergeleken met grotere, minder frequente updates.
Voor het automatiseren van de implementatie van apps en Azure Database for MySQL - Flexible Server kunt u de volgende CI/CD-hulpprogramma's gebruiken.
Azure-pipelines
Azure Pipelines, onderdeel van Azure DevOps, biedt robuuste CI/CD-mogelijkheden, waardoor geautomatiseerde code-implementaties naar verschillende doelen worden vergemakkelijkt, waaronder Azure PaaS-services, VM's en containerregisters. Dit platform ondersteunt ook implementaties in verschillende omgevingen, zoals andere cloudplatforms of on-premises systemen.
Met name voor database-implementaties kunt u Azure Pipelines gebruiken om updates voor Azure Database for MySQL - Flexible Server te automatiseren door taken in de pijplijn op te nemen die Azure CLI-opdrachten uitvoeren. Deze taken kunnen updates rechtstreeks vanuit SQL-bestanden toepassen of inline SQL-scripts uitvoeren, zodat databaseschema's en gegevens up-to-date zijn na elke geslaagde build.
GitHub Actions
GitHub Actions maken automatisering van werkstromen mogelijk als reactie op opslagplaatsgebeurtenissen, zoals push-, pull-aanvragen of het maken van problemen. Dankzij deze integratie is een naadloze CI/CD-pijplijn mogelijk binnen het GitHub-ecosysteem, waarbij alles wordt verwerkt, van build- en testwerkstromen voor nieuwe pull-aanvragen tot implementatiewerkstromen bij het maken van de release.
Voor databases kunt u GitHub Actions configureren om rechtstreeks verbinding te maken met Azure Database for MySQL - Flexible Server om databases te implementeren of bij te werken wanneer wijzigingen worden samengevoegd of gepusht. Dit zorgt voor continue synchronisatie tussen app-updates en databaseschemawijzigingen.
Azure Service Operator
Azure Service Operator integreert Azure-resourcebeheer in de Kubernetes-omgeving, zodat u Azure-resources zoals Azure Database for MySQL - Flexible Server rechtstreeks kunt beheren via Kubernetes-hulpprogramma's. Deze operator maakt het mogelijk om infrastructuurupdates op te nemen in Kubernetes-implementatiewerkstromen, waardoor een uniforme benadering mogelijk is voor het beheren van zowel apps als hun afhankelijke Azure-services.
Andere hulpprogramma's
Naast deze specifieke hulpprogramma's kunt u andere technologieën gebruiken om CI/CD-werkstromen te verbeteren:
- App Service-implementatiesites: handig voor het faseren van nieuwe releases voordat ze live gaan, waardoor definitieve validaties en dynamisch wisselen naar productie met minimale downtime mogelijk zijn.
- App Service Deployment Center: stroomlijnt CI/CD-instellingen met Azure-app Services, integratie met broncodebeheer en buildservices.
- Jenkins: Een opensource-automatiseringsserver die ondersteuning biedt voor het bouwen, implementeren en automatiseren van elk project, kan Jenkins bijzonder effectief zijn in complexe omgevingen waarvoor aangepaste scripts en uitgebreide integratie nodig zijn.
Door deze hulpprogramma's te gebruiken, kunt u ervoor zorgen dat zowel uw app als de onderliggende database-infrastructuur altijd zijn afgestemd op de meest recente wijzigingen in code, waardoor downtime wordt geminimaliseerd en de levering van nieuwe functies en oplossingen wordt versneld.
Intelligentie toevoegen door integratie met Azure AI Search en Azure OpenAI
De eenvoudigste manier om de intelligentie van MySQL-toepassingen te verbeteren, is door de uitgebreide mogelijkheden van semantische zoekopdrachten en generatieve AI op te nemen door een oplossing te bouwen met behulp van de RAG-architectuur (Retrieval Augmented Generation) met Azure AI Search en Azure OpenAI-services. RAG is een architectuur die het begrip en de generatiemogelijkheden van LLM's zoals ChatGPT verbetert door een systeem voor het ophalen van gegevens toe te voegen, zoals Azure AI Search, dat werkt met uw gegevens die zijn opgeslagen in gegevensbronnen zoals Azure Database for MySQL.
Een voorbeeld van een RAG-patroon voor een MySQL AI-oplossing ziet er als volgt uit:
- Azure AI Search haalt inhoud op uit een back-endgegevensbron zoals Azure Database for MySQL-database met behulp van een indexeerfunctie die periodiek wordt uitgevoerd.
- De gegevens worden gevectoriseerd door een ingebouwde aanroep van het insluitmodel voor tekst van Azure OpenAI.
- Azure AI Search bewaart deze gevectoriseerde gegevens vervolgens in een vectorzoekindex.
- Wanneer een gebruiker een clientchattoepassing gebruikt, wordt de query verzonden naar een Azure OpenAI-chatvoltooiingsservice.
- Azure AI Search wordt nu gebruikt als gegevensbron om het meest relevante antwoord te vinden met vectorzoekopdrachten of hybride zoekopdrachten (vector + semantische zoekopdracht).
- De Azure OpenAI Chat Completion-service gebruikt vervolgens deze zoekresultaten om een aangepast antwoord te genereren op de gebruikersquery.
Als u toepassingen uitvoert, zoals inhoudsbeheersystemen (CMS), e-commercetoepassingen of gamingsites, met gegevens die worden gehost in Azure Database for MySQL, kunt u uw gebruikerservaring verbeteren door generatieve AI-zoek- en chattoepassingen te bouwen met behulp van LLM's die beschikbaar zijn in Azure OpenAI en vectoropslag en -indexering die wordt geleverd door Azure AI Search.