Bij veelbezochte websites geeft het veelgebruikte LAMP-platform nogal eens schaalbaarheidsproblemen. De laatste tijd komen er uit de open source-wereld steeds meer alternatieven met een zeer goede schaalbaarheid en hoge performance.
Bij veelbezochte websites is het belangrijk dat de architectuur eenvoudig meeschaalt met de toenemende aantallen bezoekers. Bij een trage website is een bezoeker immers snel weer vertrokken.
De huidige website-architectuur is in de kern vrij eenvoudig: als er een performanceprobleem dreigt, worden er extra database- of webservers bijgezet. Op deze manier draaien op dit moment vele sites op honderden machines.
Bij het meest gebruikte platform LAMP (Linux-Apache-MySQL-PHP) begint deze architectuur tegen zijn limieten aan te lopen. Door de overhead betekent een verdubbeling van het aantal servers meestal geen verdubbeling van de performance. Dit wordt mooi geïllustreerd door PHP-grootgebruiker Facebook. Met indrukwekkende cijfers van 30 duizend servers en 2,3 miljard bezoekers per maand zijn ze een van de grootste sites. Maar ga je deze getallen op elkaar delen, dan kom je uit op een schamele 104 bezoekers per uur per server. Het zal dus niet verbazen dat juist uit de open source-wereld allerlei vernieuwingen komen.
Zo is de Apache-webserver nooit geschreven met performance op de eerste plaats. Hoewel Apache niet traag is, zijn er webservers die puur op performance zijn ontwikkeld. Voorbeelden daarvan zijn Nginx en Yaws. Loopt bij een oplopend aantal verbindingen bij Apache de performance achteruit om uiteindelijk de geest te geven, bij de high-performance webservers blijft de performance gelijk, ook bij tien keer zoveel verbindingen als wat Apache aankan.
Op databasegebied zijn ook een aantal interessante ontwikkelingen gaande. Deze zijn allen te vinden onder de noemer NoSQL. Werd dit begrip in eerste instantie bedoeld om databases aan te duiden die geen SQL spraken, tegenwoordig wordt het ook gebruikt voor niet-relationele databases.
Een voorbeeld is het zeer schaalbare, gedistribueerde, gestructureerde key-value-systeem Cassandra. Ontwikkeld en gebruikt binnen Facebook is deze database onlangs ook in gebruik genomen binnen de veel bezochte en data-intensieve sites Twitter en Digg. Een andere, meer documentgeoriënteerde database is CouchDB. Deze kan uitgelezen worden op de distribueerbare MapReduce-manier en biedt een REST-interface voor universele toegang.
Als laatste flessenhals van het LAMP-platform blijft de programmeertaal PHP over. PHP kent geen threads en geen gedeeld geheugen. Zelf noemen ze dit de 'shared nothing'-architectuur. Hoewel dit enkele voordelen biedt, heeft het, vooral op gebied van performance, vooral nadelen. Zelfs met een toegevoegde opcode cache blijft PHP een van de traagste talen (of implementaties daarvan). PHP is ook erg geheugenintensief; een verbinding kan al snel zo'n 15 MB in beslag nemen. Met 2 GB gereserveerd voor PHP komt dat neer op slechts 133 gelijktijdige verbindingen.
Een nieuwe ontwikkeling op dit gebied is Node.js. Node.js is gebaseerd op V8, de snelle JavaScript-engine van Google die ook in Chrome wordt gebruikt. Node.js is geheel event-based en kan daardoor in één thread uitgevoerd worden. Hierdoor zijn duizenden gelijktijdige verbindingen geen probleem voor Node.js.
Hoewel de genoemde technologieën nog in minder of meerdere mate in ontwikkeling zijn, mag het duidelijk zijn dat we aan het begin staan van een verschuiving van hoe we tegen website-architectuur aankijken. Vooral binnen het LAMP-platform is wat gisteren vanzelfsprekend was, dat morgen mogelijk niet meer.