VK Medias tekniska plattform: Intro

Anna Viklund
vkmedia-dev
Published in
2 min readAug 23, 2018

Detta är första delen i en inläggsserie där vi kommer beskriva vår tekniska infrastruktur och vilka verktyg och språk vi använder. I första delen kommer vi ge en övergripande introduktion till vår kodbas. Häng med!

VK Media äger idag en rad varumärken med tillhörande tjänster. VK, Folkbladet, Affärsliv24, Lövenappen och Umeå X är några exempel på webbsidor och appar som vi utvecklar och driver. De flesta av våra tjänster delar en gemensam grundfunktionalitet: att tillgängliggöra nyheter digitalt. För att kunna bedriva verksamheten på ett effektivt sätt använder vi därför en delad kodbas, men samtidigt som mycket är gemensamt för tjänsterna finns det skillnader i både utseende och funktionalitet som ställer krav på dynamisk kod. VK har till exempel en egen sidstruktur och en egen uppsättning av widgets som skiljer sig från övriga sajter. Målet är alltså att dela så mycket kod som möjligt mellan tjänsterna utan att göra dem för statiska, samtidigt som vi också vill undvika att hamna i ett limbo av krångliga undantag och specialfall. En klassisk utmaning som många utvecklare säkert känner igen.

VK är en av flera webbsidor som vi utvecklar på VK Media.

Vår kodbas består av en rad system och paket som alla utgör kugghjul i vårt tekniska maskineri. Varje del i kodbasen har ett tydligt definierat ansvarsområde vilket innebär att varje del också är relativt isolerad och enkel att byta ut. I och med att till exempel utritningen är tydligt separerad från resten av funktionaliteten skulle det inte vara några problem att förnya eller byta ut enbart den delen. I dagens tekniska samhälle måste vi kunna jobba snabbt och vara beredda på att förändringar kan komma plötsligt. Då krävs en flexibel kodbas som möjliggör detta.

Grovt förenklat består vår tekniska plattform av följande delar:

Writer och datalagring

Systemet där reportrarna skriver och sparar sina artiklar. Idag använder vi Wordpress som CMS och här är det alltså PHP och MySQL som gäller. Vi befinner oss för tillfället mitt i ett migreringsprojekt där vi kommer byta writer och plattform för datalagring. Mer om det i kommande inlägg!

Dataprocessering och inloggning

Systemet som hämtar data från CMS:et, anpassar data för utritning och exponerar endpoints som kan användas av till exempel utritningsapplikationer. Håller även reda på användarnas inloggningsstatus och ser till att låst innehåll inte når icke behöriga användare. Här använder vi Node.js, TypeScript, Express, Redis och Postgres.

Utritning

Applikationen som används för att rendera våra sajter. Här använder vi React, Redux, Node.js, TypeScript, och Express. Alla våra sajter renderas till största del hos klienten för att underlätta personalisering. I kommande inlägg kommer vi berätta mer om hur vi tänker kring personalisering och hur vi har strukturerat våra cache-lager för att möjliggöra detta.

--

--