Hopp til innhold

Jamstack

Alle som bruker og utvikler digitale produkter og tjenester er på jakt etter lynraske tjenester med enkel skalering, høy grad av sikkerhet og enklere vedlikehold. For mange av våre løsninger er Jamstack en foretrukket måte å tilby dette på.

Hva er Jamstack?

Vi har jobbet med Jamstack et par-tre år nå, og er en metode for å utvikle og distribuere nettløsninger. Det er ikke hver dag det kommer nye teknologiske vinninger som bryter med etablerte normer, men Jamstack tar opp kampen med et par av dem.


En av disse etablerte normene er at en nettløsning med interaktivt innhold trenger en webserver og en aktiv database for å levere dynamisk innhold til brukeren. Denne klassiske arkitekturen (som også fungerer godt) bygger sidene gang på gang for hver eneste bruker som besøker løsningen. 


Som kontrast er løsningsarkitekturen til Jamstack basert på at brukerne ikke får websider servert fra en tradisjonell webserver. I stedet leveres ferdig genererte sider (HTML, CSS, JavaScript og mediefiler) direkte fra et Content Delivery Network (CDN). Dette omtales som Jamstack, og navnet kommer fra sine tre hovedkomponenter (Javascript, API, Markup). 

visuell fremtslling av jamstack

Hva er fordelene med Jamstack?

Ytelse er åpenbart

Der tradisjonelle nettsider er avhenging av mange ulike cache-teknikker for å beskytte server og database mot overbelastning, så er Jamstack forfriskende enkel å skalere. Jamstack løser dette fordi hele nettsiden forhåndsgenereres som statiske filer, noe som vil gjøre at sider kan leveres lynraskt. Når det gjelder å minimere tiden til første byte, så er det ingenting som slår forhåndsbygde filer servert over et CDN. 

visuell av klienter i en jamstack

Hvordan Jamstack løser interaktivt og dynamisk innhold

Det er her Javascript og API’er kommer inn. Løsningen som pakkes og leveres på CDN’et inneholder også APIer. Disse APIene er har rettigheter til å hente data fra de tjenestene du måtte ønske å servere dynamisk innhold fra. Vi bruker ofte Next.js til dette, et fleksibelt opensource-rammeverk skreddersydd for dette formålet. Next er basert på React, som støtter TypeScript og følger industristandarder. Dette gjør gjenbrukbarheten av komponenter enklere.

En potensiell flaskehals er at man allikevel er avhengig av ytelsen i de bakenforliggende systemene. Du er aldri raskere enn datakildene dine. Men man må huske på at den samme begrensningen finnes i en klassisk arkitektur. Med Jamstack har du fjernet to flaskehalser (database og aktiv webserver). Hvis man ønsker høyere hastighet på datakildene, så finnes det mange teknikker for det. Et eksempel kan være å cache dataene periodevis i skyen - f.eks via Redis Cache. Et annet anbefalt alternativ, er å ta en skikkelig vårrengjøring på hvordan du tilbyr data som helhet. 

Med Jamstack øker du sikkerheten

Når du ikke har en aktiv webserver, så reduseres muligheten for angrep. Du har erstattet serversiden med mikrotjeneste-APIer. Frakoblingen av backend betyr at sikkerhetsfeil som kan utnyttes i frontend-koden ikke resulterer i et sikkerhetsbrudd i backend-applikasjonen. Disse er atskilt med et API og vil stort sett være skrivebeskyttet.

Billigere og enklere skalering, mindre vedlikehold

Når utrullingen din består av et sett med filer som kan serveres hvor som helst, så handler skalering primært om å presentere disse filene flere steder. CDN inkluderer skalering i sine planer, og aktiveres når det er behov for dette. Som en bonus så går vedlikeholdet ned. Der aktive webservere har mange prosesser gående som kan feile eller stoppe opp, så unngår du dette med Jamstack. Hvis løsningen feiler så er det fordi du har rullet ut en feil, og det kan jo skje - men det er mye lettere å feilsøke enn med en aktiv webserver i produksjon.

Hodeløst Innhold og effektiv SEO

På Jamstack-baserte løsninger så trenger man et CMS som leverer innhold via robuste og smarte APIer. Vi foretrekker Sanity.io, et ledende norskt Headless CMS. Headless betyr at fokuset er dedikert til innholdet og innholdsmodellene som eksponerer data gjennom et API, og ikke leverer CSS eller html. Når innhold eksponeres som data så øker friheten til en utvikler, som igjen påvirker dine uttak på nett, mobil, trykk/print, spesielle APIer, smartklokker eller infoskjermer.

Google elsker statiske sider siden de er raske, "lette” og enkle å scanne, dette gir deg et godt utgangspunkt for super SEO rank. Jamstack betyr også full kontroll over innholdet og strukturen på nettstedet, og det er en avgjørende del av SEO. Jamstack gjør det enkelt å legge til egendefinerte metadata som sidetitler, metabeskrivelser eller alternativ tekst, som er en stor hjelp for Google-søkeroboter til å lese og indeksere innholdet på nettstedet ditt.

Er det noen utfordringer med Jamstack?

Selv om vi digger Jamstack og mener at fordelene utveier bakdelene, så er det noen begrensninger som man må finne gode løsninger for. Vår erfaring er at Jamstack fungerer godt, er i rivende utvikling, og det som var utfordrende for bare få kvartaler siden er løst nå. Så punktene i denne listen kan bli raskt utdatert!

Løsningen bygges (inkrementelt) for hver endring

Har du glemt et komma eller et ord i teksten du publiserte, så må løsningen bygges og publiseres på nytt. Dette skjer selvsagt automatisk med gode utviklerrutiner, men det betyr at det kan ta lengre tid fra du trykker på publiseringsknappen til endringen er synlig - noe som er uvant for redaktører. Hvis du har en løsning med mye innhold, så må løsningsarkitekturen din støtte dette på en smart måte. Her har det skjedd utrolig mye de siste årene, og inkrementell bygging av løsningen basert på trafikk er en god løsning som vi benytter. OBS! I skrivende stund har Next.js 12.1 en funksjon i BETA som heter On-demand Incremental Static Regeneration, som kan løse denne utfordringene enda smartere enn i dag - på artikkelnivå. Vi tester denne nå i Mars og April.

Plugin økosystemet er ikke like modent

Dette markedet er i rivende utvikling, men det er ikke til å komme fra at det finnes færre plugins tilgjengelig sammenlignet med en tradisjonell løsning. Det kan bety at du ønsker å integrere noen løsninger som kanskje ikke har en plugin tilgjengelig for det.

Mer tid på utvikling av frontend, mindre i backend

Om dette er en utfordring eller ikke, er vi faktisk litt usikre på. Med hodeløst innhold og Jamstack så har du full frihet til å lage den løsningen du vil, uten begrensninger fra produkter som helst vil pakke inn mye av sine egne ferdige maler, funksjoner og komponenter.

Vi kan Jamstack

Med Jamstack kommer du raskt igang med en løsning du kan starte å teste og fylle med innhold, og iterativt jobbe deg frem til et produkt som passer dine brukere på best mulig måte. Lyst til å høre med om Jamstack og om det passer for deg? Ta kontakt med Trond Vidar.

KONTAKT

Trond Vidar Kjellén

Director of Technology

Telefon: +47 99355218

E-post: trond.kjellen@noaignite.com

Bilde av Trond Vidar