Wdrażanie aplikacji i integracja z innymi usługami platformy Azure
Teraz, gdy znasz różne opcje hostowania aplikacji na platformie Azure, chcesz dowiedzieć się, jak wdrożyć aplikacje usługi Azure Database for MySQL — serwer elastyczny w tych usługach. W tej lekcji zapoznasz się z dwoma najczęściej używanymi usługami, aplikacja systemu Azure Service i AKS, przejrzyj opcje automatyzowania zadań ciągłej integracji/ciągłego wdrażania przy użyciu usług Azure DevOps i GitHub oraz dowiedz się, jak dołączyć sztuczną inteligencję do tych aplikacji, integrując się z usługami Azure AI Search i Azure OpenAI.
aplikacja systemu Azure Service + Azure Database for MySQL — serwer elastyczny
Aby wdrożyć aplikację w usłudze aplikacja systemu Azure i zintegrować z usługą Azure Database for MySQL — serwer elastyczny, rozważ następujące opcje:
- Użyj aplikacji internetowej i bazy danych z witryny Azure Marketplace, aby utworzyć aplikację internetową i serwer elastyczny MySQL izolowany w sieci wirtualnej. Informacje o połączeniu serwera elastycznego są automatycznie dodawane do ustawień konfiguracji aplikacji usługi App Service przy użyciu parametry połączenia.
- Utwórz serwer elastyczny usługi Azure Database for MySQL i aplikację usługi App Service indywidualnie, a następnie w aplikacji usługi App Service w obszarze Ustawienia aplikacji w obszarze Ustawienia konfiguracji dodaj informacje o połączeniu serwera elastycznego MySQL.
Po skonfigurowaniu aplikacji usługi App Service i serwera elastycznego MySQL możesz wdrożyć kod aplikacji na platformie Azure przy użyciu różnych metod wdrażania obsługiwanych przez usługę aplikacja systemu Azure Service. Te metody obejmują wdrażanie z pakietu ZIP, lokalnych repozytoriów Git, usługi Azure Container Registry, funkcji GitHub Actions lub usługi Azure Pipelines z każdą opcją oferującą elastyczność na podstawie przepływów pracy programistycznych i operacyjnych.
W następnej lekcji utworzysz przykładową aplikację PHP i wdrożysz ją w usłudze aplikacja systemu Azure Service, przechodząc przez każdy krok związany z procesem wdrażania i korzystając z zaawansowanych funkcji platformy Azure, aby zoptymalizować wydajność i skalowalność aplikacji.
Azure Kubernetes Service (AKS) + MySQL — serwer elastyczny
Integrowanie usługi AKS z usługą Azure Database for MySQL — serwer elastyczny tworzy zaawansowaną platformę do wdrażania konteneryzowanych aplikacji, która może usprawnić zarządzanie bazami danych i zwiększyć skalowalność i odporność aplikacji. Aby skutecznie wdrażać aplikacje w usłudze AKS i zarządzać nimi przy użyciu serwera elastycznego usługi MySQL zaplecza, należy wziąć pod uwagę następujące informacje.
Na poniższym diagramie przedstawiono trzy typowe sposoby integracji programu MySQL z aplikacją usługi AKS:
- Użyj usługi Azure Database for MySQL — serwer elastyczny, co zmniejsza obciążenie operacyjne związane z zarządzaniem serwerem MySQL, co zwiększa produktywność deweloperów.
- Użyj programu MySQL na maszynie wirtualnej platformy Azure, oferty infrastruktury jako usługi, która wymaga, aby ponosić odpowiedzialność za zarządzanie serwerem MySQL i zarządzanie nim.
- Uruchom program MySQL na platformie Kubernetes, który oferuje korzyści automatyzacji, ale wymaga wysiłków deweloperów w celu zapewnienia stabilności, wysokiej dostępności, trwałości danych i zgodności. Ponadto, biorąc pod uwagę przejściowy charakter zasobników Kubernetes, istnieje większe prawdopodobieństwo przejścia w tryb failover i ponownego uruchomienia, co może mieć wpływ na dostępność aplikacji i ciągłość działania.
Aby wdrożyć aplikację w usłudze AKS integrającą się z usługą Azure Database for MySQL — serwer elastyczny, użyj następującego procesu pięcioetapowego:
Utwórz usługę Azure Database for MySQL — serwer elastyczny przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure, szablonu ARM/Bicep lub innych narzędzi platformy Azure. Oprócz wyboru odpowiednich opcji obliczeniowych, magazynu, tworzenia kopii zapasowych i wysokiej dostępności należy zdecydować o odpowiedniej opcji sieci podczas tworzenia serwera elastycznego MySQL.
Ważne: jeśli scenariusz nie obejmuje tylko małych projektów lub pokazów, zdecydowanie zaleca się utworzenie serwera z dostępem prywatnym, co pomaga zabezpieczyć dostęp do serwera za pośrednictwem integracji z siecią wirtualną.
Przygotuj aplikację , wprowadzając następujące zmiany w kodzie aplikacji:
- Aby aplikacja korzystała z serwera elastycznego MySQL, zmodyfikuj odpowiedni plik konfiguracji lub plik właściwości aplikacji, aby dodać kod wskazujący adres URL serwera hosta, nazwę bazy danych, nazwę użytkownika i hasło, które będą odczytywane ze zmiennych środowiskowych (zgodnie z definicją w pliku manifestu platformy Kubernetes i przekazywane z pliku manifestu platformy Kubernetes).
- Utwórz plik Dockerfile , aby skompilować obraz platformy Docker aplikacji.
Utwórz rejestr kontenerów platformy Azure i wypchnij aplikację do rejestru jako obraz platformy Docker.
Utwórz klaster usługi AKS i dołącz konto usługi Azure Container Registry do klastra.
Wdróż aplikację w klastrze , a następnie przetestuj wdrożenie. Aby wdrożyć aplikację w klastrze usługi AKS, należy najpierw utworzyć plik manifestu kubernetes, który definiuje żądany stan klastra, taki jak obrazy kontenerów do uruchomienia.
W pliku YAML manifestu kubernetes kluczowe kwestie do zdefiniowania obejmują:
- 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.
Automatyzowanie zadań ciągłej integracji/ciągłego wdrażania bazy danych za pomocą usług Azure DevOps, GitHub i Azure Service Operator
Ręczne wdrażanie aplikacji może być nieefektywne i podatne na błędy, co wymaga częstego testowania i korekt. Aby usprawnić ten proces, zdecydowanie zaleca się automatyzację za pośrednictwem ciągłej integracji i ciągłego wdrażania/ciągłego wdrażania (CD). Ciągła integracja/ciągłe wdrażanie umożliwia zespołom deweloperów regularne i niezawodne wydawanie mniejszych aktualizacji i funkcji, co znacznie zmniejsza ryzyko i nakład pracy w porównaniu z większymi, rzadziej występującymi aktualizacjami.
Aby zautomatyzować wdrażanie aplikacji i usługi Azure Database for MySQL — serwer elastyczny, rozważ użycie następujących narzędzi ciągłej integracji/ciągłego wdrażania.
Azure Pipelines
Usługa Azure Pipelines, część usługi Azure DevOps, zapewnia niezawodne funkcje ciągłej integracji/ciągłego wdrażania, ułatwiając wdrażanie zautomatyzowanego kodu w różnych miejscach docelowych, takich jak usługi PaaS platformy Azure, maszyny wirtualne i rejestry kontenerów. Ta platforma obsługuje również wdrożenia w różnych środowiskach, takich jak inne platformy w chmurze lub systemy lokalne.
W szczególności w przypadku wdrożeń baz danych można użyć usługi Azure Pipelines do automatyzowania aktualizacji usługi Azure Database for MySQL — serwer elastyczny, dołączając zadania w potoku, które wykonują polecenia interfejsu wiersza polecenia platformy Azure. Te zadania mogą stosować aktualizacje bezpośrednio z plików SQL lub wykonywać wbudowane skrypty SQL, zapewniając, że schematy i dane bazy danych są aktualne po każdej pomyślnej kompilacji.
Funkcja GitHub Actions
Funkcja GitHub Actions umożliwia automatyzację przepływów pracy w odpowiedzi na zdarzenia repozytorium, takie jak wypychanie, żądania ściągnięcia lub tworzenie problemów. Ta integracja umożliwia bezproblemowy potok ciągłej integracji/ciągłego wdrażania w ekosystemie usługi GitHub, który obsługuje wszystko, od kompilacji i testowania przepływów pracy na potrzeby nowych żądań ściągnięcia do przepływów pracy wdrażania po ich utworzeniu.
W przypadku baz danych można skonfigurować funkcję GitHub Actions, aby łączyć się bezpośrednio z usługą Azure Database for MySQL — serwer elastyczny w celu wdrażania lub aktualizowania baz danych za każdym razem, gdy zmiany zostaną scalone lub wypchnięte. Zapewnia to ciągłą synchronizację między aktualizacjami aplikacji a zmianami schematu bazy danych.
Operator usługi platformy Azure
Operator usługi Platformy Azure integruje zarządzanie zasobami platformy Azure w środowisku Kubernetes, umożliwiając zarządzanie zasobami platformy Azure, takimi jak Azure Database for MySQL — serwer elastyczny bezpośrednio za pomocą narzędzi Kubernetes. Ten operator umożliwia włączenie aktualizacji infrastruktury do przepływów pracy wdrażania platformy Kubernetes, umożliwiając ujednolicone podejście do zarządzania aplikacjami i ich zależnymi usługami platformy Azure.
Inne narzędzia
Poza tymi konkretnymi narzędziami można użyć innych technologii, aby ulepszyć przepływy pracy ciągłej integracji/ciągłego wdrażania:
- Miejsca wdrożenia usługi App Service: przydatne do przemieszczania nowych wersji przed rozpoczęciem ich działania, co pozwala na ostateczne walidacje i zamianę na gorąco do środowiska produkcyjnego z minimalnym przestojem.
- Centrum wdrażania usługi App Service: usprawnia konfiguracje ciągłej integracji/ciągłego wdrażania za pomocą usług aplikacja systemu Azure, integrując się z usługami kontroli źródła i kompilacji.
- Jenkins: serwer automatyzacji typu open source, który obsługuje tworzenie, wdrażanie i automatyzowanie dowolnego projektu, narzędzie Jenkins może być szczególnie skuteczne w złożonych środowiskach wymagających niestandardowego skryptu i rozbudowanej integracji.
Korzystając z tych narzędzi, możesz upewnić się, że zarówno aplikacja, jak i jego podstawowa infrastruktura bazy danych są zawsze dostosowane do najnowszych zmian w kodzie, minimalizując przestoje i przyspieszając dostarczanie nowych funkcji i poprawek.
Dodawanie analizy przez integrację z usługami Azure AI Search i Azure OpenAI
Najprostszym sposobem zwiększenia inteligencji aplikacji MySQL jest uwzględnienie zaawansowanych funkcji semantycznego wyszukiwania i generowania sztucznej inteligencji przez utworzenie rozwiązania przy użyciu architektury rozszerzonej generacji pobierania (RAG) za pomocą usług Azure AI Search i Azure OpenAI. RAG to architektura, która rozszerza możliwości rozumienia i generowania języka naturalnego, takich jak ChatGPT, dodając system pobierania informacji, taki jak usługa Azure AI Search, która współpracuje z danymi przechowywanymi w źródłach danych, takich jak Usługa Azure Database for MySQL.
Przykładowy wzorzec RAG dla rozwiązania MySQL AI wygląda następująco:
- Wyszukiwanie sztucznej inteligencji platformy Azure pobiera zawartość ze źródła danych zaplecza, takiego jak baza danych usługi Azure Database for MySQL, przy użyciu indeksatora, który jest uruchamiany okresowo.
- Dane są wektoryzowane przez wbudowane wywołanie modelu osadzania tekstu w usłudze Azure OpenAI.
- Usługa Azure AI Search następnie utrwala te wektoryzowane dane w indeksie wyszukiwania wektorowego.
- Gdy użytkownik korzysta z aplikacji do czatu klienckiego, zapytanie jest wysyłane do usługi uzupełniania czatu usługi Azure OpenAI.
- Usługa Azure AI Search jest teraz używana jako źródło danych, aby znaleźć najbardziej odpowiednią odpowiedź przy użyciu wyszukiwania wektorowego lub wyszukiwania hybrydowego (wyszukiwanie wektorowe i semantyczne).
- Następnie usługa uzupełniania czatu usługi Azure OpenAI używa tych wyników wyszukiwania do generowania niestandardowej odpowiedzi z powrotem do zapytania użytkownika.
Jeśli używasz aplikacji, takich jak systemy zarządzania zawartością (CMS), aplikacje do handlu elektronicznego lub witryny do gier, z danymi hostowanymi w usłudze Azure Database for MySQL, możesz ulepszyć środowisko użytkownika, tworząc generowanie aplikacji do wyszukiwania i czatów sztucznej inteligencji przy użyciu funkcji LLMs dostępnych w usłudze Azure OpenAI oraz magazynu wektorów i indeksowania udostępnianego przez usługę Azure AI Search.