Strategiska verktyg för digital tjänsteutveckling
För att skapa lösningar som levererar värde till våra kunder och deras användare använder vi beteendetyper, kundresor och målramverk som strategiska verktyg i vår utvecklingsprocess.
När vi utvecklar digitala tjänster så behöver vi inledningsvis välja vilken plattform lösningen ska baseras på. Det finns en uppsjö av plattformar att välja mellan och det är viktigt att man väljer rätt eftersom plattformen definierar vilka förutsättningar man har för vidareutveckling av lösningen. När det kommer till produktion av webbplatser landar beslutet oftast i antingen en CMS- eller ramverkslösning. I denna artikel redogör vi skillnaden mellan de två och resonerar kring när man bör välja det ena eller det andra. Mycket nöje!
CMS är en förkortning av Content Management System, eller innehållshanteringssystem på svenska. Kortfattat kan man säga att ett CMS är ett system där en redaktör kan lägga till, redigera eller ta bort innehåll som presenteras på ett eller flera ställen. Exakt vilka typer av innehåll som hanteras i dessa system kan variera, men nästan alltid finns stöd för sidor, artiklar och bilder. Ofta kompletterar man med innehållstyper som är specifika för verksamheten: Man kan exempelvis göra innehållstyper för kontaktpersoner, kampanjer, produkter, etc.
Funktioner som följer med de flesta CMS är rättighetsstyrning, versionshantering av innehåll, sök och schemalagd publicering. Kraftfulla CMS kan också inkludera mer avancerade funktioner såsom personalisering, rekommendationsmotorer, sidbyggare, sökmotoranalys och bildhantering.
Historiskt har många CMS varit tätt kopplade till presentation av innehållet på webben och har därför inkluderat mycket funktionalitet som underlättar detta, men på senare år har det kommit CMS som helt fokuserar på administrationen och exporten av innehåll (t.ex. Contentful, Prismic, Sanity eller Storyblok). Detta gör det smidigt att använda innehållet i flera kanaler (t.ex. mobilapp + webb) och har också fördelen att man enklare kan byta ut webbplatsens utseende utan att göra en tidskrävande innehållsmigrering. De klassiska systemen (WordPress, Drupal, Episerver/Optimizely, Umbraco) har svarat upp på det växande flerkanalsbehovet genom att komplettera med funktionalitet för att exportera innehållet (API) för t.ex. headless-applikationer.
Man får mycket på köpet. Om man behöver funktionerna som inkluderas i den valda plattformen så är det väldigt kostnadseffektivt att välja en CMS lösning. I takt med att underliggande CMS utvecklas så får man med tiden nya funktioner och en bättre redaktörsupplevelse "gratis" vid uppgraderingar. Vidare så har många redaktörer vana och kompetens i specifika CMS och tar man med sig det i beaktning så krävs ofta inte så mycket support eller utbildning.
CMS är byggda för att vara just innehållshantering. Den ursprungliga tanken var inte att hantera varukorgar, momsregler, privata chattmeddelanden, BankID-integrationer etc. Även om allt detta är möjligt att implementera i en CMS-lösning så kan bli ganska röriga lösningar som är svåra att felsöka och förvalta. Det är också generellt svårt för utvecklare att skapa effektiva databasstrukturer i CMS-lösningar, vilket för slutanvändaren resulterar i långa laddtider som kan vara svåra och kostsamma att åtgärda. Ett annat problem är att de stora CMS-systemen är populära måltavlor för automatiserade hacking-försök: Så fort ett säkerhetshål i systemet blir allmänt känt så försöker illasinnade att nyttja hålet. Detta ställer stora krav på underhåll och det är av yttersta vikt att systemet och de tredjepartsmoduler som används hålls uppdaterade.
Ett ramverk är en samling utvecklarcentrerade microfunktioner som tillsammans utgör standardiserade sätt att lösa de utmaningar utvecklare stöter på dagligen. Det är utvecklarnas motsvarighet till prefabmat, ingredienserna i sig själva utgör ingen måltid, men det går ganska fort att slänga ihop en. Exakt vilka komponenter som ingår i ett ramverk skiljer sig mycket, men vanligtvis har de funktioner för att hantera kommunikation med databaser, URL-hantering, formulär, mm.
Eftersom funktionerna oftast är nära tekniken kretsar utveckling av ramverkslösningar ofta kring externa moduler (paket) som löser större uppgifter. Exempelvis finns moduler för bildbeskärning, sidhantering, versionshantering, bildanalys, etc. Vissa moduler är väldigt stora, t.ex. Wagtail som är ett komplett CMS i formen av en modul till ramverket Django. Istället för att beställa ett färdigt hus så klickar man hem de moduler man behöver och pusslar ihop dem själv.
Ramverk är utvecklarcentrerade och utbyggbara. Det går snabbt att bygga skräddarsydda funktioner och lösningarna blir förhållandevis enkla att underhålla. Prestandamässigt är lösningarna generellt resurssnålare än CMS eftersom de är byggda för det specifika behovet snarare än att vara en generell mellanväg. Därför är de ett bra val om man behöver snabba laddtider för relativt hög trafik. De flesta ramverk är byggda med skalbarhet i fokus, vilket innebär att det är lätt att sprida ut lasten på flera servrar och på så vis "skala upp" tjänsten vartefter trafiken ökar. De stora ekosystemen gör också att lösningarna går att bygga ut väldigt mycket till förhållandevis låga kostnader, vilket passar agila projektmetoder som handsken.
Generellt kan man räkna med ganska höga initiala kostnader vid produktion av ramverkslösningar. I gengäld får man relativt låga underhåll- och driftkostnader. Ifall man vill ha precis det som erbjuds av ett CMS och inte så mycket annat så kan skillnaden vara stor, men om projektet istället innefattar stora anpassningar av CMS-lösningen behöver det inte nödvändigtvis vara så att ramverkslösningen kostar mer. För tjänster som inte inkluderar CMS-funktioner blir valet av en ramverkslösning självklart.
I plattformsvalet kan en stor faktor vara vilka som skall administrera systemet: Om de trivs i och har kompetens kring ett specifikt CMS så kan det vara en god idé att ta hänsyn till det. Ramverkslösningen kommer sannolikt att kräva viss utbildning och löpande supportfrågor. Det är vanligt att avancerade funktioner som kanske ingår i de flesta CMS prioriteras bort av ekonomiska skäl vilket kan leda till en något sämre administratörsupplevelse, men ibland kan ramverkens stora flexibilitet möjliggöra kraftiga effektiviseringar av det redaktionella arbetet.
Det beror på vad som ska byggas. Generellt lyder rekommendationen att använda ramverk för digitala tjänster med lite CMS-funktionalitet och att välja ett CMS i de fallen man primärt försöker bygga en informationssajt. Ifall man har väldigt mycket tredjepartsintegrationer och/eller externa datakällor kan ramverkslösningar vara att föredra även för informationssajter. Det finns också hybridlösningar där man har ett CMS som är byggt ovanpå ett ramverk (ex. Wagtail CMS). Personligen älskar jag dessa lösningar eftersom de ger utvecklarna de verktyg som de behöver samtidigt som man slipper uppfinna hjulet på nytt och kan hålla de låga initiala kostnaderna som CMS-lösningar levererar på.
Att välja rätt verktyg för jobbet tycker vi på Fröjd är superviktigt och för att göra det krävs att man har koll på vad som ska utvecklas. Vi börjar alltid processen med att samla in krav och insikter kring systemet innan vi ställer oss frågan vilken plattform vi ska använda. Du kan läsa mer om hur vi jobbar med plattformsval i vår artikel Rätt verktyg till jobbet – Sex viktiga frågor när du väljer digital plattform