stack-3

Hur skulle du bygga en modern mediesajt, om du hade fria händer och en tom teknikstack? Ungefär den frågan ställde vi oss när vi påbörjade arbetet med den första versionen av KIT. Som Fredrik skriver i sin bloggpost “Så bygger vi KIT” tror vi inte att det finns någon från-hyllan-lösning som passar för en seriös satsning inom mediebranschen, samtidigt som att bygga allt själv kostar på tok för mycket tid, resurser och underhåll.

Lösningen är egentligen ganska enkel. Idag finns det en enorm verktygslåda full av byggstenar, komponenter, moduler (eller vad man nu vill kalla det) som är precis rätt verktyg för en väldigt specifik uppgift. Vårt mål är att aldrig återuppfinna hjulet utan istället se till att använda exakt rätt befintliga hjul till alla våra olika farkoster, oavsett hur de ser ut. Fokus hamnar i första hand på att få alla delar att passa tillsammans, så att de sammantaget kan bidra till KIT:s vision.
Med detta sagt så kommer vi givetvis stöta på områden där det inte finns några färdiga verktyg att använda, eller där vi anser att befintliga lösningar är för dåliga. Först då bygger vi eget, och då gärna baserat på något som redan finns som vi kan förbättra och/eller bygga ut. The Guardian är duktiga på precis det här , och förhoppningsvis kommer även vi att kunna släppa delar av det vi gör som öppen källkod.

En modern stack uppbyggd på ovan nämnda sätt kallas ofta för mikrotjänst-infrastruktur.Wikipedias definition lyder:

“In computing, microservices is a software architecture style, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These services are small, highly decoupled and focus on doing a small task.”

Detta resonerar extremt väl med de tankar och visioner vi har på KIT. Vi vill ha en modern stack som är end-to-end, skalbar, flexibel och där varje del alltid har en exit-plan och en fallback som vi kan byta till när helst vi önskar.

Resan till den färdiga stacken kommer att vara lång, men vi har redan börjat.

Stacken, version 0.1

stack-sketchFör några veckor sedan (16:e april 2015) släppte vi loss den första versionen (kodnamn Han Solo) av KIT i det vilda. Denna är relativt långt ifrån vår slutliga vision om vad KIT kommer att vara, men är samtidigt en bra grund och ett stort första kliv på vägen.

I denna release försökte vi använda så många färdiga verktyg och byggstenar som möjligt för att snabbt komma ut på banan med en första version av kit.se. Kort sammanfattat valde vi att arbeta med följande komponenter i version 0.1:

  • Ett robust och flexibelt CMS som ger oss stöd och möjligheter idag, samtidigt som det kan växa med oss under det kommande året: WordPress. Här valde vi att arbeta med Bedrock-stacken från Roots för att snabbt kunna vara igång med struktur för både utveckling och deployment.
  • Ett API för vår JavaScript-app att prata med via WP-API.
  • En dynamisk sajt som redan från första dagen kan agera på besökare, innehåll och events. Version 0.1 är en JS-app byggd i AngularJS med Prerender.io som SEO-stöd.
  • Content Delivery Network (CDN) via Cloudflare som bidrar med både hastighet i nedladdning och säkerhet vid t.ex. DDoS-attacker. Deras datacenter i Stockholm säkrar en snabb uppkoppling för alla svenska besök samtidigt som vi har möjlighet till en global distribution.
  • Datainsamling via Restify och Kafka.
  • En bild-skalnings-proxy-tjänst baserad på Thumbor.
  • Lagring av statiska resurser på Amazon S3.
  • Övervakning av allt ovanstående med New Relic, Pingdom och ELK (ElasticSearch, Logstash, Kibana)

Då vi har en pragmatisk hållning till våra system är det inte osannolikt att alla våra byggstenar någon gång under resans gång, i takt med att krav och förutsättningar förändras, kommer är mutera, eller helt bytas ut. Vår förhoppning är att i framtida blogginlägg på ett transparent sätt kunna berätta mer om varje komponent och tekniken/tankegångarna bakom.

Den framtida stacken

micro-stackDirekt efter releasen av version 0.1 började vi blicka framåt och skifta fokus. Närmast till hands tittar på vi att skapa Dockerbaserade, skalbara, mikrotjänster att köra i en Openstack-miljö. Vi tror att vi i framtiden kommer behöva kunna agera snabbt på det som händer i omvärlden och behöver därmed en infrastuktur som kan hantera detta så friktionsfritt som möjligt. Vi behöver vara pragmatiska, flexibla och snabbfotade för att skapa de verktyg som Fredrik och KIT behöver på sin kommandobrygga.

I epicentrum av alla mikrotjänster kommer alltid vår viktigaste resurs att husera; vår data. Därmed får en API-proxy en naturlig plats som både “växel” och gatekeeper för all kommunikation mellan våra tjänster, besökare och redaktörer. Mer om detta framöver.

Detta var bara en kort första inblick i hur vi tänker kring tekniken bakom KIT.
We’ll be back.

/Christoffer, @chredd

P.S.
Om du vill veta mer om KIT rekommenderar jag följande läsning: