Sådan leverer Issuu magasiner til 70 mio. brugere med open source, Erlang og Amazon

Med cirka 300 instanser på Amazons sky har danske Issuu taget både skyen og open source flittigt i brug for at kunne levere digitale publikationer til millioner af brugere.

Der er et par open source-værktøjer på serversiden, som senior systemarkitekt Martin Koch gang på gang fremhæver som centrale brikker i den omfattende infrastruktur, der sørger for at gøre i alt 12 millioner publikationer tilgængelige for 70 millioner unikke brugere hver måned hos det danske it-startup Issuu.

Blandt værktøjerne er nginx og haproxy, som begge hjælper med at lette en del af presset fra de mange servere, der tilsammen udgør Issuus store website.

Læs også: Version2 er i selskab med 11 millioner digitale publikationer hos danske Issuu

I alt har Issuu cirka 300 instanser kørende på Amazons infrastruktur, og dertil kommer flere hundrede terabyte data på Amazons storage-sky S3.

Med det store antal dokumenter, som Issuu stiller til rådighed, som skal kunne vises til brugere, der har deres egne profiler, så er der mange komponenter, der skal bindes sammen.

»Python har vist sig at være et godt værktøj til at binde det sammen. Der er mange pakker til for eksempel at binde sammen med MySQL,« fortæller Martin Koch til Version2.

Illustration: Jesper Stein Sandal

Python er dog ikke det eneste populære sprog hos Issuu, hvor de funktionelle sprog har vist sig at være gode til at løse de udfordringer, infrastrukturen giver.

»Vi har vores API-servere, som er skrevet i Erlang. Erlang har for eksempel en indbygget model for distribution, og man kan få at vide, om en fjernproces er gået ned. Det er et smukt og koncist sprog,« siger Martin Koch.

Han er uddannet som datalog fra DIKU i 1998 og måske kendt af Version2-læsere fra bandet Press Play on Tape.

En af de konkrete udfordringer er indsamlingen af statistik om brugerne. Det skal ikke bare fortælle de udgivere, der lægger deres publikationer på Issuu, hvor mange der læser dem, det skal også hjælpe med at vise brugerne det mest relevante indhold.

»For hvert enkelt dokument prøver vi at gætte, hvad der er interessant og relevant at vise. Vi måler så og kan lave en A og B test og konstant raffinere vores visning,« forklarer Martin Koch.

De relaterede publikationer kan eksempelvis udvælges efter, hvad andre brugere i samme geografiske område har læst inden for en vis tidsramme, men det kan også udvælges ud fra, hvad brugeren tidligere har læst.

Under hver eneste publikation, som en bruger får vist på Issuus websted, bliver der således genereret en lang liste over andre publikationer, som kan være interessante for brugeren. Det bygger dels på en analyse af indholdet, som sker automatisk, dels på brugerstatistik.

Det betyder imidlertid, at hver sidevisning også genererer en masse forespørgsler til serverne, så da Issuu for nylig skulle lancere det nye design, skulle systemet testes.

»Vi vidste ikke, hvor meget load vi ville få. Vi brugte meget energi på loadtest af det mønster, som vi regner med, at en bruger vil tilgå dataene på. Vi gættede på, at vi skulle håndtere cirka 200 'strømme' pr. sekund, men vi ligger lige nu på cirka 70 strømme pr. sekund. Så det er lidt mindre, men så har vi designet til at skalere,« siger Martin Koch.

En strøm er Issuus betegnelse for den liste af relaterede publikationer, som en bruger får vist, når han bevæger sig ind på en publikation eller en kategori på sitet.

Læs også: Sådan får danske Issuu serveren til at kende forskel på tilbudsaviser og erotik

Udrulningen skete da også trinvis, hvor Issuu først lancerede det nye site til de skandinaviske brugere, hvorefter de første fejl kunne rettes, inden udrulningen fortsatte til resten af verden.

En del af skaleringen sker takket være Amazons sky, hvor Issuu dels kan oprette nye servere, men også lukke instanser, hvis der ikke er brug for dem. På storagesiden erkender Martin Koch, at S3 kan være lidt langsom, når det gælder skrivehastigheden, men til gengæld er S3 god til at skalere, når antallet af læsninger vokser.

Amazon opdeler dog sine datacentre i forskellige availability-zoner, og det giver en lidt speciel udfordring for Issuu.

»Vi har tre webservere, som vi klarer os godt med. Den ene står i en anden availability-zone, men vores proxy står kun i ét datacenter,« forklarer Martin Koch.

Det er en almindelig konfiguration og et bevidst design, men det betyder, at hvis det er proxyen, der går ned, så hjælper det ikke, at der er en webserver i en anden zone, der stadig er oppe, fordi trafikken aldrig når derhen. Det er dog et problem Issuu forventer at løse snart.

Det er heller ikke al open source, der automatisk begejstrer. Lige nu bruger Issuu MySQL i flere sammenhænge, men det har kostet en del kvaler.

»Man skal vide, hvordan det virker under motorhjelmen. Det gælder i øvrigt for alle de værktøjer, vi tager ned fra hylden og udsætter for den smerte, det er at være Issuu,« siger Martin Koch.

Issuu har også forsøgt sig med forskellige databaser af nosql-typen såsom Cassandra og CouchDB, men det har hidtil ikke vist sig at være besværet værd som erstatning for MySQL.

Cassandra har dog været nyttig i andre sammenhænge, og Cassandra bliver stadig brugt visse steder i Issuus arkitektur.

Denne artikel er en del af Version2's sommertour, hvor vi flytter redaktionen ud til en stribe danske it-firmaer. Se hele tour-kalenderen

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (5)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Andreas Krüger

Hvorfor har man ikke erstattet den proxy/lb som man har i ét AZ med deres ELB eller Route 53 med health checks? Hvad er grunden til, at man anvender en HAproxy i dette tilfælde?

  • 0
  • 0
Kristian Klausen

Der er et par distributioner som er skiftet til MariaDB (Fedora og ArchLinux), da de ikke er tilfreds med hvordan Oracle styrer butikken.

ArchLinux beskriver grunden som:
Jokes aside, the biggest problem with MySQL situation is that it becomes
more and more closed source. Oracle stopped publishing regression
tests[1], informative security advisories, they even hide bug reports
and not include them in release notes[2]. Very often their bzr
repository is falling behind new releases[3].

Kilde: https://mailman.archlinux.org/pipermail/arch-dev-public/2013-February/02...

Har i overvejet sådan et skift, ikke fordi det nødvendigvis fordi det skulle være bedre? Men måske har i også en holdning til sådanne ting..

  • 0
  • 0
Log ind eller Opret konto for at kommentere