Modulares Design fördern

Last reviewed 2024-12-06 UTC

Dieses Prinzip im Bereich „Leistungsoptimierung“ des Google Cloud Well-Architected Framework enthält Empfehlungen zur Förderung eines modularen Designs. Modulare Komponenten und übersichtliche Schnittstellen können eine flexible Skalierung, unabhängige Updates und eine zukünftige Komponententrennung ermöglichen.

Übersicht über die Grundsätze

Die Abhängigkeiten zwischen den Anwendungskomponenten und den Systemkomponenten verstehen, um ein skalierbares System zu entwerfen.

Das modulare Design ermöglicht Flexibilität und Stabilität, unabhängig davon, ob anfangs eine monolithische oder eine Mikrodienstarchitektur bereitgestellt wurde. Wenn Sie das System in klar definierte, unabhängige Module mit eindeutigen Schnittstellen zerlegen, können Sie einzelne Komponenten an bestimmte Anforderungen anpassen.

Durch gezieltes Skalieren können Sie die Ressourcennutzung optimieren und Kosten auf folgende Weise senken:

  • Es werden nur die erforderlichen Ressourcen für jede Komponente bereitgestellt und weniger anspruchsvollen Komponenten werden weniger Ressourcen zugewiesen.
  • In Zeiten mit hohem Traffic werden zusätzliche Ressourcen hinzugefügt, um die Nutzerfreundlichkeit zu gewährleisten.
  • Entfernt nicht ausgelastete Ressourcen, ohne die Leistung zu beeinträchtigen.

Die Modularität verbessert auch die Wartungsfreundlichkeit. Kleinere, in sich geschlossene Einheiten sind leichter zu verstehen, zu debuggen und zu aktualisieren, was zu schnelleren Entwicklungszyklen und einem geringeren Risiko führen kann.

Die Modularität bietet zwar erhebliche Vorteile, Sie müssen aber die potenziellen Leistungseinbußen berücksichtigen. Die vermehrte Kommunikation zwischen Modulen kann zu Latenz und Overhead führen. Achten Sie auf ein ausgewogenes Verhältnis zwischen Modularität und Leistung. Ein stark modulares Design ist möglicherweise nicht universell geeignet. Wenn die Leistung entscheidend ist, kann ein enger gekoppelter Ansatz sinnvoll sein. Der Systementwurf 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.

Lose Kopplung

Entwerfen Sie eine lose gekoppelte Architektur. Unabhängige Komponenten mit minimalen Abhängigkeiten können Ihnen helfen, skalierbare und robuste Anwendungen zu erstellen. Bei der Planung der Grenzen für Ihre Dienste müssen Sie die Anforderungen an Verfügbarkeit und Skalierbarkeit berücksichtigen. Wenn eine Komponente beispielsweise Anforderungen hat, die sich von denen Ihrer anderen Komponenten unterscheiden, können Sie sie als eigenständigen Dienst konzipieren. Implementieren Sie einen Plan für kontrollierte Fehler für weniger wichtige untergeordnete Prozesse oder Dienste, die sich nicht auf die Reaktionszeit der primären Dienste auswirken.

Entwicklung an Nebenläufigkeit und Parallelität orientieren

Entwickeln Sie Ihre Anwendung so, dass sie mehrere Aufgaben gleichzeitig ausführen kann, z. B. mehrere Nutzeranfragen verarbeiten oder Hintergrundjobs ausführen, während Nutzer mit Ihrem System interagieren. Teilen Sie große Aufgaben in kleinere Teile auf, die gleichzeitig von mehreren Dienstinstanzen verarbeitet werden können. Mit der gleichzeitigen Ausführung von Aufgaben können Sie Funktionen wie die automatische Skalierung verwenden, um die Ressourcenzuweisung in Produkten wie den folgenden zu erhöhen:

Modularität für flexible Ressourcenzuweisung ausgleichen

Achten Sie nach Möglichkeit darauf, dass jede Komponente nur die für bestimmte Vorgänge erforderlichen Ressourcen (z. B. Arbeitsspeicher, Speicher und Rechenleistung) verwendet. Eine Überzuweisung von Ressourcen kann zu unnötigen Kosten führen, während eine Unterzuweisung die Leistung beeinträchtigen kann.

Gut definierte Schnittstellen verwenden

Sorgen Sie dafür, dass modulare Komponenten effektiv über klare, standardisierte Schnittstellen (z. B. APIs und Message Queues) kommunizieren, um den Overhead durch Übersetzungsebenen oder unnötigen Traffic zu reduzieren.

Zustandslose Modelle verwenden

Ein zustandsloses Modell kann dazu beitragen, dass Sie jede Anfrage oder Interaktion mit dem Dienst unabhängig von vorherigen Anfragen verarbeiten können. Dieses Modell erleichtert die Skalierbarkeit und Wiederherstellbarkeit, da Sie den Dienst erweitern, verkleinern oder neu starten können, ohne die Daten zu verlieren, die für laufende Anfragen oder Prozesse erforderlich sind.

Ergänzende Technologien auswählen

Wählen Sie Technologien aus, die das modulare Design ergänzen. Bewerten Sie Programmiersprachen, Frameworks und Datenbanken hinsichtlich ihrer Unterstützung für Modularität.

Weitere Informationen finden Sie in den folgenden Ressourcen: