Diagnose, Ontwerp en Verandering

Niemand wil een onbekende reiziger op schoot

High Performance computing is niet nieuw. Net als problemen die bedrijven ervaren bij inzet van kritische bedrijfsinformatiesystemen rond de aspecten betrouwbaarheid, snelheid, foutbestendigheid en juistheid. Nog altijd blijkt dat IT systemen nét niet zo robuust zijn als verkocht of gemaakt. Niet zelden zijn helaas gebruikers (de échte klanten) uiteindelijk de dupe van falende IT systemen en worden orders verkeerd afgehandeld, zijn websites niet beschikbaar en volgt een ware lijdensweg om een aantoonbare administratieve fout bij een verkeerde factuur ongedaan te krijgen. Welkom in 2014!

sotpHigh Performance Computing (HPC) is iets anders dan ontwerp, realisatie en beheer van High Performance Bedrijfsinformatiesystemen. Onder high performance computing wordt vaak verstaan: zoveel mogelijk computerrekencapaciteit om een berekening uit te voeren. Uiteindelijk zijn we zo van snelle processoren in 1995 tot ultra snelle processoren in iedere mobiel in 2014 terecht gekomen. Kan een snelle processor altijd meer? Ja, in termen van berekeningen waar computers goed in zijn. Ofwel: berekeningen met bits en bytes uitvoeren. Waar echter vaak behoefte aan is, is performance vanuit gebruiker of klant geredeneerd. Een gebruiker wil bijvoorbeeld snel inzicht in beschikbare hotelkamers in een stad, zijn vergunningaanvraag tijdig en correct behandeld zien door de gemeente of eenvoudig bezwaar kunnen indienen tegen een snelheidsovertreding.

 

High Performance bedrijfsinformatiesystemen kennen de volgende kenmerken:

  • Foutbestendig
  • Juist verwerken van gegevens (foutloos!)
  • Eenvoudig aanpasbaar (om enigszins flexibel om te gaan met veranderende eisen)
  • Geen dataverlies. Nooit!
  • Secure. Ofwel transparant welke verschillende beveiligingsmaatregelen zijn genomen om te voorkomen dat vertrouwelijke data in verkeerde handen kan komen. En afdoende maatregelen waardoor data nooit zomaar kan wijzigen.
  • Veel verschillende databronnen nodig voor effectieve werking van het systeem
  • Veel gebruikers en veel belanghebbenden met soms tegengestelde belangen.
  • Een systeem dat in een complexe turbulente omgeving stabiel moet blijven werken.
  • Exact gebruik in de tijd lastig te voorspellen.

Ofwel samengevat: een bedrijfsinformatiesysteem dat zo snel en betrouwbaar mogelijk een (complexe) vraag afhandelt. Complexe vragen zijn de leukste puzzels om op te lossen. Ook voor computers, maar nog meer voor échte IT architecten. Een complexe vraag is bijvoorbeeld: Wat is het aantal lege treinstoelen beschikbaar op de trein van Amsterdam naar Berlijn op dag x? Het beantwoorden van zo’n vraag betekent al snel dat blijkt dat triviale IT eisen als:

  • Via internet
  • Binnen 3 seconden
  • Betrouwbaar
  • Mooie look & feel
  • Meerdere talen

ook door het high performance bedrijfsinformatiesysteem moet worden ingevuld. Na doorvragen en analyse blijkt dat ook rekening gehouden moet worden met:

  • Mogelijkheid tot direct boeken van lege stoel
  • Meerdere mensen moeten deze vraag tegelijk kunnen stellen.
  • Niemand wil een onbekende reiziger op schoot (ofwel: Eenmaal geboekt, betekent dat andere deze stoel niet meer kunnen boeken).
  • Boeken gaat via een reservering en een reservering is pas mogelijk als er een borg (geld) afgeschreven kan worden.
  • Integratie met complete reis (hotel, vliegreis, verzekeringen) is wel handig.
  • Bij een storing moet voor iedereen (gebruiker én systeembeheerders) 100% duidelijk zijn wat de status van een boeking of reservering is.
  • Privacy en beveiligingsaspecten van iedere gebruiker én transactie. Maar vaak wel graag de mogelijkheid om slimme marketingtools op historische data in te kunnen zetten.

peak

Naast de wet van Moore is er nog één zekerheid die al heel lang geldig is in de IT: Techniek gaat kapot. Vroeg of laat doen computers het niet en laten communicatienetwerken het afweten. Het internet gaat niet heel snel stuk, maar stukjes verbindingen nodig voor end-to-end transactie afhandeling blijken na analyse vaak best kwetsbaar. Net als opslag en backup media.

Net als de zon die niet altijd schijnt of een auto die niet 10 jaar zonder onderhoud of tanken kan rijden is het ook nu nog onmogelijk dat een IT systeem nooit fouten geeft. Simpelweg omdat informatie systemen gemaakt zijn van hardware componenten waarbij op de rand van elementaire elektronische (ofwel natuurkundige) principes zeer complexe ontwerpen zijn gemaakt. Veelal om de ultra snelle berekeningen op elementair bit niveau nog sneller te kunnen doen. Veel hardware en software fouten op laag niveau blijven gelukkig verborgen voor de software componenten van een bedrijfsinformatiesystemen. Maar bij het ontwerpen van bedrijfsinformatiesystemen waarbij goed of fout het verschil kan beteken tussen: Boeking gelukt, geld overgeschreven, treinreis gereserveerd, treinwissel omgezet of juiste medicijn tijdig toegediend is het wel zo fijn om inzichtelijk te hebben hoe een systeem omgaat met fouten en toch kan ook snel kan performen. Want lang wachten willen we ook niet. En absurd hoge bedragen voor IT oplossingen zijn toch ook niet meer van deze tijd. Toch?

cloud

Simpele oplossingen voor complexe problemen bestaan helaas niet. Gelukkig weten we na meer dan 40 jaar ontwerpen en gebruiken van IT systemen hoe het niet moet. Bij het verbeteren en ontwikkelen van high performance bedrijfsinformatie systemen hanteren we bijvoorbeeld de volgende lessons learned:

  • Vertrouw niet blind op de ideale oplossing op papier van een leverancier. Zeker wanneer onvoldoende transparant is waar op de wereld deze oplossing voor exact hetzelfde probleem ook zo wordt ingezet.
  • Infrastructuur is niet eenvoudig schaalbaar, maar kent vaak harde grenzen. Ook bij ‘Cloud’ oplossingen.
  • De ideale oplossing voor een specifiek probleem bestaat niet.
  • Dé oplossing voor een high performance bedrijfsinformatiesysteem is nooit alleen een technische oplossingen. De menselijke factor en organisatorische aspecten mogen bij het architectuur- en ontwerptraject niet genegeerd worden.

Een high performance bedrijfsinformatiesysteem betekent dat is nagedacht over:

  • Wat is de context voor snelheid (performance) en voor wie?
  • Hoe wordt met fouten omgegaan?
  • Hoe is het systeem robuust gemaakt voor bedieningsfouten (Ofwel: ook IT systeembeheerders maken wel eens een typefout.)
  • Hoe is met de natuurlijke onbalans tussen (systeem)snelheid, betrouwbaarheid herstelbaarheid omgegaan? Kan de actuele status van een systeem snel hersteld worden?
  • Zijn software wijzigingen eenvoudig mogelijk?
  • Is het systeem eenvoudig aan te passen bij wijzigingen in het proces waarvoor het systeem wordt ingezet?
  • Is het systeemontwerp eenvoudig te doorgronden?
  • Kan het bedrijfsinformatiesysteem gebruik maken van (open) cloud diensten als storage of CPU kracht (compute power) omdat ontkoppeling technisch goed is doorgevoerd?
  • Hersteld het bedrijfsinformatiesysteem zichzelf na een fout?
  • Kan het systeem omgaan met een onvoorspelbare piekbelasting van 10 tot 10000x de normale belasting?
  • Welke open standaarden en ontwerpprincipes worden gebruikt?
  • Slim gebruik en hergebruik van open oplossingen in onderdelen van het te realiseren systeem. Waarom dus zelf nog oplossing bedenken voor triviale problemen die al heel vaak zijn opgelost? Denk voor IT onderdelen bijvoorbeeld aan high performance webservers, redundant storage oplossingen (HAST) of intelligente middleware lagen.

Anno 2014 is het zinloos om zelf het perfecte high performance bedrijfsinformatiesysteem compleet zelf te ontwerpen en te realiseren. De faalkans is enorm en de kans dat slim gebruik wordt gemaakt van bestaande optimalisaties voor deelproblemen is dan klein. Vanuit een systeembenadering is het echter per definitie noodzakelijk om alle facetten in beschouwing te nemen. Te vaak wordt helaas alleen gekeken naar één enkel aspect. Waarbij vaak veel tijd wordt gespendeerd aan IT oplossingen, zonder te kijken naar het proces waarin de oplossing moet werken. Natuurlijk is inzoomen in het ontwerpvraagstuk via subsystemen of aspectsystemen uiteindelijk noodzakelijk, maar een goede analyse en verdeling in subsystemen, aspecten levert uiteindelijk blijvende winst en voorsprong op. In kwaliteit, maar ook in tijd en geld!

No-more-failure