Wdrażanie aplikacji i integracja z innymi usługami platformy Azure

Ukończone

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:

Diagram przedstawiający trzy opcje używania bazy danych MySQL w aplikacji 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:

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

  2. 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.
  3. Utwórz rejestr kontenerów platformy Azure i wypchnij aplikację do rejestru jako obraz platformy Docker.

  4. Utwórz klaster usługi AKS i dołącz konto usługi Azure Container Registry do klastra.

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

  1. 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.
  2. Dane są wektoryzowane przez wbudowane wywołanie modelu osadzania tekstu w usłudze Azure OpenAI.
  3. Usługa Azure AI Search następnie utrwala te wektoryzowane dane w indeksie wyszukiwania wektorowego.
  4. Gdy użytkownik korzysta z aplikacji do czatu klienckiego, zapytanie jest wysyłane do usługi uzupełniania czatu usługi Azure OpenAI.
  5. 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).
  6. 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.