Tipps zu Skalierbarkeit von Webanwendungen mit PHP und MySQL
Kommentare

Wozu überhaupt Skalierbarkeit? Mein Code funktioniert doch schnell und zuverlässig. Am Anfang eines Web-Projektes macht man sich als Entwickler darüber keine Gedanken, aber mit dem Anstieg des Web-Traffics

Wozu überhaupt Skalierbarkeit? Mein Code funktioniert doch schnell und zuverlässig. Am Anfang eines Web-Projektes macht man sich als Entwickler darüber keine Gedanken, aber mit dem Anstieg des Web-Traffics zeigen sich auch schon die Kapazitätsprobleme, die am Anfang kein Thema waren.

Der allseits bekannte Eli White zeigt in seinem zweiteiligen Artikel, wie Skalierbarkeitsprobleme in PHP-MySQL-Projekten effektiv begegnet werden können. Wir fassen die Tipps kurz zusammen.

Ein Tuning kann der erste Schritt zu mehr Skalierbarkeit in einer Webanwendung sein. Die Installation eines Opcode-Caches im Web-Server kann z.B. die kompilierte Version des PHP-Codes speichern und es für zukünftige Requests zur Verfügung stellen. So muss der PHP-Code nicht bei jedem neuen Request rekompiliert werden und es werden Serverkapazitäten frei.

Natürlich hat man am Anfang eines Webprojektes einen Webserver, der auch für die Anforderungen vollkommen ausreichend ist. Im Laufe der Zeit werden je nach Traffic mehrere Webserver benötigt, um die Requests abzuhandeln. Horizontale Skalierung ist mit PHP möglich und das Problem kann mit Load Balancing gelöst werden. Dabei gibt es einen zentralen Webserver, der alle Requests empfängt und weiteren Servern zur Bearbeitung weiterreicht.

Der nächste Engpass, der die Skalierbarkeit der Webanwendung beeinträchtigen, kann ist MySQL: die Datenbank selbst. MySQL, ist zwar eine mächtige relationale Datenbank, aber schließlich bekommt sie irgendwann das gleiche Problem wie der Webserver – sie reicht nicht aus. MySQL gibt schon eine integrierte Lösung dafür, die so genannte Master-Slave-Replikation. Bei dieser Konfiguration gibt es einen MySQL-Server mit der zentralen Repository für die Daten: den Master, und einen anderen MySQL-Server, konfiguriert als Slave. Jede Aktion auf den Master-Server spielt sich auch auf den Slave ab. Man kann mehrere MySQL-Server als Slave fungieren lassen; aber diese Lösung hat ihre physischen Grenzen.

Im zweiten Teil seines Artikels konzentriert sich Eli White auf die zur Verfügung stehenden Möglichkeiten, die innere Struktur der MySQL-Datenbank in Hinsicht auf Skalierbarkeit zu optimieren.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -