Digg:s nya plattform – Säker digital kommunikation (SDK) – gör det möjligt för myndigheter och vårdgivare att byta känsliga uppgifter snabbt, krypterat och helt utan fax eller bud. Med hjälp av Håkan Wiklunds expertis inom Quarkus, Java Reactive och OpenShift utvecklades de sista delkomponenterna för en första produktionssättning. Utvecklingen fortsätter och anslutningstakten till den nya tjänsten accelererar och sänker riskerna för säkerhetsklassad kommunikation inom offentlig sektor. Är detta Digg:s största framgång hittills?
Säker digital kommunikation [SDK]
Myndigheten för digital förvaltning [Digg] utvecklar Säker digital kommunikation [SDK] som erbjuder ett tryggt, enkelt, effektivt och säkert sätt att skicka känslig och sekretessklassad information mellan den offentliga sektorns olika aktörer. Tanken är att den nya tjänsten skall ersätta kommunikation som idag sker via fax, brev, telefon och andra kanaler som kan innebära olika typer av säkerhetsrisker. Ofta handlar det om känslig eller sekretessklassad information som vårdplaner, behandlingsplaner, bedömningar av arbetsförmåga och utdrag ur belastningsregistret. I brist på säkrare alternativ används i dag brev eller bud särskilt inom hälso- och sjukvård, skola och socialtjänst.
SDK är en tjänst och en digital infrastruktur som offentliga aktörer och privata utförare med offentligt finansierade uppdrag ansluter sig till. Meddelanden som skickas via SDK kan innehålla fritext och bilagor i olika format. Meddelanden adresseras till funktionsadresser hos anslutna deltagarorganisationer, exempelvis socialtjänsten inom en kommun, en avdelning på en myndighet eller vårdcentral inom en region. Det går alltså inte att skicka meddelanden direkt till enskilda personer.
SDK är en infrastrukturtjänst som saknar ett eget användargränssnitt. Det innebär att den organisation som använder SDK skapar och tar emot meddelanden i den programvara organisationen valt för att distribuera meddelanden.
Kompetensbehov
För att färdigställa utvecklingen av den första versionen av tjänsten och för att få ut den i produktion och etablera en fungerande förvaltning behövde myndigheten komplettera projektet med djup kompetens inom systemutveckling av Quarkus-baserade Java-applikationer i Kubernetes/Openshift-miljö. Den tekniska miljön är komplex och består av flera delsystem, varav vissa utvecklas av Digg medan andra utvecklas av externa aktörer, och alla dessa delsystem behöver integreras med varandra. De delsystem som ingått i uppdraget är Service Metadata Publisher [SMP], SDK Adressbok och Domibus accesspunkt.
Masarin deltar i projektet genom Håkan Wiklund som har lång erfarenhet av komplexa Java-projekt med höga krav på tillgänglighet och säkerhet, från bland annat Eriksson och Försäkringskassan. Han har dessutom erfarenhet av Java Reactive som var en avgörande komponent i arkitekturen. Håkan arbetade initialt som backendutvecklare i adressbokens team, men har senare deltagit i stora delar av projektets utvecklingsarbete inklusive felsökning i test- och produktionsmiljöer. Arbetet innebär testdriven utveckling kombinerat med DevOps-arbete med automatiserade byggen i pipelines och releaser som deployas till olika test- och produktionsmiljöer.
Teknik och metodik
Backend-applikationen är en Java-applikation baserad på Quarkus som är ett ramverk framtaget för att skapa små microservice-applikationer speciellt anpassade för att köras i molnmiljöer likt Kubernetes och Openshift. Applikationen är dessutom baserad på SmallRye Reactive som är ett ramverk som används för att minska responstider vid olika typer av anrop. Vidare används Hibernate ORM vilket är ett vanligt ramverk för att effektivt mappa objekt mot relationsdatabaser. Frontend-applikationen är en typescript-applikation baserad på ramverket Vue i kombination med tailwindcss. Samtliga Java-applikationer paketeras som Docker-images och deployas till relevanta miljöer på Openshift-plattformen.
Huvudarkitekturen med dess integrationsmönster utgjörs huvudsakligen av REST-API-anrop mellan de olika applikationerna där gränssnitten definieras upp av en OpenAPI-specifikation som sedan används för att generera både server- och klientkod. Även meddelandebussar används på vissa ställen, men det är mindre vanligt.
Initialt utvecklades allt på develop- och mainbrancher men det har ändrats till trunkbased development. Koden testas först med enhetstester lokalt och därefter i en Gilab pipeline. Där görs även kontroll av formatering, lint-kontoller och integrationstester. GitLab hanterar även kodgranskning med merge requests.
Jag har haft privilegiet att lära mig en hel rad nya ramverk och tekniker.
Håkan Wiklund, Masarin Consulting Group
Efter en godkänd granskning triggas en automatiserad byggning i en Tekton-pipeline som bl.a. utför ytterligare validering i form av end-to-end tester, automatiserad skanning efter kända sårbarheter i alla beroenden som används, automatiserad publicering av den färdiga imagen och automatiserad deployment till en testmiljö.
Arbetet genomförs med högt fokus på säkerhet. All kommunikation krypteras och skyddas av brandväggar, auktorisation och autentisering med OIDC och Oauth 2.0. Digg har även genomfört ett flertal risk- och säkerhetsanalyser för att identifiera brister och risker för SDK. Dessutom har en incidenthanteringsrutin och kontinuitetsplan etablerats som utförs av Tjänsteman i beredskap (TiB).
Detta är Digg:s största framgång hittills. Det kommer att förändra hur kommunikation inom offentlig sektor sker i framtiden. Från början var anslutningstakten från kommuner, regioner och myndigheter blygsam, men det förändras. Nu ökar antalet i snabb takt. Per maj 2025 har 140 kommuner, ett tiotal myndigheter och nästan alla regioner anslutit sig, eller påbörjat anslutning. På den här sidan går det att följa utvecklingen och det publiceras mer information om lösningen, som till exempel hur anslutningen till SDK går till.
Lärdomar
Vilka nya kunskaper eller insikter har du fått i samband med utvecklingen av SDK?
Framför allt är det nya tekniska områden. Jag har haft privilegiet att lära mig en hel rad nya ramverk och tekniker. Samt hur den avancerade tekniska lösningen som SDK är uppbyggd av fungerar i praktiken, och hur de kan optimeras för en effektiv tjänsteleverans.
Hur har uppdraget påverkat ditt sätt att arbeta eller dina framtida karriärmål?
Jag har lärt mig att utnyttja och uppskatta alla avancerade saker man kan använda en byggpipeline till. Det var inget krav men eftersom det var mycket arbete inom Openshift så kände jag mig extra motiverad att ta en certifiering som heter Kubernetes Certified Application Developer (CKAD). Det är ett val som jag inte ångrar, det har underlättat betydligt när jag t.ex. behövt felsöka komplicerade problem i molnet. En certifiering är ju dessutom ett tydligt yttre bevis för mitt kunnande som är bra att ha i CV:t.
Vilket “take-away” vill du att andra systemutvecklare och konsulter ska få när de läser om ditt uppdrag?
Digg är en väldigt trevlig arbetsplats att jobba på och det känns som att SDK-lösningen kommer att kunna underlätta kommunikationen inom offentlig sektor avsevärt. Det är lätt att gå till jobbet när tekniken är utmanande och utvecklande, arbetsplatsen och kollegorna inspirerande och när lösningen dessutom ger en så stor samhällsnytta som SDK kommer att göra!


