Technologie

Een onderhoudbare basis

C# en .NET vormen de technische basis voor de software die Redakt bouwt. Voor beheerde clouddiensten werken we met Microsoft Azure. De architectuur volgt de omvang van de oplossing.

Webapplicaties, logica en koppelingen

C# en .NET gebruiken we voor webapplicaties, bedrijfslogica, achtergrondprocessen en koppelingen met andere systemen. Een toepassing of service kan ook als container op een andere geschikte omgeving worden uitgevoerd als de oplossing daarom vraagt.

Vorm volgt de omvang

Een afgebakende toepassing houden we compact. Als onderdelen onafhankelijk moeten kunnen schalen of uitgeleverd worden, ontwerpen we ze als afzonderlijke diensten. Achtergrondprocessen kunnen reageren op een gebeurtenis, een wachtrij verwerken of op vaste momenten werk uitvoeren. De gekozen vorm blijft begrijpelijk voor het team dat de software later beheert of overneemt.

Gegevens en opslag

Structuur bepaalt de opslag

Voor gegevens met een vaste structuur en duidelijke onderlinge relaties ligt een relationele SQL-database vaak voor de hand. Waar informatie van document tot document sterk verschilt, kan een documentdatabase zoals MongoDB beter passen. Andere vormen van opslag kunnen worden gebruikt voor bestanden, zoekfuncties, tijdelijke gegevens of specifieke manieren van verwerken.

Meerdere bronnen, één definitie

De keuze voor opslag volgt uit het datamodel, de manier waarop de gegevens worden gelezen en geschreven, de gewenste historie en de eisen aan beheer. Binnen één oplossing kunnen meerdere soorten opslag naast elkaar bestaan. We leggen vast welke bron leidend is en hoe wijzigingen worden verwerkt, zodat rapportages en applicaties dezelfde definities kunnen gebruiken.

Koppelingen met bestaande systemen

Aansluiten op wat er al is

Nieuwe software staat zelden op zichzelf. Gegevens komen uit een ERP, CRM, branchepakket of een intern systeem en moeten soms ook terug. We gebruiken API's waar die beschikbaar zijn en bouwen een passende aansluiting op systemen die via bestanden, exports of een oudere interface werken.

Eigenaarschap en toegang

Bij iedere koppeling bepalen we welke gegevens worden uitgewisseld, welk systeem eigenaar van die gegevens is en wat er gebeurt als een bron tijdelijk niet bereikbaar is. Authenticatie en autorisatie horen bij dat ontwerp. Waar de organisatie Microsoft Entra gebruikt, kan de applicatie daarop aansluiten voor inloggen, gebruikers en rollen.

Containers waar dat helpt

Consistente inzet

Onderdelen kunnen in containers worden verpakt, zodat een dienst op een consistente manier wordt gebouwd en uitgevoerd. Dat maakt de inzet en het beheer voorspelbaar en biedt ruimte om een afgebakend onderdeel op een andere geschikte host te draaien.

Wanneer het zinvol is

We gebruiken containers wanneer ze de oplevering, schaalbaarheid of scheiding tussen onderdelen eenvoudiger maken. Ze passen vooral bij diensten die onafhankelijk worden uitgerold of geschaald, of technisch van de rest van de oplossing gescheiden moeten blijven.

Performance en hoge volumes

Ontwerpen op gebruik

Bij grotere aantallen gebruikers, transacties of documenten ontwerpen we op het verwachte gebruik. We meten waar tijd wordt besteed en kiezen vervolgens gericht voor snellere queries, caching, verwerking op de achtergrond of het onafhankelijk schalen van een onderdeel.

Aanpak per knelpunt

De gekozen aanpak hangt af van het knelpunt. Een rapportage met veel gegevens vraagt iets anders dan een portaal met een korte piek of een achtergrondproces dat iedere dag grote aantallen berichten verwerkt. Met belastingtests en monitoring controleren we of de oplossing het verwachte volume aankan.

AI in de oplossing

Beheerde diensten in Azure

Als een oplossing beheerde AI-diensten nodig heeft, gebruiken we daarvoor diensten binnen Azure. De applicatie bepaalt welke informatie naar het model gaat en welke bronnen voor een antwoord gebruikt mogen worden. Bij zoeken in eigen documenten krijgt het model alleen de relevante fragmenten mee. Dit patroon wordt vaak retrieval-augmented generation, of RAG, genoemd.

Rechten en controle

Toegangsrechten lopen mee in die verwerking. De AI-functie gebruikt alleen documenten waartoe de medewerker toegang heeft. Antwoorden krijgen waar mogelijk een bronverwijzing, en bij processen met gevolgen bouwen we een controlemoment in voordat de software verdergaat.

Kosten en kwaliteit

Gebruikskosten hangen af van het aantal vragen, de hoeveelheid tekst en het gekozen model. We meten dat gebruik en maken zichtbaar hoe de kosten zich ontwikkelen. Kwaliteit meten we met representatieve vragen en verwachte antwoorden, zodat een wijziging in documenten, instructies of modellen gecontroleerd kan worden.

Beveiliging en beheer

Vanaf het ontwerp

Toegang, gegevensbescherming en logging worden vanaf het ontwerp meegenomen. Rollen bepalen welke delen van de applicatie en welke gegevens iemand ziet. Gevoelige instellingen en sleutels worden apart van de code beheerd. De applicatie legt technische fouten en relevante gebeurtenissen vast, zodat beheer kan zien wat er gebeurt.

Na oplevering

Na oplevering horen monitoring, updates en herstel bij een betrouwbare productieomgeving. We richten zichtbaar in of de applicatie beschikbaar is, of koppelingen blijven lopen en waar fouten ontstaan. De documentatie beschrijft de architectuur, de belangrijkste keuzes en de stappen voor beheer en overdracht.