Primärt ramverk för backend-applikationer (v2)

Status

BESLUTAT

Impact

Medium

Driver

@Dennis Nilsson (Unlicensed)

Approver

@Per Persson

Contributors

@Dennis Nilsson (Unlicensed) + arbetsgruppen för utredning av CI-verktyg

Informed

Alla deltagare på mötet “Utvecklarforum” 2021-12-15

Due date

2021-12-13

Resources

Outcome

SpringBoot

Background

Vi tog ett beslut i februari 2021 om att använda Quarkus som vårt primära ramverk för att utveckla applikationer → https://sundsvall.atlassian.net/wiki/spaces/API/pages/37290015

Vad har hänt sedan dess?

  • Vi har byggt upp två utvecklingsteam (Team Dynasty och Team Unmasked) med många nya resurser. Vi är nu 5/7 java-utvecklare med 5+ års erfarenhet av Spring i dessa team.

  • Camunda-teamet har bildats.

Med den nya situationen ansåg vi det vara nödvändigt att utreda detta på nytt. Vi har därför gjort en ny utredning angående vilket val av ramverk som skulle bidra med mest nytta till Sundsvalls kommun.

Options considered

Argument för att byta till Spring-boot

En stor del av teamet har lång erfarenhet av utveckling i Spring Boot. Detta för med sig dessa fördelar:

  • Vi vet att det finns stöd för allt vi har behov av i Spring Boot.

    • I Quarkus har vi förmodligen stöd för det mesta också, men vi behöver lägga tid på att utreda detta.

  • Vi kommer snabbare komma till en stabil grundplatta.

    • Vi vet vad som behöver göras och hur det ska göras. Med Quarkus blir det mer tid på utredning.

  • Vi kommer initialt bygga applikationer snabbare och med en högre kvalitet eftersom vi nyttjar den kompetens vi redan har i teamen

    • Med Quarkus måste vi lära oss och prova oss fram tills vi har blivit lika effektiva.

  • Det är osäkert om vi kommer få så stor nytta av de prestandafördelar Quarkus för med sig.

    • Vi kommer inte bygga system med så högra krav på prestanda så att detta kommer bli en begränsning med Spring Boot.

    • Hårdvara är billigt och tid är dyrt.

  • Camunda utvecklar sina backend-applikationer i Spring Boot vilket innebär vissa fördelar:

    • Vi kan använda gemensamma bibliotek.

    • Kompetensspridning mellan teamet.

Argument för att fortsätta med Quarkus

  • Försäkringskassan och DIGG har valt Quarkus som ramverk.

    • Det är bra att kompetensen finns i stan men det kommer inte vara ett problem att hitta Spring Boot-kompetens heller, eftersom det används i så mycket större utsträckning.

  • Vi har redan byggt flera applikationer i Quarkus.

    • En ombyggnation till Spring Boot kan göras i samband med en större uppdatering av applikationen. Det borde inte innebära allt för mycket jobb då grunden är detsamma - Java-klasser.

  • Vi kan inte byta ramverk så fort vi får in nya utvecklare med kompetens inom något annat.

    • Det är sant. Men vi var endast några få utvecklare när vi tog det första beslutet. Nu har vi byggt upp utvecklingsteamen på kommunen under året och vi sitter nu med team som har en lång erfarenhet av Spring Boot. Det kommer inte vara ett problem att hitta konsulter med den kompetens som krävs framöver.

  • Det har gått för kort tid, vi kan inte redan utvärdera vilket ramverk som är bäst.

    • Det är sant. Men är det värt att lägga ned mer tid på Quarkus för att ta reda på det istället för att använda ett ramverk vi vet fungerar?

  • Det tar alltid tid i början med ett nytt ramverk innan man har fått en bra grundplatta.

    • Ja, så är det. Men är det värt att göra den resan eller ska vi använda något vi redan behärskar istället? Det kommer krävas jobb för att komma till en bra grundplatta med Spring Boot också men skillnaden är att vi vet hur vi ska göra.

Action items

Uppdatera den interna dokumentationen med Spring Boot

Outcome

Grunderna till det tidigare beslutet är i princip oförändrade. Quarkus och Spring Boot är likvärdiga när det kommer till funktionalitet. Båda ramverken har sina egna fördelar.

Vi bedömer att det som kommer ge Sundsvalls kommun mest nytta är att nyttja den kompetens vi redan besitter i Spring Boot. Med Spring Boot kommer vi behöva lägga mindre tid på utredning och kan lägga mer tid på själva utförandet. Detta väger tyngre än de prestandafördelar vi får av att använda Quarkus. Hårdvara är billigt och tid är dyrt.

De applikationer vi bygger från och med nu ska byggas i Spring-boot. För de applikationer som redan finns idag och är byggda i Quarkus är det ingen brådska att migrera till Spring Boot. Detta kan göras i samband med större förändringar av den befintliga applikationen. En bedömning får göras från fall till fall om en migrering är lämplig.