Modulares Design fördern

Last reviewed 2024-12-06 UTC

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

Grundsatzübersicht

Sie müssen die Abhängigkeiten zwischen den Anwendungskomponenten und den Systemkomponenten kennen, um ein skalierbares System zu entwickeln.

Ein modulares Design ermöglicht Flexibilität und Robustheit, unabhängig davon, ob ursprünglich eine monolithische Architektur oder eine Architektur mit Mikrodiensten bereitgestellt wurde. Wenn Sie das System in klar definierte, unabhängige Module mit klaren Schnittstellen unterteilen, können Sie einzelne Komponenten an bestimmte Anforderungen anpassen.

Durch gezielte Skalierung lässt sich die Ressourcennutzung optimieren und die Kosten auf folgende Weise senken:

  • Für jede Komponente werden nur die erforderlichen Ressourcen bereitgestellt und weniger Ressourcen für weniger anspruchsvolle Komponenten zugewiesen.
  • In Zeiten mit hohem Traffic werden weitere Ressourcen hinzugefügt, um die Nutzerfreundlichkeit aufrechtzuerhalten.
  • Nicht ausgelastete Ressourcen werden entfernt, 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 verstärkte Kommunikation zwischen Modulen kann zu Latenz und Overhead führen. Sie sollten ein ausgewogenes Verhältnis zwischen Modularität und Leistung anstreben. Ein hochmodulares Design ist möglicherweise nicht universell geeignet. Wenn die Leistung entscheidend ist, kann ein enger gekoppelter Ansatz angemessener sein. Das Systemdesign ist ein iterativer Prozess, bei dem Sie Ihr modulares Design kontinuierlich überprüfen und optimieren.

Empfehlungen

Um modulare Designs zu fördern, beachten Sie die Empfehlungen in den folgenden Abschnitten.

Auf lose Kopplung setzen

Entwickeln 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 die Komponente als eigenständigen Dienst entwickeln. Implementieren Sie einen Plan für ordnungsgemäße Fehler für weniger wichtige Unterprozesse oder Dienste, die sich nicht auf die Reaktionszeit der primären Dienste auswirken.

Auf Parallelität und Parallelverarbeitung setzen

Entwickeln Sie Ihre Anwendung so, dass mehrere Aufgaben gleichzeitig ausgeführt werden können, 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 Aufgabenparallelität 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.

Klar definierte Schnittstellen verwenden

Achten Sie darauf, 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: