Das ist gut zu hören... wenngleich es wie ich raushöre, es bestimmt noch ein Quäntchen Optimierungspotential gibt. Darf ich ein wenig ungefragt meinen Senf beisteuern?
Wenn eine Datenbank - ich nehme an mySQL - mit Kunden, Forum, Artikeln etc. existiert, so würde es beispielsweise Sinn machen, einen Cluster aus zwei Datenbanken zu wählen, eine DB im internen Netz im Redaktionsbüro - eine DB im NOC, die beide selbstständig Ihre Daten gegenseitig replizieren - spart in der Summe kostbare Bandbreite ein und ggf. hohe Anbindungskosten durch T-Interconnect Verbindungen (heissen glaub' ich heute Deutschland LAN). Ein normaler Standard DSL/ Unitymedia Anschluß würde ausreichen. Zugleich hätte man den Vorteil einer gewissen Redundanz bei Störungen der lokalen Internetversorgung, dann kann man zumindest mit den replizierten Daten lokal weiterarbeiten.
Gegen Ausfallsicherheit würde auch die Nutzung eines CDN (Content Delivery Network) helfen. Ich selbst nutze beispielsweise CloudFlare für einige Websites, die von allen statischen Inhalten eine Kopie auf Ihre verteilte Infrastruktur ziehen und diese weltweit deutlich schneller und besser ausliefern als das ein einzelner Server an einem Punkt erledigen könnte. Das schafft zusätzliche Redunanz und ein Kunde würde selbst bei Totalausfall des Servers zumindest bestimmte Teilbereiche noch sehen oder in statischen Artikeln oder Galerien etc. blättern können. Zudem verhindert es das typische "weg-geheised" Syndrom, wenn tausendfach Leute binnen weniger Sekunden den Server tot anfragen (denial-of-service).
Naja und da wäre zuletzt Java. In meiner persönliche Meinung als Programmierumgebung für Webapps weniger geeignet. Ein Auslaufmodell, aber das wäre vergleichbar der Diskussion ob Piper oder Cessna besser seien. Scriptorientierte Lösungen wie PHP et al. sind in der Summe zu fehleranfällig, unsicher und bieten aus Programmierersicht nur eingeschränkte Möglichkeiten mit wiederverwendbaren Objekten Datenbanklösungen zu programmieren. 90% aller mir bekannten Individuallösungen abseits großer Frameworks und Baukästen sind meiner Erfahrung nach Quick-and-Dirty erstellt frei nach dem Prinzp "Fire and Forget", die ich dann meistens von Grund auf neu machen darf.
Persönlich empfehle ich immer nativ compilierte Programme auf Linux, Mac OS X oder meinetwegen auch Windows. Also Quasi EXE Dateien, die im Apache dann als CGIs eingebunden werden. Maximale Sicherheit, da keine quelloffenen Skripte irgendwelche Strukturen oder Daten preisgeben. Aus Betreibersicht leicht austauschbar und administrierbar, aus Programmierersicht leicht managebar und zu erweitern da zu 100% wie bei JAVA objektorientiert und übersichtlich. Aus Anwendersicht schnell, da keine bloaty Frameworks (JAVA, .NET etc.) benötigt werden. Das senkt auch die Fehleranfälligkeit und den Adminsitrationsbedarf ungemein.
Hier einige kleinere Beispiele:
Winddreieck: https://jakobssystems.net/webapps/wind3eck/wind3eck.cgi
Startstreckenberechnung: https://jakobssystems.net/webapps/startruncalc/startruncalc.cgi
Vergaservereisung berechnen: https://jakobssystems.net/webapps/vergaservereisung.cgi
Hoffe einen kleinen Beitrag oder Denkansatz gegeben zu haben, Grüße!
P.S: ich hoffe jetzt nicht, daß meine kleinen Apps einen denial-of-service erleiden müssen ;-)