Onderwerp 3.6 — DevOps en engineeringexcellentie

In één zin: In klinische systemen is gedisciplineerde engineering — geautomatiseerde pijplijnen, kleine omkeerbare releases, infrastructure as code en waarneembaarheid — wat verandering veiliger maakt, niet riskanter, en “hoe wij software bouwen en runnen” behandelen als kwestie van veiligheid, billijkheid en publiek vertrouwen is het kenmerk van een volwassen organisatie voor digitale gezondheid.

Waarom dit ertoe doet in gezondheid en zorg#

De manier waarop u software engineert en bedient is zelf een maatregel voor klinische veiligheid. Wanneer een wijkverpleegkundige een medicatiewijziging niet kan zien, een e-verwijzing stilletjes faalt of een uitval clinici buitensluit van een gedeeld zorgdossier, is de schade geen abstract ongemak — het is vertraagde behandeling, een gemiste allergie, een gat in safeguarding. De engineeringpraktijken in dit onderwerp bepalen of een noodzakelijke oplossing de productie in tien minuten bereikt of in tien weken, en of een slechte wijziging schoon kan worden teruggedraaid of clinici dagenlang rond een kapot systeem laat werken.

Er is een hardnekkige en gevaarlijke mythe in gereguleerde domeinen dat verandering risico is, zodat het veiligste systeem het systeem is dat u het minst aanraakt. Het bewijs wijst de andere kant op. Systemen die zelden veranderen stapelen niet-gepatchte kwetsbaarheden, broze handmatige uitrolstappen en ongedocumenteerde stamkennis op; wanneer verandering uiteindelijk onvermijdelijk wordt — een beveiligingspatch, een regelgevende deadline, een leverancier die zich terugtrekt — komt zij als een grote, riskante, slecht begrepen “big bang”. Organisaties die vaak kleine wijzigingen uitrollen, met automatisering en snel terugdraaien, ervaren minder falen en herstellen sneller. In gezondheid en zorg wordt dat verschil in patiëntveiligheid gemeten.

Engineeringexcellentie is ook een kwestie van billijkheid en publiek vertrouwen. Software die niet waarneembaar is verbergt dat een dienst slechter presteert voor gebruikers op oudere apparaten of in gebieden met slechte connectiviteit. Een onveilige softwaretoeleveringsketen stelt vertrouwelijke patiëntinformatie in gevaar (zie Onderwerp 1.7 — Informatiebeheer, gegevensbescherming en cyberbeveiliging). En omdat dit publiek geld en publieke data zijn, verwacht de sector steeds meer dat code wordt gebouwd naar open, inspecteerbare normen — soms letterlijk in het openbaar. Hoe u werkt is daarom geen privékwestie van engineering; het is verantwoordelijk aan patiënten, clinici en het publiek.

Kernbegrippen#

DevOps. DevOps is een cultuur en set van praktijken die de traditionele muur slechten tussen de ontwikkelaars die software bouwen en het operationele personeel dat haar runt. In plaats van code “over de muur te gooien” naar een afzonderlijk team, delen dezelfde mensen het eigenaarschap van een dienst van ontwerp tot live werking, ondersteund door automatisering en snelle terugkoppeling. Het is in de eerste plaats een werkwijze — gedeelde verantwoordelijkheid, schuldloos leren, kleine batches — mogelijk gemaakt door gereedschap, geen hulpmiddel dat u koopt.

Continue integratie en continue levering (CI/CD). Continue integratie (CI) betekent dat elke ontwikkelaar vaak kleine wijzigingen samenvoegt in een gedeelde hoofdtak, elk met een geautomatiseerde build en testrun zodat problemen binnen minuten aan de oppervlakte komen. Continue levering (CD) breidt dit uit zodat software altijd in een releasebare toestand is en via een geautomatiseerde, herhaalbare pijplijn naar productie kan worden uitgerold. Continue uitrol (continuous deployment) gaat een stap verder en rolt elke wijziging die de pijplijn doorstaat automatisch uit. Testen is de inhoud van de poorten van de pijplijn — diepgaand behandeld in Onderwerp 3.7 — Testen en kwaliteitsborging.

Trunk-based development en kleine, omkeerbare releases. Trunk-based development houdt iedereen werkend dicht bij één hoofdlijn in versiebeheer, vele malen per dag integrerend in plaats van langlevende takken te koesteren die uiteendrijven en pijnlijk samenkomen. De bijbehorende discipline is kleine, frequente, onafhankelijk omkeerbare wijzigingen uit te leveren. Een kleine wijziging is gemakkelijk te toetsen, gemakkelijk te testen en — cruciaal in een klinisch systeem — gemakkelijk schoon terug te draaien als er iets misgaat.

Infrastructure as code (IaC). In plaats van servers met de hand te configureren definieert u infrastructuur in machineleesbare bestanden onder versiebeheer. De omgeving wordt reproduceerbaar, toetsbaar en controleerbaar: u kunt haar identiek herbouwen, zien wie wat en waarom wijzigde en bewijzen dat test en productie overeenkomen. Dit is het fundament voor betrouwbare omgevingen (zie Onderwerp 4.0 — Technische architectuur, cloud en legacy).

Platform-engineering en ontwikkelaarservaring. Platform-engineering behandelt de interne hulpmiddelen, pijplijnen en omgevingen waarvan leveringsteams afhangen als product, met de teams als haar gebruikers. Een goed gebouwd intern platform geeft teams een “verharde weg” — veilige standaardinstellingen, vooraf goedgekeurde patronen, uitrol met één klik — zodat zij snel en veilig kunnen bewegen zonder dat ieder de naleving opnieuw uitvindt. Goede ontwikkelaarservaring is geen verwennerij; het is hoe u het veilige pad het gemakkelijke pad maakt.

De DORA-maten. DevOps Research and Assessment (DORA) identificeerde vier maten die presterende teams onderscheiden: uitrolfrequentie (hoe vaak u uitrolt), doorlooptijd van wijzigingen (hoe lang van commit tot productie), percentage mislukte wijzigingen (welk deel van de wijzigingen een probleem veroorzaakt) en tijd tot herstel van de dienst (hoe snel u herstelt). Samen tonen ze dat snelheid en stabiliteit samen stijgen — de teams die het vaakst uitrollen falen ook het minst en herstellen het snelst.

“You build it, you run it”, SRE en waarneembaarheid. Gepopulariseerd bij Amazon betekent “you build it, you run it” dat het team dat een dienst schrijft haar ook bedient, de pager draagt en haar falen voelt — en zo de terugkoppelingslus sluit tussen engineeringkeuzes en operationele werkelijkheid (zie Onderwerp 3.8 — Servicemanagement en live-operatie). Site reliability engineering (SRE) is een specifieke uitwerking die engineering toepast op operaties, met expliciete betrouwbaarheidsdoelen en foutenbudgetten. Waarneembaarheid — het vermogen om de interne toestand van een systeem uit haar outputs (maten, logs, traces) te begrijpen — is wat u problemen laat detecteren en diagnosticeren voordat patiënten en clinici dat doen.

Veilige softwaretoeleveringsketen. Moderne software wordt samengesteld uit veel componenten en afhankelijkheden van derden. Een aanval op de toeleveringsketen buit een vertrouwd component uit om alles wat ervan afhangt te compromitteren. Afhankelijkheden beheren, scannen op bekende kwetsbaarheden en een software bill of materials bijhouden is kernhygiëne van engineering, geen optioneel beveiligingsextraatje.

In het openbaar coderen en opensourcesoftware. Het Britse overheidsbeleid — uitgedrukt in de GDS Service Standard en de NHS Service Standard — vraagt teams nieuwe broncode standaard open te maken en open normen te gebruiken. Voor publiek gefinancierde gezondheidssoftware verbetert dit toetsing, hergebruik en vertrouwen, mits patiëntgegevens en echte geheimen rigoureus uit publieke repositories worden gehouden.

Beste praktijken#

  1. Bouw een CI/CD-pijplijn voordat u de dienst bouwt. Richt vanaf de eerste week geautomatiseerd bouwen, testen en uitrollen in, zodat elke wijziging langs hetzelfde herhaalbare, controleerbare pad naar productie stroomt. De pijplijn is waar uw poorten voor klinische veiligheid, beveiliging en toegankelijkheid als geautomatiseerde controles leven, en geeft u een gedocumenteerd, manipulatiebestendig verslag van precies wat wanneer is uitgerold. In een gereguleerd systeem is dit controlespoor geen overhead — het is bewijs voor uw klinische veiligheidsdossier (zie Onderwerp 1.6 — Klinische veiligheid en risicobeheer).

  2. Rol kleine, frequente, omkeerbare wijzigingen uit. Geef de voorkeur aan veel kleine releases boven af en toe grote, en ontwerp elke wijziging zo dat zij snel kan worden teruggedraaid of uitgeschakeld. Een kleine wijziging die faalt is gemakkelijk te begrijpen en terug te draaien; een kwartaalrelease die faalt is een klinisch incident met honderd verdachten. Technieken als feature flags, canary releases en blue-green deployment laten u verandering geleidelijk blootstellen en onmiddellijk terugtrekken — en maken van uitrol van een gevreesde gebeurtenis een routinematige, drama-arme handeling.

  3. Maak snel, schoon terugdraaien een eersteklas veiligheidsmaatregel. Oefen het terugdraaien zoals u een brandoefening oefent en meet hoe lang het werkelijk duurt. In een klinisch systeem is het meest waardevolle operationele vermogen de mogelijkheid binnen minuten terug te keren naar een bekende goede toestand wanneer een wijziging schade veroorzaakt. Terugdraaien dat nooit is getest is een hoop, geen maatregel; bewijs dat het werkt en blijf het bewijzen.

  4. Behandel infrastructuur en configuratie als code. Definieer omgevingen, netwerken en configuratie declaratief, onder versiebeheer, en richt ze automatisch in. Dit geeft u reproduceerbare omgevingen, door collega’s getoetste wijzigingen en het vermogen na een falen of ramp te herbouwen (zie Onderwerp 3.9 — Bedrijfscontinuïteit en herstel na rampen). Handmatige, met de hand afgestelde “sneeuwvlok”-servers zijn onherhaalbaar, ongedocumenteerd en de gebruikelijke oorzaak van “het werkte in test maar niet in productie”.

  5. Gebruik de DORA-maten voor eerlijke gesprekken, niet om mensen te rangschikken. Volg uitrolfrequentie, doorlooptijd, percentage mislukte wijzigingen en tijd tot herstel als gezondheidssignaal op systeemniveau en kijk hoe ze samen bewegen naar sneller-en-veiliger. Weersta ze om te zetten in ranglijsten van individuen of teams — de eigen auteurs van DORA waarschuwen hiertegen, omdat het manipulatie en verborgen risico aandrijft. Het juiste gebruik is diagnostisch: een stijgend percentage mislukte wijzigingen vertelt u iets over testdekking of batchgrootte dat een bestuur zou willen horen.

  6. Neem “you build it, you run it” aan, gesteund door waarneembaarheid. Geef leveringsteams echt eigenaarschap van hun diensten in productie, inclusief verantwoordelijkheid voor oproepdienst, zodat de mensen die ontwerpkeuzes maken met de operationele gevolgen leven. Ondersteun dit met waarneembaarheid — maten, gestructureerde logs en traces, plus zinvolle alarmering gekoppeld aan gebruikersimpact — zodat teams problemen vinden voordat clinici ze melden. Dit sluit de terugkoppelingslus die engineeringkeuzes in de tijd verbetert en sluit rechtstreeks aan bij servicemanagement (Onderwerp 3.8).

  7. Beveilig de softwaretoeleveringsketen voortdurend. Houd een inventaris van afhankelijkheden bij, scan automatisch op bekende kwetsbaarheden, zet versies vast en verifieer ze en houd een software bill of materials bij zodat u binnen uren “zijn wij getroffen?” kunt beantwoorden na de volgende breed gepubliceerde fout. Beperk wie en wat naar productie mag pushen en bescherm geheimen en inloggegevens rigoureus (zie Onderwerp 4.2 — Identiteits- en toegangsbeheer). In gezondheid en zorg is een gecompromitteerde afhankelijkheid een route naar vertrouwelijke patiëntgegevens, dus hygiëne van de toeleveringsketen is werk voor patiëntveiligheid en informatiebeheer.

  8. Stel engineeringnormen vast en dwing ze af, en beheer technische schuld bewust. Spreek codeernormen, geautomatiseerde linting, codetoetsing en een duidelijke “definition of done” af, zodat kwaliteit wordt ingebouwd in plaats van later wordt ingekeurd. Volg technische schuld expliciet en los haar af als gepland werk, omdat onbeheerde schuld in een klinisch systeem stilletjes de kosten en het risico van elke toekomstige wijziging verhoogt. Normen maken code leesbaar voor de volgende engineer — en voor de auditors, veiligheidsfunctionarissen en open-sourcebeoordelaars die haar mogelijk moeten lezen.

  9. Codeer in het openbaar waar u dat veilig kunt. Volg de verwachting van GDS en NHS om nieuwe broncode standaard open te maken en open normen te hergebruiken, en houd patiëntgegevens en geheimen strikt uit publieke repositories door gedisciplineerd beheer van geheimen. Open code nodigt uit tot toetsing die kwaliteit en beveiliging verbetert, maakt hergebruik mogelijk in een geldarm stelsel en bouwt publiek vertrouwen dat software die publiek geld kost doet wat zij zegt. Waar code werkelijk niet kan worden geopend (bijvoorbeeld sommige beveiligingsgevoelige componenten), documenteer de reden in plaats van uit gewoonte standaard gesloten te zijn.

Vragen om met uw team te bespreken#

  1. Geloven wij werkelijk dat onze klinische systemen vaker wijzigen ze veiliger maakt — en komt ons gedrag overeen met dat geloof? Deze vraag dwingt een team de kloof tussen bewijs en instinct onder ogen te zien. Het onderzoek van DORA is duidelijk dat teams die vaak kleine wijzigingen uitrollen lagere faalpercentages hebben en sneller herstellen, maar veel zorgorganisaties bundelen wijzigingen nog steeds in zeldzame, zwaar gepoorte releases in naam van veiligheid, waardoor elk onbedoeld groter en riskanter wordt. Bespreek waar uw change-advisoryprocessen risico werkelijk verminderen versus waar ze louter vertraging toevoegen die teams naar big-bangreleases duwt. Kijk eerlijk naar uw laatste incidenten: werden ze veroorzaakt door frequente kleine wijzigingen, of door zeldzame grote en niet-gepatchte verwaarlozing? Overweeg of uw vermogen tot terugdraaien echt en geoefend is, omdat de zaak voor frequente verandering geheel rust op het snel kunnen terugdraaien. Een goed antwoord is niet ideologisch; het noemt de specifieke maatregelen — geautomatiseerd testen, canary releases, getest terugdraaien — waarmee u de wijzigingsfrequentie kunt verhogen en tegelijk aan uw verplichtingen voor klinische veiligheid en borging voldoet.

  2. Wie runt onze diensten om 02.00 uur in productie, en wat vertelt dat ons over onze engineeringkeuzes? “You build it, you run it” is gemakkelijk te onderschrijven en moeilijk te leven. Deze vraag brengt aan het licht of de mensen die architectuur- en leveringsbeslissingen nemen de operationele gevolgen werkelijk voelen, of dat pijn wordt afgeschoven op een afzonderlijk operatie- of servicedeskteam dat oorzaken niet kan herstellen. Onderzoek de staat van uw waarneembaarheid: wanneer een gedeeld zorgdossier vertraagt, hoort u dat van dashboards en alarmen, of van een boze clinicus? Bespreek ook de menselijke kosten — oproepdienst moet humaan, gefinancierd en gedeeld zijn, anders wordt het een probleem van burn-out en behoud, wat in een personeelsbeperkte NHS een ernstig risico is (zie Onderwerp 7.2 — Personeelsplanning). Er is een echte afweging tussen volledig teameigenaarschap en de werkelijkheid dat sommige kleinere organisaties en leveranciers werkelijk een gedeeld platform of beheerde dienst nodig hebben om dingen betrouwbaar te runnen. Een sterk antwoord verbindt operationele verantwoordelijkheid terug aan ontwerp: het identificeert waar de terugkoppelingslus tussen bouwen en runnen gebroken is en wat u zou veranderen zodat engineeringkeuzes worden geïnformeerd door de werkelijkheid van live operatie.

  3. Hoeveel van onze code, en van onze engineeringpraktijk, zou kunnen standhouden als zij openbaar werd gemaakt — en wat onthult het antwoord? Het beleid van de overheid en de NHS vraagt teams standaard in het openbaar te coderen, en deze vraag gebruikt die lens als diagnose, ook waar volledige openheid nog niet mogelijk is. Als het vooruitzicht uw repositories te publiceren angst oproept, vraag dan precies waarom: zijn het hard gecodeerde geheimen, ingebedde patiëntgegevens, ontbrekende tests, ongedocumenteerde beslissingen of eenvoudig onbekendheid? Elk daarvan is een echt probleem van engineeringkwaliteit of informatiebeheer dat gesloten zijn slechts verbergt in plaats van oplost. Bespreek de echte beperkingen — sommige beveiligingsgevoelige code moet gesloten blijven en een goed beheer van geheimen is een voorwaarde — tegenover de voordelen van toetsing, hergebruik in een geldarm stelsel en publiek vertrouwen in hoe uitgaven aan gezondheidssoftware worden gebruikt. Overweeg de reputatie- en veiligheidswaarde van externe ogen die een fout vinden vóór een aanvaller. Een goed, eerlijk antwoord onderscheidt code die gesloten is om een verdedigbare, gedocumenteerde reden van code die gesloten is uit gewoonte of schaamte, en verbindt zich ertoe de onderliggende kwaliteits- en hygiëneproblemen hoe dan ook te herstellen.

  4. Als morgenochtend een breed gepubliceerde kwetsbaarheid in een veelgebruikte afhankelijkheid werd aangekondigd, hoe lang zou het duren om “zijn wij getroffen, en waar?” te beantwoorden? Deze vraag toetst of hygiëne van de toeleveringsketen een echt vermogen of een aspiratie is, aan de hand van het soort stelselbrede gebeurtenis — een fout in de stijl van Log4j — dat een abstract risico omzet in een noodgeval op dezelfde dag. Het eerlijke antwoord hangt af van of u een accurate inventaris van afhankelijkheden en een software bill of materials bijhoudt, of dat u dagen zou besteden aan het doorzoeken van repositories en het vragen aan leveranciers die het zelf misschien niet weten. Onderzoek hoeveel van uw software is samengesteld uit componenten van derden en open source, en hoeveel van dat oppervlak u werkelijk monitort met geautomatiseerd scannen versus af en toe handmatige controles. Bespreek ook de dimensie van derden en leveranciers, omdat in gezondheid en zorg veel van het bestand wordt gekocht in plaats van gebouwd, en een gecompromitteerde afhankelijkheid in het product van een leverancier een route is naar vertrouwelijke patiëntgegevens die u niet rechtstreeks beheerst (zie Onderwerp 1.7 — Informatiebeheer, gegevensbescherming en cyberbeveiliging). Overweeg of uw pijplijnen en rechten voor push naar productie strak genoeg zijn dat een vergiftigd component niet ongemerkt kan worden uitgeleverd. Een sterk antwoord noemt een realistische tijd-tot-antwoord gemeten in uren, wijst op de specifieke hulpmiddelen en inventarissen die dat mogelijk maken en is open over de delen van het bestand — vooral door leveranciers geleverd — waar het zicht nu zwak is.

  5. Vertellen onze engineeringmaten ons de waarheid, of zijn ze stilletjes een prestatiedoel geworden dat mensen naar boven toe managen? De DORA-maten zijn alleen nuttig als eerlijk signaal op systeemniveau, en deze vraag onderzoekt of de uwe het contact met organisatorische prikkels hebben overleefd. De wet van Goodhart is onverbiddelijk: zodra uitrolfrequentie of percentage mislukte wijzigingen een getal wordt waarop een team wordt beoordeeld, optimaliseren mensen het getal in plaats van de onderliggende werkelijkheid — uitrol splitsen om de frequentie op te blazen, of incidenten stilletjes herclassificeren zodat ze niet als falen tellen. Bespreek wie deze maten ziet en waarom, en of ze diagnostisch worden gebruikt om investering in testdekking of batchgrootte aan te sporen, of als ranglijst die manipulatie en verborgen risico aandrijft. Overweeg ook de keerzijde: teams die niets meten en op anekdote vertrouwen, zodat een stijgend faalpercentage onzichtbaar is totdat het een klinisch incident wordt. Er is een echte spanning tussen de legitieme behoefte van het bestuur aan borging en het feit dat de nuttigste maten die zijn die teams zich veilig voelen eerlijk te rapporteren. Een goed antwoord beschrijft hoe meting is gekaderd en bestuurd zodat zij ongemakkelijke waarheden vroeg aan het licht brengt in plaats van mensen te belonen voor het verbergen ervan.

  6. Wanneer losten wij voor het laatst bewust technische schuld af, en hoe beslissen wij wat “goed genoeg” engineering in een klinisch systeem betekent? Technische schuld in een klinisch systeem is geen kwestie van netheid; zij verhoogt stilletjes de kosten en het risico van elke toekomstige wijziging, zodat de oplossing die een dag zou moeten duren twee weken duurt en code raakt die niemand durft te herstructureren. Deze vraag dwingt een team onder ogen te zien of schuld wordt beheerd als zichtbaar, gepland werk of louter wordt opgehoopt totdat iets breekt, en of engineeringnormen — codetoetsing, linting, een duidelijke definition of done — werkelijk worden afgedwongen of onder leveringsdruk worden opgeheven. Onderzoek de echte afweging tussen de functie uitleveren die een dienst nu nodig heeft en de interne kwaliteit onderhouden die het systeem later veilig te wijzigen houdt, omdat in gezondheid en zorg beide legitiem zijn en de balans een oordeel is, geen slogan. Bespreek hoe normen code leesbaar maken niet alleen voor de volgende engineer maar voor de auditors, klinischeveiligheidsfunctionarissen en open-sourcebeoordelaars die haar mogelijk moeten lezen. Overweeg of u uw schuld zelfs kunt zien: is zij benoemd en gevolgd, of is het stamkennis over welke modules beangstigend zijn? Een eerlijk antwoord wijst op specifieke, gefinancierde herstelwerkzaamheden die werkelijk hebben plaatsgevonden en op een gedeelde, verdedigbare definitie van de kwaliteitslat die een gereguleerd systeem vraagt.

In de praktijk: een voorbeeld uit gezondheid en zorg#

Een geïntegreerd zorgsysteem (ICS) runt een gedeelde dienst “single point of access” die urgente verwijzingen voor gemeenschapszorg naar het juiste team routeert. In de eerste twee jaar werd de dienst ongeveer eenmaal per kwartaal met de hand uitgerold: een ontwikkelaar volgde laat op vrijdag een wikipagina met handmatige stappen, en elke release was een gespannen gebeurtenis voor iedereen. Toen een routeringsbug opdook — die soms verwijzingen met complexe behoeften naar het verkeerde team stuurde — stond de oplossing zes weken in een wachtrij voor het volgende releasevenster, en beheersten clinici het risico met handmatige omwegen.

De nieuwe engineeringleider kadert dit als een probleem van klinische veiligheid, niet louter van efficiëntie. Het team voert een CI/CD-pijplijn in: elke wijziging is klein, door collega’s getoetst en automatisch gebouwd en getest, met controles op toegankelijkheid en beveiliging en een goedkeuringsstap voor klinische veiligheid gecodeerd als pijplijnpoorten die een controleerbaar verslag voor het gevarenlogboek opleveren. Infrastructuur gaat naar code, zodat test- en productieomgevingen eindelijk overeenkomen. Uitrol gaat van elk kwartaal naar meerdere keren per week, eerst uitgerold naar één locatie als canary, met een getest terugdraaien dat in minder dan vijf minuten terugkeert naar de laatste bekende goede toestand.

Zes maanden later vertellen de DORA-maten het verhaal aan het bestuur in eenvoudige termen: de doorlooptijd voor een oplossing is gedaald van zes weken naar minder dan een dag, de uitrolfrequentie is tienvoudig gestegen en het percentage mislukte wijzigingen is gedaald omdat wijzigingen nu klein en waarneembaar zijn. Wanneer een subtiele routeringsfout terugkeert, markeren waarneembaarheidsdashboards de afwijking binnen minuten, draait het team terug vóór enige verwijzing verkeerd is gerouteerd, levert de volgende ochtend een oplossing en legt een schuldloze evaluatie na het incident vast. Het team publiceert ook de niet-gevoelige routeringsregelmotor als opensource onder de NHS Service Standard, en een naburig ICS hergebruikt haar. Het systeem vaker wijzigen heeft het aantoonbaar veiliger gemaakt.

Sectorperspectieven#

Startup#

Een startup in digitale gezondheid kan moderne engineeringpraktijk vanaf dag één overnemen, zonder legacyoperatieteam om mee te onderhandelen — trunk-based development, CI/CD en infrastructure as code zijn in een klein greenfieldteam vrijwel gratis standaardinstellingen, en dit is een echt voordeel. Het risico is dat “snel bewegen” stilletjes de disciplines laat vallen die gezondheid vraagt: geautomatiseerde tests, getest terugdraaien, beheer van geheimen en het scannen van afhankelijkheden voelen als wrijving wanneer nog geen toezichthouder meekijkt. De oprichters moeten erkennen dat verplichtingen voor klinische veiligheid en toeleveringsketen gelden ongeacht de bedrijfsgrootte, en dat één gelekte patiëntendataset of onbeheerde afhankelijkheid het bedrijf kan beëindigen. Het pragmatische pad is te leunen op beheerde cloudplatforms en een kleine, eigenzinnige “verharde weg” zodat een klein team veiligheid-als-standaard krijgt zonder een platformgroep te bouwen die het zich nog niet kan veroorloven.

Klein bedrijf#

Een gevestigde kleine aanbieder of leverancier — een huisartsenpraktijk, een gemeenschapsapotheek, een verzorgingshuis, een kliniek met één vestiging of een kleine leverancier van gezondheidstechnologie voorbij het stadium zonder omzet — heeft meestal echte patiënten en echte operaties maar geen toegewijde engineering- of IT-functie om pijplijnen, waarneembaarheid of oproepdienst te runnen. Voor de meeste van zulke organisaties is de praktische vorm van engineeringexcellentie het goed inkopen in plaats van bouwen: kies leveranciers en beheerde platforms wier eigen DevOps-discipline u kunt inspecteren, en maak geautomatiseerde updates, geteste back-ups en het patchen van afhankelijkheden contractuele verwachtingen in plaats van hoop. Waar een kleine leverancier wel software schrijft, levert één goed geconfigureerde CI/CD-pijplijn op een beheerd cloudplatform, met geautomatiseerd scannen van afhankelijkheden en geheimen buiten de repository, het grootste deel van het veiligheidsvoordeel tegen kosten die een slank team kan volhouden. De valkuil is aannemen dat kleine omvang de lat voor klinische veiligheid, beveiliging en informatiebeheer verlaagt — dat doet het niet, en een niet-gepatchte afhankelijkheid of een met de hand uitgerolde wijziging die misgaat schaadt patiënten in een praktijk van twee clinici even zeker als in een nationaal orgaan. Het realistische doel is veiligheid-als-standaard geërfd van goede platforms en goede leveranciers, met de beperkte aandacht van de praktijk besteed aan het verifiëren dat die standaardinstellingen daadwerkelijk aanstaan.

Grote onderneming#

Een groot NHS-ziekenhuis of grote leverancier van gezondheidstechnologie heeft de middelen om platform-engineering, waarneembaarheid en “you build it, you run it” goed te doen, maar wordt tegengehouden door legacysystemen, gesiloede ontwikkel- en operatieteams en change-advisoryprocessen gebouwd voor een tragere tijd. Het kenmerkende falen is een zwaar wijzigingsbestuur dat, in een poging risico te beheersen, grote gebundelde releases afdwingt die gevaarlijker zijn dan de frequente kleine waar het bang voor is. De kans is te investeren in een intern ontwikkelaarsplatform dat naleving, beveiliging en poorten voor klinische veiligheid inbouwt in een verharde weg, zodat tientallen teams goede praktijk erven in plaats van elk haar uit te onderhandelen. Schaal is hier het tweesnijdende zwaard: de schadestraal van een slechte uitrol is enorm, wat precies de reden is dat automatisering, canary releases en getest terugdraaien essentieel zijn en niet optioneel.

Overheid#

Een nationaal orgaan zoals NHS England of een gedecentraliseerd gezondheidsdepartement stelt de normen vast die anderen volgen — de Service Standards van de NHS en GDS, de uitgavenbeheersing, de verwachting om in het openbaar te coderen — en is aan het Parlement en het publiek verantwoording verschuldigd voor hoe software wordt gebouwd en gerund. Zijn engineeringkeuzes rimpelen door het stelsel: een goed gerund nationaal platform, gepubliceerde opensourcecomponenten en duidelijke richtlijnen voor de toeleveringsketen verhogen de vloer voor elk ziekenhuis en elke leverancier. De beperkingen zijn echt — meerjarige financiering, inkoopregels en de enorme schaal en gevoeligheid van nationale data betekenen dat het uitrolritme gematigder is dan in een startup. De lens van de overheid moet voorbeeldige transparantie en hergebruik afwegen tegen de beveiliging van nationaal kritieke systemen, bewust beslissen wat wordt geopend en wat wordt beschermd, en de redenering hoe dan ook documenteren.

Veelvoorkomende faalpatronen#

  • Verlamming door “verandering is risico”. Zelden uitrollen om zich veilig te voelen, wat grote, gevaarlijke, slecht begrepen releases en niet-gepatchte verwaarlozing oplevert. Tegengif: kleine, frequente, omkeerbare wijzigingen met getest terugdraaien.
  • De muur tussen dev en ops. Ontwikkelaars “gooien code over de muur” naar een afzonderlijk operatieteam dat oorzaken niet kan herstellen; niemand bezit de hele lus. Tegengif: gedeeld eigenaarschap en “you build it, you run it”, humaan ondersteund.
  • Handmatige, sneeuwvlokuitrol. Releases hangen af van één persoon en een wikipagina; omgevingen driften en “werkt in test, breekt in productie” is routine. Tegengif: CI/CD plus infrastructure as code.
  • Maten als stok. DORA-getallen gebruikt om teams te rangschikken, wat manipulatie en verborgen risico aandrijft. Tegengif: gebruik ze als diagnose op systeemniveau, conform de eigen richtlijn van DORA.
  • Alarmblinde operaties. Geen waarneembaarheid, zodat patiënten en clinici als eersten falen ontdekken. Tegengif: maten, logs, traces en alarmering op gebruikersimpact.
  • Verwaarloosde toeleveringsketen. Niet-gepatchte afhankelijkheden en ongescande componenten worden het lek. Tegengif: voortdurend scannen, een software bill of materials en beschermde pijplijnen.
  • Onbedoelde blootstelling. Slordig in het openbaar coderen, waarbij geheimen of patiëntgegevens lekken. Tegengif: rigoureus beheer van geheimen en scannen vóór publicatie, geen terugtocht naar standaard gesloten.

Volwassenheidsmodel#

Dimensie Initiëren Ontwikkelen Standaardiseren Besturen Orkestreren
Bouwen en releasen Handmatige, zeldzame uitrol door één persoon Gedeeltelijke automatisering; releases nog gebundeld en gevreesd CI/CD-pijplijn met geautomatiseerde tests en poorten Uitrolfrequentie en doorlooptijd gevolgd tegen doelen; pijplijnpoorten geborgd en geaudit Continue levering van kleine wijzigingen; uitrol is routine
Wijziging en terugdraaien Geen plan voor terugdraaien; falen blijft hangen Terugdraaien bestaat op papier, zelden getest Getest terugdraaien; releases via canary/feature flags Tijd voor terugdraaien gemeten en gerapporteerd; percentage mislukte wijzigingen bestuurd tegen drempels Snel terugdraaien als bewezen, geoefende maatregel voor klinische veiligheid
Infrastructuur Met de hand geconfigureerde sneeuwvlokservers Enig scripten; omgevingen driften Infrastructure as code, onder versiebeheer Detectie van drift en compliance-as-code afgedwongen; gelijkheid van omgevingen actief gemonitord Volledig reproduceerbaar, zelfbediening, herstelbaar na rampen
Runnen en waarnemen Afzonderlijk operatieteam; falen gevonden door gebruikers Basismonitoring; reactief blussen Team runt zijn dienst; maten, logs, traces, alarmering SLO’s en foutenbudgetten gevolgd; alarmering afgestemd op gebruikersimpact en getoetst tegen doelen “You build it, you run it” met SLO’s en schuldloos leren
Toeleveringsketen en openheid Afhankelijkheden onbeheerd; alle code gesloten Af en toe handmatig scannen; openheid ad hoc Geautomatiseerd scannen, SBOM; open waar veilig Blootstelling aan kwetsbaarheden gemeten en hersteld volgens SLA; beheersing van de toeleveringsketen geborgd Voortdurende borging van de toeleveringsketen; standaard open met hergebruik

Checklist#

  • Een CI/CD-pijplijn bouwt, test en rolt elke wijziging uit via één controleerbaar pad, met gecodeerde poorten voor veiligheid/beveiliging/toegankelijkheid.
  • Wijzigingen zijn klein, frequent en onafhankelijk omkeerbaar (feature flags, canary- of blue-greenreleases).
  • Terugdraaien naar een bekende goede toestand wordt regelmatig getest en voltooid binnen een gedocumenteerde, korte tijd.
  • Infrastructuur en configuratie zijn gedefinieerd als code onder versiebeheer; test- en productieomgevingen komen overeen.
  • De vier DORA-maten worden gevolgd als signaal op systeemniveau, niet gebruikt om individuen of teams te rangschikken.
  • Leveringsteams bezitten hun diensten in productie, met humane, gefinancierde oproepdienst en zinvolle waarneembaarheid (maten, logs, traces, alarmering).
  • Afhankelijkheden zijn geïnventariseerd en worden automatisch gescand; een software bill of materials bestaat en geheimen zijn beschermd.
  • Engineeringnormen, codetoetsing en een definition of done zijn afgesproken; technische schuld wordt gevolgd en afgelost als gepland werk.
  • Nieuwe broncode is standaard open waar veilig, met rigoureuze controles dat geen patiëntgegevens of geheimen worden blootgelegd.
  • Engineeringpraktijk is gedocumenteerd zodat een nieuwe engineer, auditor of veiligheidsfunctionaris kan begrijpen wat er draait en waarom (zie Onderwerp 10.3).

Belangrijkste bronnen#

  • Nicole Forsgren, Jez Humble & Gene Kim, Accelerate: The Science of Lean Software and Development and DevOps — het DORA-onderzoek en de vier sleutelmaten.
  • DORA (DevOps Research and Assessment) — jaarlijkse State of DevOps-rapporten en capaciteitencatalogus — dora.dev.
  • Jez Humble & David Farley, Continuous Delivery — de uitrolpijplijn en releaseautomatisering.
  • Betsy Beyer e.a. (red.), Site Reliability Engineering — het SRE-boek van Google over het runnen van productiesystemen.
  • NHS England — NHS Service Standard en NHS Digital Service Manual (inclusief in het openbaar coderen en open normen).
  • GOV.UK Service Manual / Government Service Standard (GDS) — “make new source code open”, continue levering en het runnen van een dienst.
  • National Cyber Security Centre (NCSC) — richtlijnen over veilige softwareontwikkeling en beveiliging van de toeleveringsketen.
  • NHS England — normen voor klinisch risicobeheer DCB0129 en DCB0160 (engineeringwijziging als onderdeel van het klinische veiligheidsdossier).

Referenties#

  1. DevOps — Wikipedia — https://en.wikipedia.org/wiki/DevOps
  2. CI/CD — Wikipedia — https://en.wikipedia.org/wiki/CI/CD
  3. Continuous integration — Wikipedia — https://en.wikipedia.org/wiki/Continuous_integration
  4. Continuous delivery — Wikipedia — https://en.wikipedia.org/wiki/Continuous_delivery
  5. Version control — Wikipedia — https://en.wikipedia.org/wiki/Version_control
  6. Infrastructure as code — Wikipedia — https://en.wikipedia.org/wiki/Infrastructure_as_code
  7. Platform engineering — Wikipedia — https://en.wikipedia.org/wiki/Platform_engineering
  8. DevOps Research and Assessment (DORA) — Wikipedia — https://en.wikipedia.org/wiki/DevOps_Research_and_Assessment
  9. Site reliability engineering — Wikipedia — https://en.wikipedia.org/wiki/Site_reliability_engineering
  10. Observability (software) — Wikipedia — https://en.wikipedia.org/wiki/Observability_(software)
  11. Supply chain attack — Wikipedia — https://en.wikipedia.org/wiki/Supply_chain_attack
  12. Open-source software — Wikipedia — https://en.wikipedia.org/wiki/Open-source_software
  13. Accelerate: The Science of Lean Software and DevOps — Nicole Forsgren, Jez Humble & Gene Kim (IT Revolution) — https://itrevolution.com/product/accelerate/
  14. DORA — DevOps Research and Assessment — Google Cloud / DORA — https://dora.dev/
  15. Continuous Delivery — Jez Humble & David Farley — https://continuousdelivery.com/
  16. Site Reliability Engineering — Google (O'Reilly) — https://sre.google/books/
  17. NHS Service Standard — NHS England — https://service-manual.nhs.uk/standards-and-technology/service-standard-points
  18. Making source code open and reusable — Government Digital Service, GOV.UK Service Manual — https://www.gov.uk/service-manual/technology/making-source-code-open-and-reusable
  19. Secure software development and supply chain security — National Cyber Security Centre (NCSC) — https://www.ncsc.gov.uk/collection/developers-collection
  20. Clinical risk management standards DCB0129 and DCB0160 — NHS England — https://digital.nhs.uk/services/clinical-safety

Bewerk deze pagina op GitHub — het boek is de bron van waarheid; deze website geeft het weer.