Modulares Design fördern

Dieses Prinzip in der Säule Leistungsoptimierung des Google Cloud Well-Architected Framework gibt Empfehlungen zur Förderung eines modularen Designs. Modulare Komponenten und klare Schnittstellen ermöglichen flexible Skalierung, unabhängige Aktualisierungen und eine zukünftige Trennung von Komponenten.

Prinzip – Übersicht

Machen Sie sich mit den Abhängigkeiten zwischen den Anwendungskomponenten und den Systemkomponenten vertraut, um ein skalierbares System zu entwerfen.

Das modulare Design sorgt für Flexibilität und Robustheit, unabhängig davon, ob zuerst eine monolithische Architektur oder eine Mikrodienstarchitektur bereitgestellt wurde. Durch das Unterteilen des Systems in klar definierte, unabhängige Module mit klaren Schnittstellen können Sie einzelne Komponenten an bestimmte Anforderungen anpassen.

Eine gezielte Skalierung kann auf folgende Weise dabei helfen, die Ressourcennutzung zu optimieren und die Kosten zu senken:

  • Stellt jeder Komponente nur die notwendigen Ressourcen bereit und weniger Ressourcen werden weniger anspruchsvollen Komponenten zugewiesen.
  • In Zeiten mit hohem Traffic werden weitere Ressourcen hinzugefügt, um die Nutzerfreundlichkeit aufrechtzuerhalten.
  • Entfernt nicht ausgelastete Ressourcen, ohne die Leistung zu beeinträchtigen.

Modularität verbessert auch die Verwaltbarkeit. Kleinere, eigenständige Einheiten sind leichter zu verstehen, zu debuggen und zu aktualisieren, was zu schnelleren Entwicklungszyklen und einem geringeren Risiko führen kann.

Obwohl Modularität erhebliche Vorteile bietet, müssen Sie die potenziellen Leistungskompromisse abwägen. Die erhöhte Kommunikation zwischen den Modulen kann Latenz und Aufwand mit sich bringen. Bemühen Sie sich um ein Gleichgewicht zwischen Modularität und Leistung. Ein stark modulares Design ist möglicherweise nicht für jedes Gerät geeignet. Wenn die Leistung von entscheidender Bedeutung ist, kann ein enger gekoppelter Ansatz geeignet sein. Das Systemdesign ist ein iterativer Prozess, bei dem Sie Ihr modulares Design kontinuierlich überprüfen und optimieren.

Empfehlungen

Beachten Sie die Empfehlungen in den folgenden Abschnitten, um modulare Designs zu fördern.

Für lose Kopplung ausgelegt

Entwerfen Sie eine los gekoppelte Architektur. Unabhängige Komponenten mit minimalen Abhängigkeiten können beim Erstellen skalierbarer und robuster Anwendungen hilfreich sein. Bei der Planung der Grenzen für Ihre Dienste müssen Sie die Anforderungen an Verfügbarkeit und Skalierbarkeit berücksichtigen. Wenn beispielsweise für eine Komponente Anforderungen gelten, die sich von den anderen Komponenten unterscheiden, können Sie die Komponente als eigenständigen Dienst entwerfen. Implementieren Sie einen Plan für Graceful Failure für weniger wichtige Unterprozesse oder Dienste, die sich nicht auf die Antwortzeit der primären Dienste auswirken.

Auf Gleichzeitigkeit und Parallelität entwerfen

Entwickeln Sie Ihre Anwendung so, dass sie mehrere Aufgaben gleichzeitig unterstützt, z. B. die Verarbeitung mehrerer Nutzeranfragen oder die Ausführung von Hintergrundjobs, während Nutzer mit Ihrem System interagieren. Teilen Sie große Aufgaben in kleinere Blöcke auf, die gleichzeitig von mehreren Dienstinstanzen verarbeitet werden können. Mit der Nebenläufigkeit von Aufgaben können Sie Features wie Autoscaling verwenden, um die Ressourcenzuweisung in Produkten wie den folgenden zu erhöhen:

Modularität für flexible Ressourcenzuweisung ausbalancieren

Achten Sie nach Möglichkeit darauf, dass jede Komponente nur die erforderlichen Ressourcen (z. B. Arbeitsspeicher, Speicher- und Prozessorleistung) für bestimmte Vorgänge verwendet. Eine übermäßige Ressourcenzuweisung kann zu unnötigen Kosten führen, während eine unzureichende Ressourcenzuweisung die Leistung beeinträchtigen kann.

Klar definierte Benutzeroberflächen verwenden

Achten Sie darauf, dass modulare Komponenten effektiv über klare, standardisierte Schnittstellen (wie APIs und Nachrichtenwarteschlangen) kommunizieren, um den Aufwand durch Übersetzungsebenen oder überflüssigen Traffic zu reduzieren.

Zustandslose Modelle verwenden

Mit einem zustandslosen Modell können Sie jede Anfrage oder Interaktion mit dem Dienst unabhängig von vorherigen Anfragen verarbeiten. Dieses Modell erleichtert die Skalierbarkeit und Wiederherstellbarkeit, da Sie den Dienst vergrößern, verkleinern oder neu starten können, ohne die für laufende Anfragen oder Prozesse erforderlichen Daten zu verlieren.

Ergänzende Technologien auswählen

Wählen Sie Technologien, die zum modularen Design passen. Bewerten Sie Programmiersprachen, Frameworks und Datenbanken im Hinblick auf ihre Modularitätsunterstützung.

Weitere Informationen finden Sie in den folgenden Ressourcen: