Løsningsarkitektur-resumé

Her finder du løsningsarkitektur for Orkestreringskomponenten, der viser komponenter, services og snitflader til henholdsvis datakilder og dataanvender samt den tekniske infrastruktur.

Redaktør: Kurt Hansen

 

Indledning

I nedenstående gives en overordnet beskrivelse af opbygningen af Orkestreringskomponenten, hvor der fokuseres på den interne opbygning, herunder hvilke funktioner der er implementeret, samt de snitflader der er til visningsklienter og datakilder. Endvidere er der en angivelse af den underliggende infrastruktur.

Beskrivelsen er opdelt i et afsnit, der er koncentreret omkring Orkestreringskomponentens primære funktionalitet og snitflader, samt et afsnit der beskriver den Indeksfunktionalitet, der tilbydes til datakilder.

Beskrivelser sker gennem ArchiMate-diagrammer med uddybende tekst.

Opbygning af Orkestreringskomponenten

Orkes.png

Figurtekst: Services og funktioner i Orkestreringskomponenten (blå) og de anvendte teknologier (grøn). Grå elementer er uden for Orkestreringskomponenten, fx borger.dk som visningsklient.

 

Servicen Overbliksliste udfører funktionen Udvælg datakilder for den enkelte forespørgsel om overblik fra visningsklienten baseret på oplysningerne i Indeks, samt hvilke Aftaler der er indgået mellem de enkelte datakilder og visningsklienter. Funktionen Sammenstil kalder de relevante datakilder parallelt og venter på svar fra datakilder op til en tidsgrænse, som er defineret i Konfiguration.  

Servicen Detalje udfører funktionen Viderestil til en detaljeservice hos en enkelt datakilde og venter på svar op til en tidsgrænse, som er defineret i Konfiguration

De to services Overblik og Detalje implementeres generisk for alle typer af forretningsobjekter og deles om en række fælles funktioner:

  • Adgangskontrol til kald, for henholdsvis overblik- og detaljeservices, for hvert enkelt forretningsobjekt; baseret på oplysninger om indgåede Aftaler samt genkendelse af visningsklienten vha. certifikater. 

  • Validering, hvis en datakilde ikke svarer inden for perioden eller med et ikke validt svar, håndteres dette som fejl, der formidles til visningsklienten sammen med svarene fra de øvrige datakilder.

  • Fejlfinding oversætter fejlbeskeder fra sammenstilling, viderestilling eller fra den enkelte datakilde til en fælles model og brugervendte fejlbeskeder, der kan anvendes af visningsklienter direkte. 

  • Circuit breaker virker ved, at når der er observeret x-antal fejlende kald efter hinanden for en bestemt datakilde, så bliver datakilden deaktiveret. Deaktivering betyder at Orkestrerings-komponenten, ved efterfølgende kald til enten liste eller detalje, ikke forsøger at kalde en givne datakilde. Datakilden bliver ikke permanent deaktiveret, men deaktiveres kun for at konfigurerbart tidsrum. Når dette tidsrum er udløbet, så forsøger Orkestreringskomponenten at kalde datakilden igen.

Komponenten anvender en fælles platformsservice Logning til at gemme oplysninger om de enkelte kald fra visningsklienter samt resulterende kald til datakilder. Logelementerne udformes, så de tydeligt afspejler, hvilke komponenter og funktioner, der bidrager til den samlede oplevede svartid for slutbrugeren. 

Orkestreringskomponenten er implementeret som en Java applikation med anvendelse af det generelle Java Spring rammeværk. Størstedelen af Orkestreringskomponentens funktionalitet realiseres gennem integrationsrammeværket Apache Camel og dens indbyggede funktioner. Da Java ikke indeholder standardfunktionalitet til validering af JSON-datastrukturer, anvendes her et tredjepartsbibliotek til denne specifikke funktion.

 

Indeksfunktionalitet

Figurtekst: Services og funktioner i Indekskomponenten (blå) og de anvendte teknologier (grøn). Grå elementer er uden for løsningens scope, dvs. datakilder.

 

Følgende services realiseres af Indekskomponenten. 

  • Indeksopslag anvendes af Orkestrering og vil blive kaldt for hver visning af overblik og har derfor stor indflydelse på den oplevede svartid. Derfor er funktionen implementeret som ét servicekald, der samler alle oplysninger til brug ved udvælgelse af datakilde. 

  • Indeksopdatering er en af to services, hvor datakilder kan opdatere Binært Indeks. Servicen lader datakilder tilføje eller fjerne et enkelt CPR-nummer, så Orkestreringskomponenten kun kalder datakilden for visninger, hvor kilden faktisk har oplysninger. 

  • Indeksoverskrivning er den anden service til datakilders opdatering. Servicen er implementeret med resursestyring, således opdateringen af indekset ikke har indflydelse på performance af Indeksoplag.  

Opbevaring af CPR-numre er personoplysninger og kræver derfor ekstra beskyttelse. Orkestreringskomponenten beskytter indholdet af Indeks ved at pseudonymisere ved brug af en hashing-funktion. 

Den samlede tekniske løsning driftes på to adskilte fysiske lokaliteter. Indekskomponenten er Orkestreringskomponentens eneste databærende komponent, og behovet for synkronisering af data på tværs af de to lokaliteter er løst ved anvendelse af databaseteknologi, som indeholder særlige funktioner til dette. 

Indekskomponenten realiseres med udgangspunkt i en standard open source SQL-database (PostgreSQL) med tilhørende webservices, der implementeres i Java Spring. 

 

 

Version Date Comment
Current Version (v. 11) Jul 22, 2024 12:26 Kurt Hansen
v. 10 Nov 11, 2021 10:34 Astrid Cold
v. 9 Nov 11, 2021 09:32 Astrid Cold
v. 8 Nov 03, 2021 14:14 Astrid Cold
v. 7 Oct 27, 2021 07:29 Astrid Cold
v. 6 May 26, 2021 12:17 Mads Østergaard
v. 5 Apr 19, 2021 08:20 Kurt Hansen
v. 4 Apr 19, 2021 08:19 Kurt Hansen
v. 3 Feb 19, 2021 15:37 Former user
v. 2 Jun 15, 2020 08:29 Former user
v. 1 Jun 15, 2020 08:28 Former user