img

Vad är skillnaden mellan ett ramverk och ett CMS?

2020-10-01

Pussle

I denna guide tittar vi på hur ett ramverk skiljer sig från ett CMS. Vad är för och nackdelarna och hur bör man resonera när man står vid ett vägval?

På Will & Skill, en digitalbyrå i Stockholm så behöver vi många gånger hjälpa våra kunder med att göra research för att förstå vad som är ett lämpligt val utifrån de behov och önskemål en organisation har. Ibland kan det vara svårt att hitta en tydlig väg framåt när man inte riktigt vet vad man behöver och hur man ska kravställa inför framtida teknikval.

Investering vs kostnad

Teknik är som allting annat, det kan ses som en investering eller en kostnad. Det viktiga är att man behöver hela tiden validera sina val längs vägen för att inte hamna i en återvändsgränd. Teknik behöver underhållas och uppdateras med jämna mellanrum så att det investeringen man gör i en teknikstack återbetalar sig i form av "time-to-market", "developer speed", "convenience" och andra faktorer som påverkar hur pass agilt en organisation kan jobba.

I denna guide går vi genom vad skillnaden är mellan ramverk och CMS, samt hur man bör resonera vid ett stundande teknikval.

Vad är ett ramverk?

Ett ramverk består ofta av färdiga kodmoduler som adresserar de mest förekommande uppgifterna en utvecklare behöver kunna lösa i sin vardag när de utvecklar sajter, system och appar.

Ett ramverk liknar i mångt och mycket det man köper från IKEA, standardiserade delar som kan packas ner i relativt små kartonger och som man kan bygga ihop relativt fort utan att behöva tänka på antalet skruvar som behövs för att få ihop byggsatsen. Syftet är att man som utvecklare får en skjuts i form av de saker som redan finns klara och har lösts av ramverket istället för att återuppfinna hjulet på nytt varje gång eller lägga dyrbar tid på att lösa saker och ting som någon annan löst många gånger bättre.

De saker som förekommer ofta hos flera populära ramverk är bibliotek eller moduler som hanterar routing, URLer, vyer, templates, autentisering, modeller, migrationshantering, sessionshantering och databas-kopplingar.

Vilka fördelar får du med ett ramverk?

De flesta ramverk har en kärna med verktyg som används relativt ofta. Därmed så är syftet att ramverket skall minimera mängden tid och kod det tar för att lösa vanligt förekommande uppgifter i en utvecklares vardag. Du får helt enkelt en komplett verktygslåda med hammare, skruvdragare och andra verktyg som är kompatibla och funkar med skruvarna och de andra beståndsdelarna som ingår.

Kompatibiliteten testas och garanteras av de som skriver ramverket för generella ändamål vilket gör att du som utvecklare inte behöver tänka på det och du kan vara säker på att olika delar av ramverket samspelar med varandra utan alltför mycket trassel.

En annan fördel med att nyttja ett ramverk är att det kan underlätta med saker och ting som rekrytering och utbildning av personal då det finns en hel del material och resurser på nätet. Detta är dessutom väldigt viktigt då ramverk som är populära och omtyckta ofta har en hängiven skara utvecklare som ser till att jobba med ramverket och håller det vid liv.

Vad finns det för nackdelar med att använda ramverk?

Om man inte gör sin hemläxa så kan ett ramverk hindra arbetet mer än att underlätta. Ett vanligt exempel är att man använder ett väldigt stort och komplext ramverk som egentligen inte behövs eller används. Det kan även vara så att ramverket löser vissa saker på ett visst sätt men att projektet egentligen inte har behov av de verktyg som ramverket bistår med.

Ibland kan man göra misstaget att man hoppar på tåget på ett nytt ramverk som verkar hett och presterar bra i prestandatester men kanske inte har en nödvändig skara människor som stöttar det genom att bygga community, evangelisera om ramverkets fördelar och innovera kring de viktiga delar som gör att en stor skara utvecklare kan onboardas och lära sig om ramverket för att därefter använda det i kritiska system hos flera organisationer.

Om du själv skall utveckla ett ramverk från grunden så tar det väldigt mycket tid i början för att få ihop något som är robust och utvecklas kontinuerligt. Därför verkar det vara så att det är uteslutande community-baserade open source ramverk som t ex Django, React, React Native och andra liknande ramverk som oftast lyckats bäst i dagens klimat.