De Cloud verandert het speelveld

Softwareontwikkeling gaat in de basis over het vertalen van wensen in software; een creatieve vorm van probleemoplossing waarbij een gestructureerde aanpak en intelligentie helpt, trouwens ook geduld en doorzettingsvermogen voor het geval dat het niet meteen lukt.

Hier verandert helemaal niets aan. Wat wel steeds verandert is hoe we onze oplossingen implementeren.

Ons vak is hierbij bekend (misschien wel berucht) om de snelheid waarmee nieuwe technologieën elkaar afwisselen. Ook ideeën en inzichten over hoe we onze oplossingen het beste kunnen ontwerpen —nog los van de technologische ontwikkelingen— blijken relatief snel te veranderen. Een treffende uitspraak van Neal Ford in deze, is dat “yesterday’s best practice becomes tomorrow’s anti-pattern”. Als je lang genoeg meeloopt dan herken je dit ongetwijfeld. Het is dan ook zaak om nieuwe ontwikkelingen met een grondige, kritische blik te bezien, maar de veranderingen in ons vakgebied zijn niet zonder doel. Ze zijn het gevolg van de zoektocht naar verbeteringen om competitief te blijven in termen van productiviteit, veranderbaarheid (agility) en innovatiekracht. Ofwel, de snelheid waarmee we de wensen vertaald in software beschikbaar kunnen maken voor gebruikers.

Er verandert zo veel en in een relatief hoog tempo, omdat er altijd een behoefte blijft om nog sneller te gaan. Als het even kan sneller dan de competitie. Het lijkt daarbij in zekere mate op topsport en doet me denken aan de uitspraak die Greg LeMond (oud-wielrenner) ooit deed over de verbeteringen in zijn sport: “It doesn’t get any easier, you just go faster”.

De verandering in de manier waarop we oplossingen realiseren is een constante. Hier zal je als IT’er mee om moeten gaan. Bijblijven was jaren het devies, maar soms maakt de nieuwe technologie dat het speelveld wezenlijk verandert. In dat geval is alleen bijblijven niet genoeg.

De trend om steeds meer softwareontwikkeling “in de Cloud” te doen is zo’n verandering.

De Cloud is in essentie de virtualisatie van alles. Hierbij hebben alle facetten van een traditionele IT-oplossing ‘virtuele’ tegenhangers, denk aan opslag (databases, bestanden, messaging), netwerkinfrastructuur (netwerken, load-balancers, firewalls, etc.) en natuurlijk de runtime omgeving voor specifieke logica, i.e. software.

Schaalbaar en programmeerbaar 

Een veelgenoemd voordeel is de schaalbaarheid (scalability) die hierdoor ontstaat. Moderne Cloud platformen geven ons ‘de illusie van oneindige resources’ en stellen deze in zeer korte tijd aan ons ter beschikking. Vanzelfsprekend is er wel een limiet, maar niet één waar wíj tegenaan gaan lopen. Van alles waar we meer van willen (machines, functies, disk, databases, netwerk capaciteit, etc., etc.), krijgen we ook meer.

Een ander belangrijk voordeel van Cloud, een voordeel dat voor veel organisaties belangrijker is dan de schaalbaarheid, is de ontstane programmeerbaarheid (programmability) van het platform. Om alle virtuele resources in zeer korte tijd beschikbaar te kunnen stellen is een extreme mate van automatisering nodig. Deze automatisering stellen de Cloud platformen middels APIs beschikbaar aan de gebruikers van het platform. Daarmee kunnen alle virtuele concepten, veelal gesimplificeerd, via APIs worden ingeregeld.

Een modern Cloud platform is schaalbaar en programmeerbaar.

Bijvoorbeeld, het concept van routers, netwerken en load-balancers bestaat wel, maar of dit fysieke apparaten zijn die met kabels aan elkaar zijn verbonden is niet meer relevant. Hierdoor is het inrichten van een netwerk met private en publieke subnetwerken niet langer enkel weggelegd voor netwerkspecialisten.

Daar komt bij dat meer en meer zgn. ‘managed services’ en ‘serverless’ bouwblokken beschikbaar komen, waarbij het operationele beheer voor een steeds groter deel door het Cloud platform zelf wordt gedaan. Hierdoor neemt de beheerlast (operations) aan gebruikerszijde van de Cloud af.

Een veranderd speelveld

Nu verwacht ik niet dat er in de toekomst geen plaats zal zijn voor dergelijke specialismen. De Cloud leveranciers zullen steeds meer locaties openen en steeds prominentere werkgevers worden. Hier zijn specialisten voor nodig die het platform ontwikkelen en operationeel houden. En hierbij oplossingen kunnen bedenken die werken op almaar grotere schaal, maar zoals alles dat plaats heeft op grote schaal – dat kan netto efficiënter, mogelijk met minder mensen.

Terug naar de gebruikerszijde van het Cloud platform, dan zijn we weer bij de basis van softwareontwikkeling, het primaire doel, i.e. het vertalen van wensen van klanten in software. Hier ontstaat behoefte aan ‘de moderne Cloud Engineer’. Dit is iemand die kan programmeren, zowel ‘op’ als ‘tegen’ het platform. Iemand die kennis heeft van een of meer Cloud platformen en op basis van de daar aanwezige virtuele bouwblokken een oplossing maakt conform de wensen.

Van de moderne Cloud engineer wordt brede kennis verwacht. De werelden van development en operations groeien naar elkaar toe. Dit vergt typisch meer operations-, infra- en storage kennis dan hij/zij als software engineer gewend was. Voor IT’ers die meer vanuit de infra en operations kant komen is mijn advies: leer programmeren.

Er gaat dus het nodige veranderen, maar aangezien nagenoeg elk bedrijf momenteel met Cloud bezig is en hierbij naarstig op zoek is naar IT’ers die weten hoe je deze technologie in kan zetten ontstaat grote schaarste. Grijp deze kans aan om jezelf klaar te stomen voor het nieuwe speelveld.