I lördags, i samband med melodifestivalfinalen, var det premiär för vårt senaste projekt Superlive som är en vidareutveckling och paketering av olika externa och egna tjänster för att få till en riktigt bra direktrapportering för stora evenemang.
Vi vill passa på att ge en liten inblick i några av de utmaningar som ett system av den här kalibern ställer oss inför. Med den massiva trafik som vi har på Aftonbladet.se är det inte helt okomplicerat att åstadkomma.
Uppdateringen
Vi utvärderade flera olika tekniker för att uppdatera sidan utan att användaren behövde ladda om sidan, och lutade länge åt en comet-lösning för att pusha ut uppdateringar direkt i den stund de sker. I slutändan visade det sig att en traditionell pull-lösning där webbläsaren frågar efter nytt innehåll med ett lagom intervall var bäst lämpat av flera orsaker:
- Bandbreddsanvändningen. Pulllösningar drar ofta betydligt högre bandbredd än pushlösningar på grund av den mängd onödiga anrop som behöver göras. I vårt användningsfall kom vi att skicka ut ny data i genomsnitt ungefär varannat anrop, så det var inte ett problem. Genom att lägga tjänsten under en separat domän helt utan cookies och den sällan använda svarskoden “204 No Content” kunde vi ytterligare minimera den effekten.
I stället kunde vi utnyttja att användarnas anrop naturligt spreds ut över ett antal sekunder till att mildra de bandbreddstoppar som uppstår när man vill pusha ut stora mängder data till många använvändare exakt samtidigt. Genom att enkelt kunna trycka ut ändringar av pull-intervallet under gång hade vi ett system som väldigt lätt kunde anpassa sig efter behovet. - Uppdateringsfrekvensen. När vi testade upptäckte vi att uppdateringar av de redaktionella puffarna oftare än ett par gånger i minuten inte tillförde någonting till upplevelsen utan snarare kändes störande.
- Enkelheten. Vi kunde använda precis samma teknik som vi använder för att leverera den vanliga sajten. Vid två likvärdiga lösningar är det i regel alltid bäst att välja den enklaste.
En vidareutveckling av tjänsten kan förstås innebära att vi kommer till andra slutsatser, men i det här pilotfallet var det ett enkelt val.
Lasttester
Trafiken på Aftonbladet.se en melodifestivalkväll är alltid ganska speciell med en enorm trafiktopp direkt efter att SVT avslutar sin sändning (antalet visningar tredubblas på mindre än en halvminut). Det ställer förstås också stora krav på de bakomliggande systemen, och vi ville inte kasta oss ut i den utan att veta att allting skulle fungera friktionsfritt.
Därför genomförde vi en “dold lansering” ett par dagar tidigare, då vi lät alla besäökare på vår startsida även hämta in en utseendelös version av superlivetjänsten, komplett med simulerade liveuppdateringar och allt. För besökarna på sajten syntes förstås ingeting, men vi kunde testa hela systemet med verklig trafik, vilket gjorde att vi kunde känna oss helt säkra på att systemen skulle palla trycket många gånger om.
Backuplösningar
Även om vi förvissat oss om att våra egna system skulle klara av anstormningen var vi noga med att se till att vi hade alternativ om någonting skulle hända. Vi inkluderade också tjänster som Cover It Live och Shoot It Live som vi inte själva har kontroll över. Därför såg vi till att bygga in funktioner för att snabbt kunna ersätta även dessa med annat innehåll utan att användaren skulle behöva ladda om sidan.
Vi såg även till att separera Superlive helt från den vanliga sajten, både logiskt och fysiskt, så att en störning i den ena tjänsten inte skulle kunna påverka den andra. Dessutom anpassade vi de vanliga backuplösningarna som vi har till att dra nytta av Superlive.
Resultatet
Under kvällen hade vi som väntat inga som helst tekniska problem. Istället kunde vi som alla andra fascineras över hur bra slutresultatet blev, och njuta av hur väl det togs emot av besökare på sajten. Jan Helin har skrivit mer om det.
Slutligen måste jag förstås framhålla att tankarna bakom Superlive i flera delar har sin grund i olika Hack Day-projekt. En kreativ miljö där utvecklare får möjlighet att testa sina idéer gör det mycket lättare att skapa kreativa lösningar även för de mest centrala systemen.