High performance webservers
zo 29 nov 2009 23:46
De huidige wijsheid is dat je performanceproblemen met je site oplost door het plaatsen van wat extra servers in plaats van naar de code of ontwikkelaars te kijken, begint steeds meer achterhaald te worden.
De huidige webservers, databasesystemen en programmeertalen/omgevingen zijn op papier wel schaalbaar, maar in de praktijk doemen er, als de site groter wordt, steeds meer problemen op. Facebook schermt wel met indrukwekkende getallen van 2,3 miljard bezoekers per maand en 30 duizend servers, maar als je dat op elkaar deelt, kom je op een schamele 104 bezoekers per server per uur.
De laatste jaren hebben besturingssystemen steeds meer truukjes gekregen om de overhead te minimaliseren en zijn er talen ontwikkeld die erg geschikt zijn om gedistribueerd (over meerdere computers) te draaien.
Het afgelopen jaar zijn er allerlei projectjes van de grond gekomen die hier optimaal gebruik van maken en op het gebied van performance alle klassieke systemen van de kaart vegen. Zoals bijvoorbeeld de database Couch DB, dat volgens een heel ander systeem werkt dan de huidige databases en in een taal is geschreven dat erg geschikt is om op meerdere systemen tegelijk te draaien. Nog sneller zijn wat eenvoudigere databasesystemen als Redis en Tokyo Tyrant. Een voorbeeld van een webserver die de huidige webservers ver achter zich laat is NGINX.
Ook voor het draaien van eigen software op de server ontstaan interessante projecten. Een daarvan is Node.js, dat is gebaseerd op de snelle JavaScript-motor uit Chrome, de webbrowser van Google. Doordat dit geheel event-driven is, kan een groot performancevoordeel behaald worden.
Zolang de huidige manier van schalen allerlei problemen oplevert en het internetgebruik toeneemt, zal er steeds meer behoefte ontstaan naar high performance systemen. Het zou me niets verbazen als over tien jaar een groot deel van de webservers op bovenstaande of op vergelijkbare systemen draait.