Architektura punktu odniesienia usługi Azure Spring Apps

Azure Application Gateway
Azure Key Vault
Azure Spring Apps
Azure Database for MySQL

W tej architekturze referencyjnej opisano sposób uruchamiania obciążeń Java Spring Boot w usłudze Azure Spring Apps. Projekt używa nadmiarowości strefy do osiągnięcia wysokiej dostępności. Zaimplementuj ten projekt, aby zapobiec awarii aplikacji w przypadku awarii we wszystkich centrach danych w strefie.

Ta architektura ułatwia:

  • Zwiększ dostępność aplikacji w ramach wdrożenia jednostrefowego.
  • Zwiększ ogólną odporność i cel poziomu usług (SLO) aplikacji.

To rozwiązanie przedstawia strategię odniesienia wdrożenia usługi Azure Spring Apps. Aby zapoznać się z innymi rozwiązaniami opartymi na tej architekturze, zobacz Wdrażanie usługi Azure Spring Apps w wielu regionach i usługi Azure Spring Apps zintegrowanych ze strefami docelowymi.

Napiwek

Logo usługi GitHubZobacz przykładową implementację, która ilustruje niektóre wybory projektowe tej architektury. Rozważ tę implementację jako pierwszy krok w kierunku produkcji.

Architektura

Na poniższym diagramie przedstawiono architekturę dla tego podejścia:

Diagram przedstawiający architekturę referencyjną usługi Azure Spring Apps w wielu regionach.Pobierz plik programu Visio z tą architekturą.

Przepływ pracy

Ten przepływ pracy odpowiada poprzedniemu diagramowi:

  1. Użytkownik uzyskuje dostęp do aplikacji przy użyciu nazwy hosta HTTP aplikacji, takiej jak www.contoso.com. Usługa Azure DNS służy do rozpoznawania żądania dla tej nazwy hosta w publicznym punkcie końcowym bramy aplikacja systemu Azure Gateway.

  2. Usługa Application Gateway służy do sprawdzania żądania. Służy również do przesyłania dalej dozwolonego ruchu do adresu IP modułu równoważenia obciążenia, który znajduje się w aprowizowanych wystąpieniach usługi Azure Spring Apps. Usługa Application Gateway jest zintegrowana z usługą Azure Web Application Firewall.

  3. Wewnętrzny moduł równoważenia obciążenia służy do kierowania ruchu do usług zaplecza.

  4. Podczas przetwarzania żądania aplikacja komunikuje się z innymi usługami platformy Azure w sieci wirtualnej. Na przykład aplikacja może odbierać wpisy tajne z usługi Azure Key Vault lub stan przechowywania z bazy danych.

Składniki

Następujące usługi platformy Azure są składnikami tej architektury:

  • Standardowa wersja usługi Azure Spring Apps służy do hostowania przykładowej aplikacji Java Spring Boot zaimplementowanej jako mikrousługi.

  • Standardowa wersja 2 usługi Application Gateway służy do zarządzania ruchem do aplikacji. Działa jako lokalny zwrotny serwer proxy w regionie, w którym działa aplikacja.

    Ta jednostka SKU ma zintegrowaną zaporę aplikacji internetowej, aby chronić aplikacje internetowe przed programami wykorzystującymi luki w zabezpieczeniach i lukami w zabezpieczeniach. Zapora aplikacji internetowej w usłudze Application Gateway śledzi luki w zabezpieczeniach open Web Application Security Project (OWASP).

  • Usługa Azure DNS służy do rozpoznawania żądań wysyłanych do nazwy hosta aplikacji. Rozwiązuje te żądania do publicznego punktu końcowego usługi Application Gateway. Prywatne strefy usługi Azure DNS służą do rozpoznawania żądań do prywatnych punktów końcowych, które uzyskują dostęp do nazwanych zasobów usługi Azure Private Link .

  • Usługa Azure Database for MySQL służy do przechowywania stanu w relacyjnej bazie danych zaplecza.

  • Usługa Key Vault służy do przechowywania wpisów tajnych aplikacji i certyfikatów. Mikrousługi uruchamiane w usłudze Azure Spring Apps używają wpisów tajnych aplikacji. Usługi Azure Spring Apps i Application Gateway używają certyfikatów do zachowywania nazw hostów.

Alternatywy

Usługa Azure Database for MySQL nie jest jedyną opcją dla bazy danych. Możesz również użyć polecenia:

Nadmiarowość

Tworzenie nadmiarowości w obciążeniu w celu zminimalizowania pojedynczych punktów awarii. W tej architekturze są replikowane składniki między strefami w regionie. W architekturze upewnij się, że używasz stref dostępności dla wszystkich składników konfiguracji.

Usługi platformy Azure nie są obsługiwane we wszystkich regionach i nie we wszystkich regionach obsługują strefy. Przed wybraniem regionu sprawdź jego obsługę regionalną i strefową.

Usługi strefowo nadmiarowe automatycznie replikują lub dystrybuują zasoby między strefami. Zawsze dostępne usługi są zawsze dostępne we wszystkich lokalizacjach geograficznych platformy Azure i są odporne na awarie całej strefy i całego regionu.

W poniższej tabeli przedstawiono typy odporności usług w tej architekturze:

Usługa Odporność
Usługa DNS platformy Azure Zawsze dostępne
Application Gateway Strefowo nadmiarowy
Azure Spring Apps Strefowo nadmiarowy
Azure Database for MySQL Strefowo nadmiarowy
Key Vault Strefowo nadmiarowy
Azure Virtual Network Strefowo nadmiarowy
Prywatne punkty końcowe platformy Azure Strefowo nadmiarowy

Usługa Azure Spring Apps obsługuje nadmiarowość strefową. Dzięki nadmiarowości strefy cała podstawowa infrastruktura usługi jest rozłożona na wiele stref dostępności, co zapewnia wyższą dostępność aplikacji. Aplikacje są skalowane w poziomie bez żadnych zmian w kodzie. Sieć o wysokiej wydajności łączy strefy dostępności platformy Azure. Połączenie ma opóźnienie dwukierunkowe mniejsze niż 2 milisekundy (ms). Nie trzeba polegać na asynchronicznej replikacji obciążeń danych, co często stanowi wyzwanie projektowe.

Dla usługi Application Gateway skonfigurowano wiele stref dostępności, w tym publiczny adres IP używany przez usługę Application Gateway. Publiczne adresy IP ze standardową jednostkę SKU obsługują strefy dostępności.

Ta architektura korzysta z usługi Azure Database for MySQL z opcją wdrażania serwera elastycznego w celu zapewnienia wysokiej dostępności z automatycznym trybem failover. W zależności od wymagań dotyczących opóźnień wybierz strefowo nadmiarową wysoką dostępność lub wysoką dostępność w tej samej strefie. Dzięki konfiguracji wysokiej dostępności opcja Serwer elastyczny automatycznie aprowizuje replikę rezerwową i zarządza nią. Jeśli wystąpi awaria, zatwierdzone dane nie zostaną utracone.

Usługa Key Vault jest automatycznie strefowo nadmiarowa w dowolnym regionie, w którym są dostępne strefy dostępności. Wystąpienie usługi Key Vault używane w tej architekturze jest wdrażane w celu przechowywania wpisów tajnych dla usług zaplecza.

Skalowalność

Skalowalność wskazuje zdolność obciążenia do wydajnego spełnienia wymagań, które użytkownicy na nim umieszczają. Podejście wielostrefowe jest lepsze w przypadku skalowalności niż wdrożenie jednostrefowe, ponieważ rozkłada obciążenie między strefy dostępności.

Ta architektura zawiera kilka składników, które mogą być skalowane automatycznie na podstawie metryk:

W zależności od konfiguracji bazy danych może wystąpić dodatkowe opóźnienie w przypadku konieczności synchronizowania danych między strefami.

Bezpieczeństwo sieci

Chroń aplikację przed nieautoryzowanym dostępem z Internetu, systemami w sieciach prywatnych, innymi usługami platformy Azure i ściśle powiązanymi zależnościami.

Sieć wirtualna to podstawowy blok konstrukcyjny dla sieci prywatnej na platformie Azure. Ta architektura używa sieci wirtualnej dla regionu wdrożenia. Umieść składniki w podsieciach, aby utworzyć dalszą izolację. Usługa Azure Spring Apps wymaga dedykowanej podsieci środowiska uruchomieniowego usługi i oddzielnej podsieci aplikacji Java Spring Boot.

Ochrona sieci wirtualnych za pomocą usługi Azure DDoS Protection. Połącz ochronę przed rozproszoną odmową usługi (DDoS) z najlepszymi rozwiązaniami dotyczącymi projektowania aplikacji, aby zapewnić ulepszone środki zaradcze w celu obrony przed atakami DDoS.

Projekt architektury obejmuje kilka rozwiązań platformy jako usługi (PaaS), które ułatwiają przetwarzanie żądania użytkownika. Umieść ścisłe mechanizmy kontroli sieci dla tych usług, aby upewnić się, że aplikacja nie ma wpływu na aplikację.

Łączność prywatna

Użyj prywatnych punktów końcowych lub integracji sieci, aby zapewnić komunikację z usługi Azure Spring Apps do usług pomocniczych, takich jak Key Vault i Azure Database for MySQL.

Użyj prywatnych punktów końcowych, aby kontrolować dostęp. Interfejsy sieciowe używają prywatnych adresów IP do transferu usług do sieci wirtualnej. Ta architektura korzysta z usług platformy Azure, które automatycznie konfigurują prywatne punkty końcowe.

Wdróż usługę Azure Spring Apps w sieci za pośrednictwem procesu iniekcji sieci wirtualnej. Dostęp do aplikacji jest uzyskiwany przez dotarcie do prywatnego adresu IP.

Baza danych jest zgodna z podobnym modelem. Tryb wdrażania serwera elastycznego usługi Azure Database for MySQL obsługuje integrację sieci wirtualnej za pośrednictwem dedykowanej podsieci.

Inne usługi, takie jak Key Vault, są połączone z siecią wirtualną za pośrednictwem usługi Private Link. W przypadku usługi Private Link należy włączyć prywatny punkt końcowy, aby wyłączyć dostęp do sieci publicznej. Aby uzyskać więcej informacji, zobacz Integrowanie usługi Key Vault z usługą Private Link.

Prywatne punkty końcowe nie wymagają dedykowanej podsieci, ale dobrym rozwiązaniem jest umieszczenie ich w oddzielnej podsieci. Prywatne adresy IP do prywatnych punktów końcowych są przypisywane z tej podsieci.

Prywatny punkt końcowy i połączenia zintegrowane z siecią używają strefy prywatnej usługi Azure DNS.

Kontrolki przepływu ruchu

W przypadku tej architektury żądania przychodzące są dozwolone tylko za pośrednictwem publicznego punktu końcowego udostępnianego przez usługę Application Gateway. Ruch nadal musi być sprawdzany w celu blokowania luk w zabezpieczeniach i luk w zabezpieczeniach. Zapora aplikacji internetowej w usłudze Application Gateway śledzi luki w zabezpieczeniach OWASP. Ruch przychodzący jest sprawdzany na podstawie skonfigurowanych reguł z akcją do wykonania.

Wystąpienie usługi Azure Spring Apps ma wewnętrzny moduł równoważenia obciążenia, który kieruje i dystrybuuje ruch do usług zaplecza. Moduł równoważenia obciążenia jest skonfigurowany do akceptowania ruchu tylko z usługi Application Gateway.

Aplikacja może wymagać połączenia z innymi punktami końcowymi za pośrednictwem publicznego Internetu. Aby ograniczyć ten przepływ, rozważ umieszczenie usługi Azure Firewall w ścieżce ruchu wychodzącego.

Konfiguracja zwrotnego serwera proxy

To rozwiązanie używa usługi Application Gateway jako zwrotnego serwera proxy. Można jednak używać różnych odwrotnych serwerów proxy przed usługą Azure Spring Apps. Możesz połączyć usługę Application Gateway z usługą Azure Front Door lub użyć usługi Azure Front Door zamiast usługi Application Gateway.

Aby uzyskać informacje na temat scenariuszy zwrotnego serwera proxy, sposobu ich konfigurowania i zagadnień dotyczących zabezpieczeń, zobacz Uwidacznij usługę Azure Spring Apps za pośrednictwem zwrotnego serwera proxy.

Zarządzanie tożsamościami i dostępem

Oprócz używania mechanizmów kontroli sieci wzmacniają stan zabezpieczeń przy użyciu tożsamości jako obwodu.

Aplikacja powinna się uwierzytelniać podczas nawiązywania połączenia z usługami zaplecza, na przykład jeśli aplikacja pobiera wpisy tajne z usługi Key Vault. W aplikacji zalecane jest włączenie tożsamości zarządzanych firmy Microsoft dla zasobów platformy Azure. Ta metoda konfiguracji przypisuje tożsamość do aplikacji, aby mogła uzyskać tokeny identyfikatora Entra firmy Microsoft, co zmniejsza obciążenie związane z zarządzaniem poświadczeniami.

Ta architektura używa tożsamości zarządzanych przypisanych przez system do kilku interakcji.

Usługi zaplecza powinny zezwalać na dostęp do jednostki usługi przydzielonej do tożsamości zarządzanej. Usługa powinna definiować minimalne zasady dostępu dla niektórych akcji. W tej architekturze usługa Key Vault umożliwia aplikacji dostęp do wpisów tajnych, certyfikatów i kluczy.

Zarządzanie wpisami tajnymi

Ta architektura przechowuje wpisy tajne i certyfikaty aplikacji w jednym magazynie kluczy. Wpisy tajne aplikacji i certyfikaty do zachowywania nazw hostów są różne, dlatego warto przechowywać te elementy w oddzielnych magazynach kluczy. To alternatywne podejście dodaje kolejny magazyn kluczy do architektury.

Monitorowanie

Usługa Azure Monitor to rozwiązanie do monitorowania służące do zbierania, analizowania i reagowania na dane monitorowania ze środowisk w chmurze i środowiskach lokalnych.

Dodaj instrumentację do aplikacji, aby emitować dzienniki i metryki na poziomie kodu. Rozważ włączenie śledzenia rozproszonego w celu zapewnienia wglądu w usługi w ramach wystąpienia usługi Azure Spring Apps. Użyj narzędzia do zarządzania wydajnością aplikacji (APM), aby zbierać dzienniki i dane metryk. Agent aplikacji Szczegółowe informacje Java dla usługi Azure Monitor jest dobrym wyborem dla narzędzia APM.

Użyj diagnostyki platformy, aby uzyskać dzienniki i metryki ze wszystkich usług platformy Azure, takich jak Azure Database for MySQL. Integrowanie wszystkich danych z dziennikami usługi Azure Monitor w celu zapewnienia kompleksowego wglądu w aplikację i usługi platformy.

Obszar roboczy usługi Azure Log Analytics to ujście danych monitorowania, które zbiera dzienniki i metryki z zasobów platformy Azure i Szczegółowe informacje aplikacji. To rozwiązanie rejestrowania zapewnia widoczność, co ułatwia automatyzację procesów skalowania składników w czasie rzeczywistym. Analizowanie danych dziennika może również ujawnić nieefektywność w kodzie aplikacji, które można rozwiązać w celu zwiększenia kosztów i wydajności.

Aby zapoznać się ze wskazówkami dotyczącymi monitorowania specyficznymi dla aplikacji Spring, zobacz Monitor applications end-to-end and Monitor with Dynatrace Java OneAgent (Monitorowanie aplikacji za pomocą oprogramowania Dynatrace Java OneAgent).

Wdrożenie automatyczne

Automatyzowanie wdrażania infrastruktury i wdrożeń kodu aplikacji w jak największej ilości.

Automatyzacja wdrożeń infrastruktury gwarantuje, że konfiguracja infrastruktury jest identyczna, co pomaga uniknąć dryfu konfiguracji, potencjalnie między środowiskami. Do testowania operacji trybu failover można również użyć automatyzacji infrastruktury.

Możesz użyć strategii wdrażania niebiesko-zielonych lub kanarowych dla aplikacji.

Kwestie wymagające rozważenia

Te zagadnienia implementują filary struktury Azure Well-Architected Framework, która jest zestawem wytycznych, które mogą służyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.

Poniższe zagadnienia zawierają wskazówki dotyczące implementowania filarów platformy Azure Well-Architected Framework w kontekście tej architektury.

Niezawodność

Niezawodność gwarantuje, że aplikacja może spełnić zobowiązania wobec klientów. Aby uzyskać więcej informacji, zobacz Omówienie filaru niezawodności.

Zaimplementuj następujące sugestie, aby utworzyć bardziej niezawodną aplikację:

Zabezpieczenia

Zabezpieczenia zapewniają ochronę przed celowymi atakami i nadużyciami cennych danych i systemów. Aby uzyskać więcej informacji, zobacz Omówienie filaru zabezpieczeń.

Zaimplementuj następujące sugestie, aby utworzyć bezpieczniejszą aplikację:

Optymalizacja kosztów

Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Omówienie filaru optymalizacji kosztów.

W przypadku tej architektury należy oczekiwać wyższych kosztów, ponieważ składniki są wdrażane w wielu strefach. Zamiast jednego wystąpienia usługi Azure Spring Apps uruchamiasz dwa lub nawet trzy wystąpienia. Nie ma jednak dodatkowych kosztów włączenia nadmiarowości strefy w usłudze. Aby uzyskać więcej informacji, zobacz Cennik usługi Azure Spring Apps.

Rozważ następujące opcje implementacji, aby sprostać kosztom:

  • Różne aplikacje i typy aplikacji można wdrożyć w jednym wystąpieniu usługi Azure Spring Apps. Podczas wdrażania wielu aplikacji koszt podstawowej infrastruktury jest współużytkowany w aplikacjach.

  • Usługa Azure Spring Apps obsługuje skalowanie automatyczne aplikacji wyzwalane przez metryki lub harmonogramy, co może zwiększyć wykorzystanie i wydajność kosztów.

  • Aby obniżyć koszty operacyjne, możesz użyć Szczegółowe informacje aplikacji w usłudze Azure Monitor. Ciągłe monitorowanie może pomóc w szybszym rozwiązywaniu problemów i poprawieniu kosztów i wydajności.

  • Wybierz najlepszą warstwę cenową na podstawie wymagań:

  • Skalowanie automatyczne umożliwia aplikacjom skalowanie w górę i w dół na podstawie zapotrzebowania.

Szacowany koszt usług dla tej architektury można znaleźć w kalkulatorze cen platformy Azure. To oszacowanie używa rozsądnych wartości domyślnych dla aplikacji o małej skali. Oszacowanie można zaktualizować na podstawie oczekiwanych wartości przepływności dla aplikacji.

Doskonałość operacyjna

Doskonałość operacyjna obejmuje procesy operacyjne, które wdrażają aplikację i działają w środowisku produkcyjnym. Aby uzyskać więcej informacji, zobacz Omówienie filaru doskonałości operacyjnej.

Oprócz opisanych wcześniej wskazówek dotyczących monitorowania zaimplementuj następujące sugestie, aby ułatwić wdrażanie i monitorowanie aplikacji.

Efektywność wydajności

Efektywność wydajności to możliwość skalowania obciążenia w celu zaspokojenia zapotrzebowania użytkowników w wydajny sposób. Aby uzyskać więcej informacji, zobacz Omówienie filaru wydajności.

Zaimplementuj następujące sugestie, aby utworzyć wydajniejszą aplikację:

Wdrażanie tego scenariusza

Aby wdrożyć tę architekturę, postępuj zgodnie z instrukcjami krok po kroku w architekturze referencyjnej wielostrefowej usługi Azure Spring Apps. Wdrożenie korzysta z szablonów programu Terraform.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Główny autor:

Aby wyświetlić niepubalne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki