Dieses Prinzip in der Säule zur Leistungsoptimierung des Google Cloud Well-Architected Framework enthält Empfehlungen, die Ihnen helfen, ein modulares Design zu fördern. Modulare Komponenten und klare Schnittstellen können eine flexible Skalierung, unabhängige Updates und eine zukünftige Komponententrennung ermöglichen.
Übersicht über die Prinzipien
Abhängigkeiten zwischen den Anwendungskomponenten und den Systemkomponenten verstehen, um ein skalierbares System zu entwerfen.
Ein modulares Design ermöglicht Flexibilität und Ausfallsicherheit, unabhängig davon, ob ursprünglich eine monolithische oder eine Mikrodienstarchitektur bereitgestellt wurde. Wenn Sie das System in klar definierte, unabhängige Module mit klaren Schnittstellen aufteilen, können Sie einzelne Komponenten skalieren, um bestimmte Anforderungen zu erfüllen.
Durch gezielte Skalierung können Sie die Ressourcenauslastung optimieren und die Kosten auf folgende Weise senken:
- Stellt jeder Komponente nur die erforderlichen Ressourcen bereit und weist weniger anspruchsvollen Komponenten weniger Ressourcen zu.
- In Zeiten mit hohem Traffic werden weitere Ressourcen hinzugefügt, um die User Experience aufrechtzuerhalten.
- Entfernt nicht ausgelastete Ressourcen, ohne die Leistung zu beeinträchtigen.
Modularität verbessert auch die Wartbarkeit. Kleinere, eigenständige Einheiten sind einfacher 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 jedoch die potenziellen Leistungseinbußen berücksichtigen. Die verstärkte Kommunikation zwischen Modulen kann zu Latenz und Mehraufwand führen. Streben Sie ein ausgewogenes Verhältnis zwischen Modularität und Leistung an. Ein hochgradig modulares Design ist möglicherweise nicht universell geeignet. Wenn die Leistung entscheidend ist, kann ein enger gekoppelter Ansatz sinnvoll sein. Das Systemdesign ist ein iterativer Prozess, bei dem Sie Ihr modulares Design kontinuierlich überprüfen und verfeinern.
Empfehlungen
Beachten Sie die Empfehlungen in den folgenden Abschnitten, um modulare Designs zu fördern.
Lose Kopplung berücksichtigen
Entwerfen Sie eine lose gekoppelte Architektur. Unabhängige Komponenten mit minimalen Abhängigkeiten können Ihnen helfen, skalierbare und robuste Anwendungen zu erstellen. Wenn Sie die Grenzen für Ihre Dienste planen, müssen Sie die Anforderungen an Verfügbarkeit und Skalierbarkeit berücksichtigen. Wenn eine Komponente beispielsweise andere Anforderungen als Ihre anderen Komponenten hat, können Sie die Komponente als eigenständigen Dienst entwerfen. Implementieren Sie einen Plan für kontrollierte Fehler für weniger wichtige Unterprozesse oder Dienste, die sich nicht auf die Antwortzeit der primären Dienste auswirken.
Für Nebenläufigkeit und Parallelität entwickeln
Entwerfen Sie Ihre Anwendung so, dass mehrere Aufgaben gleichzeitig unterstützt werden, 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 von mehreren Dienstinstanzen gleichzeitig verarbeitet werden können. Mit der Nebenläufigkeit von Aufgaben können Sie Funktionen wie das Autoscaling 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 erforderlichen Ressourcen (wie Arbeitsspeicher, Speicher und Rechenleistung) für bestimmte Vorgänge verwendet. Eine Überbelegung von Ressourcen kann zu unnötigen Kosten führen, während eine Unterbelegung die Leistung beeinträchtigen kann.
Gut definierte Schnittstellen verwenden
Sorgen Sie dafür, dass modulare Komponenten effektiv über klare, standardisierte Schnittstellen (wie APIs und Nachrichtenwarteschlangen) kommunizieren, um den Overhead durch Übersetzungsebenen oder irrelevanten Traffic zu reduzieren.
Zustandslose Modelle verwenden
Ein zustandsloses Modell kann dazu beitragen, dass jede Anfrage oder Interaktion mit dem Dienst unabhängig von vorherigen Anfragen verarbeitet werden kann. 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 im Hinblick auf ihre Unterstützung für Modularität.
Weitere Informationen finden Sie in den folgenden Ressourcen: