Als Systemadministrator beobachtet man bestimmte Fallen immer wieder, in die unerfahrene Entwickler von Webanwendungen tappen. Ich habe hier die Top Ten der mißachteten Punkte zusammengestellt:
- Ruft regelmässige Aufgaben über richtige Cronjobs auf, nicht mit Curl/wget/lynx per HTTP, setzt eine E-Mail-Adresse als Empfänger der obigen Cronjobs, die ganz sicher immer funktioniert, und produziert in euren Cronjobs nur dann eine Ausgabe, wenn Fehler auftreten. Keine Debuginfos, zwischen denen echte Fehler einfach untergehen, weil die Mail eh jeden Tag kommt — kurz, schreibt ordentliche Cronjobs
- Entwickelt von vornherein in UTF-8, früher oder später kommen Finnen, Franzosen, Dänen, Asiaten, mit lustigen Sonderzeichen
- Achtet auf sinnvolle Rechtevergabe, prüft, unter welchem User die Webanwendung per Webserver aufgerufen wird, und mit welchen Privilegien ihr per SSH oder FTP auf die Daten zugreift. Setzt sinnvolle Gruppenrechte oder veranlasst, dass alles unter der selben UID läuft — z.B. per suPHP
- Kalkuliert die Datensicherung ein, vor allem daß während eines Datenbank-Snapshots z.B. per mysqldump oft ein globales Write-Lock verhängt wird
- Legt gerade bei ausfallsicheren Plattformen auch die Cronjobs entsprechend an — entweder mit globalem Locking oder so, daß auch mehrere gleichzeitig arbeiten können
- Baut von vornherein vernünftige Fehlerseiten und Fehlerbehandlung, die so wenig Abhängigkeiten wie möglich haben. Nichts ist peinlicher als die Meldung
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
- Bereitet eine Wartungsseite vor, die alle Anfragen sauber beantwortet, wenn die Anwendung mal aktualisiert wird oder aufgrund von technischen Problemen deaktiviert werden muss. Teilt eurem Hoster mit, wie diese Seite aktiviert werden kann, falls mal etwas schlimmes schiefgeht
- Stellt sicher, dass zumindest eure Kollegen und der Hoster die Fehlerseite von der Wartungsseite unterscheiden können. Sonst wird im Ernstfall der Sysadmin die Fehler-Wartungsseite zu sehen bekommen und von Wartungsarbeiten ausgehen, wenn vielleicht gerade die Datenbank Probleme macht
- Legt nur solche Infos im Cache ab, deren Erzeugung wirklich Rechenzeit spart — Datenbankabfragen sind schneller als ein Festplattenbasierter Cache, und eine Datenbank ist Backup-tauglicher
- Räumt von vornherein eure Daten auf — wenn z.B. die an User verschickten Mails erstmal dreistellige Gigabyte in der Datenbank belegen, ist es zu spät
Ich hoffe, damit dem ein oder anderen angehenden Programmierer hilfreiche Tipps gegeben zu haben, und vielleicht auch die Nerven manches Sysadmins zu schonen…