Teknisk beskrivelse

Denne sidens formål er å beskrive det tekniske oppsettet til Prosjektbanken. Under er et bilde som viser stystemflyten fra SQL-database til frontenden som er det brukeren interagerer med.

Microsoft SQL Server: Dette er datakilden til Prosjektbanken. Prosjektbanken henter data fra et SQL-view som i skrivende stund inneholder 4.1 millioner rader som hver inneholder informasjon om én bevilgning og tilhørende prosjekt. I hver rad finner man blant annet informasjon som året for bevilgning, beløpet som er bevilget, prosjekttittel, organisasjonen som mottar bevilgningen.

Feeder: Feeder er en Java-applikasjon som bruker Logstash til å transformere og overføre data til Elasticsearch. I følge http://elastic.co/logstash (oversatt fritt): "Logstash er en gratis og open server-side dataprosesserins-rørledning som får inn data fra en mengde kilder, transformerer det og sender det til ønsket 'stash'". Denne applikasjonen kjøres automatisk når innholdet i Microsoft SQL databasene oppdateres.

Elasticsearch: Elasticsearch er en søkemotor som brukes til å indeksere data slik at man kjapt kan filtrere og transformere data til noe som er overkommelig for REST API-et. Det tilbyr ikke bare lagring, men også fine-tuning for relevanse på søk og analyse av dataene. Les mer om Elasticsearch her: https://www.elastic.co/elasticsearch/

Backend/REST API: Backenden er skrevet i Java webservicerammeverket Jersey. Denne modulen er grensesnittet mellom frontenden og Elasticsearch. Den har hovedansvar for å ta imot forespørsler fra Frontend og be om dataene som trengs fra Elasticsearch. Deretter mottar den data fra Elasticsearch og transformerer disse til noe som er overkommelig for frontenden før dette returneres til frontend.

Frontend: Frontenden er bygget i ReactJs og gjør alt som har å gjøre med visualisering og brukergrensesnitt. Her kan brukeren filtrere data og få grafiske representasjoner av hva brukeren ønsker å se av de tilgjengelige dataene. For å gjøre Prosjektbanken søkbar via Google ble rammeverket Nextjs brukt for initiell render av sidene på serversiden. Contentful ble brukt som et innholdshåndteringssystem som gjør det enkelt å oppdatere tekst og bilder uten å måtte modifisere kode.