Blogg

Här finns tekniska artiklar, presentationer och nyheter om arkitektur och systemutveckling. Håll dig uppdaterad, följ oss på Twitter

Callista medarbetare Erik Lupander

Callista Tech Radar 2022

// Erik Lupander

Precis som ifjol har vi på Callista tagit oss själva på pulsen för att ta reda på med vad och hur vi jobbar i våra uppdrag.

Här följer en liten sammanfattning av Callista Tech Radar 2022.

1. Introduktion

Förra årets Tech Radar avslöjade vissa saker om oss själva som helt klart förvånade oss. Vi, som länge sett oss som ett företag väl rotat i Java-plattformen, jobbade redan då till ca 50% med andra programmeringsspråk än just Java. Vi konstaterade också att många av oss var nyfikna på nya språk, att relationsdatabasen fortfarande dominerade och att service mesh inte hade slagit genom så mycket än.

Till årets enkät har vi förvisso kompletterat med lite nya frågor, men fokuserat på att ställa samma frågor igen för att kunna fånga trender över tid. Häng med!

2. Programmeringsspråk

Vi börjar titta på vilket som är respektive medarbetares (som arbetar med programmering) huvudsakliga programmeringsspråk i sitt uppdrag:

programmeringsspråk 1

Figur 1: Huvudsakligt programmeringsspråk, per person.

Java är fortsatt etta som primärt programmeringsspråk, men framförallt Go har haft en stark tillväxt under året som gått. Ifjol låg som sagt Java på ca 50%, så totalt sett har Javas betydelse för oss minskat något. Dock så får man naturligtvis ha med sig att språk som Kotlin och Scala körs på JVM:en, så totalt sett kan man alltjämt påstå att Javaplattformen är vårt “bread and butter”.

Som kompletterande fråga har vi också kikat på vilket sekundärt språk vi oftast använder. Det kan t.ex. vara för DevOps-arbete, enklare scripting-ändamål eller frontend.

programmeringsspråk 2

Figur 2: Sekundärt programmeringsspråk, per person.

Den kanske tydligaste trenden här är att Python är på stark frammarsch.

Hur nöjda är vi med våra språk då? Alla fick ranka hur nöjda de är med sitt huvudsakliga språk på en skala mellan 1-10, där 10 är mest nöjd. Diagrammet nedan visar genomsnittet per språk. Vi kan se att skillnaderna mot 2021 är tämligen små:

satisfaction

Figur 3: Jämförelse 2021-2022 nöjdhet med programmeringsspråk, 1-10.

(notera att Python inte var någons huvudsakliga språk 2022, därav ingen snittpoäng)

Scala toppar listan medan Javascript hamnar i botten, om än med ett ganska högt snittbetyg. Totalt sett verkar vi vara tämligen nöjda med de språk vi utvecklar i på företaget.

2.1 Frontend & Backend

Om vi tittar lite närmare på vad frontend- respektive backend-utvecklare jobbar med blir bilden mer detaljerad och kanske även mer rättvisande:

Backend: backend

Figur 4: Huvudsakligt programmeringsspråk för backendutveckling, per person.

När det gäller frontend är det till 100% Typescript som gäller. Det kan också tilläggas att ett språk som Typescript används i såväl frontend, backend och devops-sammanhang, vilket knappast är fallet med t.ex. Java.

2.2 Vart är vi på väg?

Som komplement till vad vi sysslar med idag så är det intressant vad man utifrån helt personlig preferens skulle vilja arbeta med som man inte arbetar med idag. Man fick välja upp till tre språk:

programmeringsspråk #5

Figur 5: Programmeringspråk man gärna hade jobbat med, upp till tre val per person.

Likt ifjol är Go det populäraste alternativet. Strax där bakom är det dött lopp mellan Rust och Kotlin, där det dock som framgått ovan redan är några av oss som jobbar med Kotlin på heltid. Rust är många nyfikna på, men är hittills inget språk vi märkt av någon större efterfrågan i uppdragen. Årets raket är annars Python vilket kanske inte är så förvånande med tanke på dess starka frammarsch sett till populäraste språk på exempelvis Tiobe Index eller PyPL.

3. Hur körs tjänster och applikationer?

Redan 2021 utropade vi applikationsservern som död, och 2022 års Tech Radar ger oss ingen anledning att omvärdera detta.

3.1 Privat/offentlig sektor

En fråga som vi ibland ställer oss är vilka skillnader vi upplever mellan kunder i privat och offentlig sektor.

Om vi börjar med att titta på var någonstans våra kunder inom respektive segment driftar sina tjänster/applikationer, så ser det ut enligt följande:

Offentlig sektor: drift

Figur 6: Driftsmiljöer offentlig sektor. Flera alternativ möjliga

Privat sektor: drift

Figur 7: Driftsmiljöer privat sektor. Flera alternativ möjliga

Utan tvekan är privat sektor betydligt mer benägen att driftsätta sina tjänster hos de stora (i regel amerikanska) molnleverantörerna jämfört med den förmodat mer hårt reglerade offentliga sektorn.

En annan slutsats från enkäten är att kunder i offentlig sektor verkar vara något mer “konservativa” och har en högre andel rena Java-projekt jämfört med privat sektor.

3.2 Exekveringsplattformar

Under denna rubrik sorterar vi in vilken typ av underliggande plattform som våra applikationer exekverar på. Definitionerna kan vara något flytande, men oftast avses här att man redan har paketerat sin applikation i en docker-image, alternativt som en .war/.ear fil som man t.ex. kör på en Servlet-container.

plattformar

Figur 8: Exekveringsplattformar, flera alternativ möjliga

Notera att under “Annan containerorkestrator” ingår t.ex. Docker Swarm, Mesos, Apcera etc, dvs de containerorkestratorer som _inte har Kubernetes i botten. Dock så särredovisar vi OpenShift eftersom det är en såpass vanlig variant av Kubernetes. Under “Kubernetes” ingår för övrigt också molnpaketeringar såsom AWS EKS eller Azure Kubernetes Service (AKS)._

Utan tvekan är Kubernetes och dess kusin/syskon OpenShift klart vanligaste plattformen att exekvera sin mjukvara på. Jag hade dock förväntat mig en högre %-andel på Function-as-a-Service, t.ex. AWS Lambda, då det är teknologi många av oss gillar och som är väldigt kostnadseffektiv under rätt omständigheter. Inte helt omöjligt att svarsalternativen varit lite felformulerade och en del sorterat in dessa under annat alternativ?

3.3 Service Mesh

Service Meshes identifierade vi som “hypad” teknologi redan 2021, men där och då var det bara en endaste medarbetare som faktiskt använde sig av den typen av teknologi i sitt uppdrag.

2022 är bilden något annorlunda: servicemesh

Figur 9: Används en Service Mesh?

Visserligen angivet i procentenheter, men under året som gått har vi åtminstone ett par kunder som börjat använda Service Meshes, oftast Istio.

4. Ramverk och produkter

4.1 Spring och Java EE

2021 konstaterade vi att Spring hade ett förkrossande övertag, med drygt 83% “marknadsinnehav” bland våra Javaprojekt.

2022 ser det ut enligt följande: ramverk

Figur 10: Ramverk som används inom Java, flera alternativ möjliga.

4.2 API:er

Förra året hade REST-API:er ca 65%, följt av SOAP på ca 20% och GraphQL samt Protobuffers/gRPC på 7% var.

Årets siffror:

API:er

Figur 11: API-typer som används, flera alternativ möjliga

REST har tappat något medan GraphQL och Protobuffers tagit ordentliga kliv. Föga förvånande är det SOAP som får stryka på foten.

4.3 Databaser

På hög nivå pratar man oftast tre typer av databaser för långtidslagring av data:

  • Relationsdatabaser
  • Dokumentdatabaser
  • Grafdatabaser

Sedan finns det såklart ett antal andra typer såsom KV-stores, tidsseriedatabaser eller “event”-databaser såsom Kafkas ksqlDB.

2021 såg det ut enligt följande:

  • Relationsdatabaser: 78%
  • Dokumentdatabaser: 22%

2022: databaser

Figur 12: Typ av databaser som används, flera alternativ möjliga

Plötsligt har Redis dykt upp som en etablerad spelare vilket förvånar lite, men det kan mycket väl röra sig om vad man lägger i begreppet “persistent”. Är det persistens i en minut, en timme, ett dygn eller ett år som avses? Frågan kan behöva formuleras mer precist till 2023. Som tillägg så erbjuder Redis persistent lagring på disk, men det gäller att hålla tungan rätt i mun gällande t.ex. eviction policies så inte affärskritisk data råkar försvinna om tilldelat minne börjar ta slut. Kan vara ett ämne att fördjupa sig inom!

4.4 Frontend-ramverk

Ibland kan man lite elakt skämta om den höga omsättningstakten avseende ramverk på frontend (t.ex. klassikern https://dayssincelastjavascriptframework.com/). Undertecknad skulle hellre vilja titulera det som en hög innovationstakt, som definitivt främjat frontendutvecklingen genom åren.

Hos oss brukar React vara det vanligaste valet, med 66% förra året följt av Vue på 27% och Angular på 7%.

2022 års frontend-ramverk:

frontend

Figur 13: Frontendramverk, flera alternativ möjliga

Ingen större skillnad mot tidigare, React har en väldigt stark ställning.

4.5 Byggverktyg

En trend som vi sett över ett antal år är att molnet blivit ett allt hetare alternativ att köra sina bygg-pipelines i, där man dessutom kan notera att tjänster såsom Gitlab försöker erbjuda en helhetslösning kring källkod, byggen, ärendehantering osv.

I våra projekt ser det ut så här: byggverktyg

Figur 14: Byggverktyg, flera alternativ möjliga

Gammal är äldst? Jenkins må ha några år på nacken, men är fortsatt det enskilt mest vanligt förekommande verktyget. Men Azure Pipelines, Gitlab CI m.fl. är på frammarsch och samlar tillsammans en större skara än Jenkins självt. Notera dock att vi inte frågat om byggsystemet körs on-premise eller i molnet. Åtminstone Gitlab går ju att köra i eget datacenter.

5. Andra spaningar

Avslutningsvis lite mjukare värden av olika slag.

5.1 Arbetsuppgifter

Vad gör vi på jobbet och vilka roller har vi i våra uppdrag? arbetsuppgifter

Figur 15: Roller i uppdragen

Helt klart har vi tonvikt på mjukvaruarkitektur/lösningsarkitektur och backend-utveckling, men vi har helt klart en skaplig bredd även när det gäller ansvarsområden.

5.2 Hemarbete

Pandemin har i grunden förändrat synen på hemarbete. Så här såg fördelningen i antal dagar per arbetsvecka man jobbade hemma ut i år:

hemmajobb

Figur 16: Hemarbete, dagar per arbetsvecka.

Tyvärr ställde vi ej denna fråga 2021, men våren 2021 så jobbade i princip alla 100% hemifrån pga pandemin.

5.3 Digitala hjälpmedel

I takt med hemarbetets frammarsch har de digitala hjälpmedlen blivit allt viktigare. Lösningar för online-möten är i princip en självklar del nu. Verktyg för planering, ärendehantering och dokumentation använde de allra flesta även sedan tidigare, men där vissa företag före pandemin kan ha jobbat mycket med fysiska scrum-walls och post-it lappar, så har rimligen de flesta som erbjuder möjlighet till fortsatt distansarbete än mer fått förlita sig på eller gå över till digitala verktyg.

Vilka verktyg gäller?

För digitala möten ser det ut så här: hemmajobb

Figur 17: Mötesverktyg

Microsoft Teams är tydlig etta.

Samarbetsverktyg: hemmajobb

Figur 18: Projektverktyg, flera alternativ möjliga

Lika dominanta som Teams är när det gäller de digitala mötena, är Atlassians kombination av JIRA och Confluence.

En personlig reflektion är att utvecklare ofta är måttligt imponerade av Teams, JIRA och Confluence, men ändå är det just dessa verktyg som gäller i de flesta uppdrag. Gräset-alltid-grönare effekt?

6. Sammanfattning

Vår “Tech Radar” visar inte på några egentliga revolutioner sedan 2021, men några möjliga trender kan fortsatt urskiljas:

  • Vi jobbar fortfarande mest med Java, men andelen minskar.
  • Molnet är inte bara här för att stanna, fler och fler delar av systemutvecklingsprocessen lokaliseras till olika XaaS (X as a service) i molnet.
  • Hemarbete är än så länge det nya huvudvalet för majoriteten av oss. Det blir väldigt intressant att se hur frågan utvecklas de kommande åren.
  • GraphQL är hett, SOAP är det inte.
  • Applikationsservern fick ingen revival 2022 heller.
Tack för att du läser Callistas blogg.
Hjälp oss att nå ut med information genom att dela nyheter och artiklar i ditt nätverk.

Kommentarer