Store websites som YouTube, Wikipedia og Twitter anvender forskellige tricks for at kunne servicere deres mange brugere.
En af de vigtigste ting der sikrer brugerne en god oplevelse er hurtige svartider. Blot få sekunders forsinkelse kan få brugerne til at surfe videre på et andet og hurtigere website.
Intelligent dovenskab er godt for performance
Løsningen på at få et hurtigere website er ikke nødvendigvis at få den underliggende database eller webserver til at arbejde hurtigere. Det handler derimod om at være lidt doven - intelligent doven.
Når der kommer en forespørgsel på en webside skal webserveren nemlig først hente de forskellige dele, som udgør websiden - billeder, tekst, annoncer, video og så videre. Nogle af delene kommer fra en database, så webserveren sender også en eller flere databaseforespørgsler inden den kan sammensætte de forskellige elementer i én samlet side, før den sendes ud til brugeren.
Hvis mange tusinde brugere spørger efter nogle af de samme data, kan man selvølgelig prøve at få webserver og database til at hente og sammensætte data endnu hurtigere og på den måde prøve at holde svartiderne nede.
En anden løsning er den intelligente dovenskab. Der er ingen grund til at læse de samme data fra databasen igen og igen, ligesom det ikke er nødvendigt for webserveren at sammensætte den samme side igen og igen.
Caching for webserver og database
Derfor anvender blandt andre Facebook og Twitter intelligent dovenskab i form af Varnish-softwaren med de danske rødder.
Varnish ligger foran webserveren og gemmer de websider, som webserveren sammensætter. Næste gang en bruger spørger efter websiden, skal webserveren ikke i gang med at sammensætte siden. Varnish serverer websiden til brugeren.
En anden mulighed er at anvende opensource-softwaren Memcached som eksempelvis Twitter, YouTube og Wikipedia gør. Som navnet antyder, så er der tale om en caching-service, der gemmer data i memory (RAM), efter de er blevet læst første gang fra en underliggende database.
Når en applikation efterfølgende har brug for de samme data er der ingen grund til at læse fra databasen igen. Data hentes fra den langt hurtigere RAM-memory.
Så hvor Varnish ligger foran webserveren og cacher de websider, som webserveren sammensætter, så ligger Memcached mellem databasen og webserveren, hvor den cacher data fra databasen.
Amazon introducerer ny caching service
Inspireret af blandt andet MemCached har Amazon lige udvidet sin cloud computing platform med en ny service ElastiCache.
Anvendelse af caching er absolut ikke en ny opfindelse i IT. Derfor er der allerede en række web-applikationer i Amazons cloud, der anvender caching.
Som Amazons CTO Werner Vogels skriver på sin blog i anledning af lanceringen af ElastiCache:
"Caching er blevet en standardkomponent til at opnå en hurtig og pålidelig performance i mange applikationer."
Det sker ved at udviklerne selv sørger for at etablere caching-servere og tilhørende caching-strategi. Men Amazon ønsker med ElastiCache at gøre det nemmere for udviklerne at anvende caching.
Slip for operationelt møgarbejde
ElastiCache tager sig af trættende og tidsforbrugende caching-detaljer:
"Vedligehold af en samling caching-servere i en pålidelig og skalerbar facon er ikke en enkel opgave. Det hører under kategorien "operationel møgarbejde", men da cachinganvendelse er meget udbredt, er vedligehold af cachingservere ikke længere en differentiator og alle må gøre det som, en del af omkostningen at drive forretning," skriver Werner Vogels.
ElastiCache hjælper ifølge Werner Vogels og Amazon udviklerne med at slippe for meget af det "operationelle møgarbejde".
ElastiCache er kompatibel med Memcached og det skulle være muligt at flytte eksisterende applikationer, værktøjer og udviklerbiblioteker, der anvender Memcached over til ElastiCache uden for meget besvær.
I videoen fortæller Simone Brunozzi fra Amazon om Memcached og ElastiCache.