Berücksichtigen bewährter Methoden für die App-Entwicklung

Abgeschlossen

In dieser Lektion werden einige bewährte Methoden vorgestellt, die Sie beim Entwickeln von Apps mit „Azure Database for MySQL – Flexibler Server“ anwenden können und die dazu beitragen, eine bessere Leistung, Resilienz und Sicherheit zu gewährleisten. Dabei gilt Folgendes als Best Practice:

  • Zusammenstellen von Ressourcen
  • Implementieren von Verbindungspooling
  • Auswählen der richtigen App-Containergröße.
  • Implementieren von Netzwerkisolation und SSL-Konnektivität
  • Implementieren von Wiederholungslogik zum Behandeln vorübergehender Fehler
  • Auswählen der richtigen Compute- und Speichergröße für die Datenbank.

Diese bewährten Methoden werden während des App-Entwicklungsprozesses mit „Azure Database for MySQL – Flexibler Server“ an verschiedenen Stellen angewendet, wie im folgenden Diagramm dargestellt.

Diagramm mit sechs wichtigen bewährten Methoden für die App-Entwicklung.

Hinweis

Diese Liste bewährter Methoden ist nicht vollständig. Lesen Sie die Azure Database for MySQL-Dokumentation, um ausführliche Leitfäden zum Implementieren bewährter Methoden im Zusammenhang mit Netzwerken, Sicherheit, Überwachung, Leistungsoptimierung, BCDR usw. zu erhalten.

Zusammenstellen von Ressourcen

Stellen Sie beim Bereitstellen Ihrer App in Azure sicher, dass alle Ihre Ressourcenabhängigkeiten in derselben Region gehostet werden. Wenn Sie die Ressourceninstanzen auf verschiedene Regionen oder Verfügbarkeitszonen verteilen, kann dies zu Netzwerklatenz führen, die sich auf die Gesamtleistung Ihrer App auswirken kann.

Implementieren von Verbindungspooling

Das Verwalten von Datenbankverbindungen innerhalb einer App kann signifikante Auswirkungen auf die allgemeine Leistung der App haben. Um die Leistung und Resilienz der App zu verbessern, sollten Sie für Verbindungen mit „MySQL – Flexibler Server“ das Verbindungspooling implementieren. Ein Verbindungspooler (wie ProxySQL) kann die Anzahl der Verbindungen im Leerlauf verringern und vorhandene Verbindungen wiederverwenden.

Tipp

Um die Leistung zu optimieren, reduzieren Sie in wichtigen Codepfaden die Häufigkeit, mit der Verbindungen hergestellt werden, und die Zeit für das Herstellen von Verbindungen.

Auswählen der richtigen App-Containergröße

Da die Auswahl der geeigneten Größe für Ihren App-Container von entscheidender Bedeutung ist, müssen Sie sicherstellen, dass die App über genügend Compute- und Arbeitsspeicherressourcen verfügt, um erwartete Lasten zu verarbeiten. Sie können Tools wie JMeter verwenden, um Auslastungstests zu unterstützen, wodurch Sie Ihre Ressourcen basierend auf den Ergebnissen richtig dimensionieren können.

Implementieren von Netzwerkisolation und SSL-Konnektivität

„Azure Database for MySQL – Flexibler Server“ mit der VNet-Integration (die Konnektivitätsmethode für den privaten Zugriff) bietet Netzwerksicherheit und Netzwerkisolation. Sie können die VNet-Integration verwenden, um den Serverzugriff nur auf Ihre VNet-Infrastruktur (virtuelles Netzwerk) zu begrenzen (zu sperren). Private Endpunkte verbessern diese Sicherheit, indem sie es Ihnen ermöglichen, eine sichere Verbindung mit Ihrem flexiblen Server über ein privates Netzwerk herzustellen. So werden die Risiken des öffentlichen Internets vermieden. Sie können Ihre App- und Datenbankressourcen entweder in einem einzelnen VNet oder in verschiedenen VNets in derselben oder unterschiedlichen Regionen sichern (und nahtlos mit dem Peering virtueller Netzwerke verbinden).

Es wird zudem empfohlen, in Übertragung begriffene Daten zu schützen, indem Ihre App mithilfe von Secure Sockets Layer (SSL) eine Verbindung mit einem flexiblen MySQL-Server herstellt.

Implementieren von Wiederholungslogik zum Behandeln vorübergehender Fehler

Da in Cloudumgebungen mit größerer Wahrscheinlichkeit vorübergehende Fehler wie Unterbrechungen der Netzwerkkonnektivität oder Diensttimeouts auftreten, müssen Sie in Ihren Apps Logik zum Behandeln dieser Probleme implementieren. In der Regel werden dazu Anforderungen nach einer Verzögerung wiederholt.

Es empfiehlt sich, vor dem ersten Wiederholungsversuch fünf Sekunden zu warten. Erhöhen Sie dann bei jedem nachfolgenden Wiederholungsversuche die Wartezeit schrittweise bis zu 60 Sekunden. Nach einer festgelegten Anzahl von Wiederholungen kann die App den Vorgang als fehlgeschlagen einordnen und Sie benachrichtigen, damit Sie den fortbestehenden Fehler weiter untersuchen können.

Auswählen der richtigen Compute- und Speichergröße für die Datenbank

Es ist wichtig, Ihre Workload zu analysieren und die passende Größe für Ihre flexiblen MySQL-Serverinstanzen auszuwählen, um ein akzeptables Gleichgewicht zwischen Leistung der App und Kosten zu erreichen.

Compute

Sie können einen flexiblen MySQL-Server in einer von drei Computeebenen erstellen: burstfähig, universell und unternehmenskritisch. Betrachten Sie die Details in der folgenden Tabelle als Ausgangspunkt für die Auswahl der Berechnungsstufe.

Computeebene Zielworkloads
Burstfähig Am besten geeignet für Workloads, die nicht kontinuierlich die vollständige CPU benötigen. Kosteneffizient für kleinere Web-Apps und Workloads in Entwicklungsumgebungen.
Universell Am besten geeignet für die meisten Unternehmensworkloads mit ausgeglichenen Compute- und Arbeitsspeicheranforderungen und skalierbarem E/A-Durchsatz. Beispiele hierfür sind Server zum Hosten von Web-Apps und mobilen Apps sowie anderen Apps für Unternehmen.
Unternehmenskritisch Am besten für Hochleistungs-Datenbankworkloads geeignet, für die In-Memory-Leistung erforderlich ist, um eine schnellere Transaktionsverarbeitung und höhere Parallelität zu erzielen. Hierzu zählen beispielsweise Server für die Verarbeitung von Echtzeitdaten und leistungsstarke Transaktions- oder Analyse-Apps.

Sie können die Größe von flexiblen MySQL-Servern nach der Erstellung zwar ändern, aber sie können nur zwischen den Ebenen „universell“ oder „unternehmenskritisch“ skaliert werden.

Storage

Im Hinblick auf den Speicher können Sie hochskalieren, wenn Sie sich den Grenzwerten der Speicherkapazität nähern. Außerdem können Sie das Feature der automatischen Speichervergrößerung aktivieren, mit dem der Dienst den Speicher automatisch skaliert, wenn dieser sich den Grenzwerten nähert.

Um rechtzeitig fundierte Entscheidungen zu Compute und Speicher zu treffen, überwachen Sie durchgehend wichtige Azure Monitor-Metriken wie Host-CPU in Prozent, Hostarbeitsspeicher in Prozent, Speicher in Prozent, E/A in Prozent, aktive Verbindungen usw., oder richten Sie Warnungen ein, sodass Sie benachrichtigt werden, wenn sich die Lösung den Grenzwerten Ihrer Bereitstellung nähert.

Anpassen von IOPS für eine optimale Leistung

Eine erhebliche Verbesserung in „Azure Database for MySQL – Flexibler Server“ ist das Feature „IOPS-Autoskalierung“ (Input/Output Operations Per Second, Eingabe-/Ausgabevorgänge pro Sekunde), das das vorhandene vorab bereitgestellte IOPS-Feature ergänzt. In diesem Abschnitt wird erläutert, wie Sie Optionen für vorab bereitgestelltes IOPS und IOPS-Autoskalierung verwenden können, um die Datenbankleistung je nach unterschiedlichen Workloadanforderungen zu optimieren.

Vorab bereitgestellte IOPS

Sie können Ihrer Datenbankinstanz eine bestimmte Anzahl von IOPS zuweisen, indem Sie vorab bereitgestelltes IOPS verwenden. Dieses Feature ist für Workloads von entscheidender Bedeutung, die eine konsistente und vorhersehbare Leistung erfordern. Durch Festlegen eines definierten IOPS-Grenzwerts können Sie sicherstellen, dass Ihre Datenbank eine festgelegte Anzahl von Anforderungen pro Sekunde verarbeiten kann, wodurch eine stabile und zuverlässige Leistung gewährleistet wird. Darüber hinaus haben Sie die Flexibilität, die Anzahl der bereitgestellten IOPS bei Änderungen Ihrer Workload anzupassen, was sowohl Skalierbarkeit als auch präzise Steuerung der Datenbankleistung ermöglicht.

IOPS für Autoskalierung

Die IOPS-Autoskalierung bietet eine dynamische Leistungsskalierung, ein wesentliches Feature für die effektive Verwaltung schwankender Workloads. Wenn dieses Feature aktiviert ist, passt der Datenbankserver IOPS automatisch an den Echtzeitbedarf an, ohne dass eine Vorabbereitstellung erforderlich ist. Diese Flexibilität ist besonders für unternehmenskritische Apps der Ebene 1 von Vorteil, die möglicherweise variable Leistungsanforderungen haben.

Zu den wichtigsten Vorteilen der IOPS-Autoskalierung zählen:

  • Dynamische Skalierung: Das Feature für die IOPS-Autoskalierung passt die IOPS-Grenzwerte automatisch basierend auf den tatsächlichen Workloadanforderungen an. Diese dynamische Anpassung trägt dazu bei, dass Ihre Datenbank ohne manuelle Eingriffe konsistent mit optimaler Leistung funktioniert.

  • Verarbeiten von Workloadspitzen: Mit diesem Feature kann Ihre Datenbank plötzliche Laststeigerungen nahtlos verarbeiten, wodurch sichergestellt wird, dass die App-Leistung in Spitzenzeiten konsistent bleibt. Diese Funktion ist entscheidend für die Aufrechterhaltung der Dienstverfügbarkeit und Benutzerzufriedenheit.

  • Kosteneffizienz: Im Gegensatz zu vorab bereitgestelltem IOPS, wobei Sie unabhängig von der tatsächlichen Nutzung für einen bestimmten Grenzwert bezahlen, stellt die IOPS-Autoskalierung sicher, dass Sie nur für die tatsächlich verwendeten E/A-Vorgänge bezahlen. Dies kann zu erheblichen Kosteneinsparungen führen, insbesondere bei Datenbanken mit variablen E/A-Anforderungen.

  • Vereinfachte Verwaltung: Durch den geringeren Aufwand für die manuelle Skalierung und Kapazitätsplanung gibt die IOPS-Autoskalierung Administrationsressourcen frei, sodass sich Ihr Team auf strategische Initiativen und nicht auf Routinewartung konzentrieren kann.