- Der Autor beschreibt seine Erfahrungen mit dem Management der Postgres-Performance in einer SaaS-Anwendung, bei der die Datenbank Schwierigkeiten hatte, die Last zu bewältigen.
- Das Team des Autors skalierte vertikal, indem es die Datenbank immer dann auf eine größere Instanz umstellte, wenn sie zu stark ausgelastet war. Schließlich nutzten sie jedoch bereits die größte verfügbare Instanz und standen kurz vor einer Überlastung.
- Als zwei mögliche Lösungen wurden vorgeschlagen, Schreibvorgänge auf unabhängige Datenbank-Cluster zu sharden und den Monolithen in mehrere verbundene Services (Microservices) aufzuteilen.
- Beide Lösungen würden die Kapazität erhöhen und interessante Optionen für Fehlertoleranz und operative Resilienz bieten, aber die Komplexität erheblich steigern.
- Der Autor argumentiert, dass die tatsächlichen Kosten zusätzlicher Komplexität in der gebundenen Aufmerksamkeit liegen, was jede nachfolgende technische Entscheidung komplizierter macht.
- Der Autor schlägt vor, dass es vor einer deutlichen Erhöhung der Komplexität in der Regel Möglichkeiten gibt, dem bestehenden System noch etwas zusätzliche Performance „abzuringen“, etwa durch Anpassung der Workloads, Performance-Tuning oder Ergänzungen am System.
- In ihrem Fall senkten sie die maximale wöchentliche CPU-Auslastung der Datenbank von 90 % auf 30 %, indem sie schwere Queries optimierten, Postgres-Einstellungen feinjustierten und einige teure schreibgeschützte Queries auf eine Replikat-Datenbank auslagerten.
- Der Autor kommt zu dem Schluss, dass Komplexität zwar notwendig und unvermeidlich ist, es aber wünschenswert ist, ihren Anstieg so lange wie möglich hinauszuzögern und zuerst so viel Performance wie möglich aus dem bestehenden System herauszuholen.
1 Kommentare
Hacker-News-Kommentare