API-infrastruktur och gemensamma komponenter
Vår API-infrastruktur möjliggör att vi kan bryta ner lösningar till väl avgränsade komponenter som integrerar med varandra på ett säkert sätt i vårt digitala ekosystem. Våra komponenter designas med fokus på funktion, inte verksamhet, och med målet att det skall vara möjligt att skala upp användningen av funktionen inom hela koncernen från dag ett. Vår målsättning är dessutom att exponera så mycket som möjligt som öppen källkod och öppen data.
Bilden nedan visar de koncerngemensamma komponenter som finns idag, implementerade i enlighet med vår API-strategi. Varje komponent är som en förmåga som kan nyttjas av mer eller mindre obegränat antal system eller processer. Du kan ta del av mer detaljer om varje specifik komponent på sidan Koncerngemensamma komponenter.
Exempel - Ett centralt API för att integrera med verksamhetssystem
Ett exempel är komponenten caseManagement. Där skapar vi ett API för att integrera t ex en digital kanal med ett verksamhetssystem eller en process. Det innebär att vi har ett API för att skicka data till verksamhetssystem, sedan sköter caseManagement själva kopplingen till de olika systemen och processerna. Vilket förenklar och gör att vi kan skala upp våra integrationer på ett helt annat sätt.
Teknisk beskrivning av vår API-infrastruktur
Vår API-infrastruktur består primärt av två delar, API-management samt mikrotjänster. Nedan beskrivs dessa delar i mer detalj.
API Management (WSO2)
Man kan med fog säga att en stabil API-infrastruktur kräver en stabil API Management-lösning för att hantera API:ers livscykel och möjliggöra säkra integrationer både internt och från externa klienter. Vi använder den öppna plattformen WSO2 Länk till annan webbplats, öppnas i nytt fönster. som API-manager.
Vi har byggt upp en redundant infrastruktur med dubbla uppsättningar API Gateways; en för interna integrationer mellan våra applikationer och system inne på vårt nät, och en för integrationer som kommer in via vårt DMZ (integrationer från våra olika kanallösningar samt från våra externa klienter).
Då flera av de statliga verk vi har i Sundsvall också använder WSO2 ser vi stora fördelar i den samverkan vi kan ha kring lösningen - att dela erfarenheter och lära av varandra är värt mycket.
Mikrotjänster
För att överbrygga komplexiteten i, och frikoppla våra APIer från, vårt digitala arv behöver vi bygga funktioner som hanterar det, och det gör vi i stor utsträckning som mikrotjänster. På så sätt kan vi frikoppla våra APIer från våra system och exponera generiska APIer med hög abstraktionsnivå.
Vi kan aggregera data från flera källor, styra vart ärenden skall registreras beroende på ärendetyp och möjliggöra uppstädning i vårt digitala arv utan att våra klienter påverkas. Vissa mikrotjänster agerar även stödsystem, som feedbackSettings till exempel som hanterar medborgares och företagares kontaktuppgifter.
Tekniska val för mikrotjänster
Egentligen spelar det inte så stor roll i vilken teknik en mikrotjänst är byggd så länge den exponerar standardiserade APIer med hög kvalité (under förutsättning att kod och ramverk är förvaltningsbart), men för att i så hög grad som möjligt främja standardisering av vår egna komponentutvecklingsfabrik så förordar vi att våra komponenter byggs i Java med SpringBoot som mikrotjänstramverk.
Dock kan nämnas att ett antal av våra exponerade APIer exekveras i funktioner byggda i både mer "klassisk" Java, Node.js och .NET, och kommer så göra under överskådlig tid.