Dieses Prinzip 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.
Ü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 zerlegen, können Sie einzelne Komponenten skalieren, um bestimmte Anforderungen zu erfüllen.
Die gezielte Skalierung kann 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.
- Fügt in Zeiten mit hohem Traffic weitere Ressourcen hinzu, um die Nutzerfreundlichkeit aufrechtzuerhalten.
- Entfernt nicht ausgelastete Ressourcen, ohne die Leistung zu beeinträchtigen.
Modularität verbessert auch die Wartbarkeit. Kleinere, eigenständige 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 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 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 (z. B. 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 vergrößern, 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: