Een goede fundering dient meestal als ondergrond en basis voor het bouwen van een huis. De uitgangspunten daarbij zijn een stabiele ondergrond, en een constructie die de tand des tijds en (onvoorziene) omstandigheden kan doorstaan.

Als het huis eenmaal op de fundering gebouwd is, is het mogelijk deze uit te breiden. Denk bijvoorbeeld aan het plaatsen van een dakkapel of het eventueel verplaatsen van een muur.

Het is dan fijn als het huis (lees: de architectuur) flexibel genoeg is om deze wijzigingen door te voeren. Bij bepaalde wijzingen, zoals het realiseren van een kelder, is het een uitdaging om dit bij een bestaand huis te verwezenlijken. En is dan ook niet bij alle bestaande huizen te realiseren.

Andere wijzigingen, zoals het vervangen van houten grondpalen voor betonnen palen, is nagenoeg onmogelijk.

Wat zou het mooi zijn als je op een gemakkelijke wijze, uitdagende wijzigingen zou kunnen realiseren – zoals heipalen vervangen, fundering verbeteren of je complete huis zou kunnen aanpassen – zonder dat je huis hiervoor afgebroken zou hoeven worden.

Maar wat voor veranderingen je ook doorvoert, de fundering blijft meestal “de basis” waarop je bouwt hetzelfde, dus ongewijzigd. Waarom heb ik in het in deze blog over het bouwen van huizen en funderingen? Zonder het misschien te beseffen is er wel degelijk een overeenkomst met software oplossingen.

Zo bouwden we in eerste instantie onze software applicaties op fysieke machines (servers). Gewoon computers die je kunt aanraken en waarvan je de hardware kan vervangen. Met als groot voordeel dat alles in eigen beheer is, maar… dit kan tegelijkertijd ook een uitdaging zijn.

Denk bijvoorbeeld aan het managen van infrastructuur tot de verschillende applicaties die op de verschillende servers draaien. En wanneer je werkt met fysieke servers, dan heb je ook te maken met server uitval. Dit moet dan allemaal zelf opgelost worden, inclusief het terugzetten van backup’s, en data en communicatie richting de partijen die van die specifieke server afhankelijk zijn. Daarnaast hebben servers een beperkte ‘houdbaarheidsdatum’ en moeten deze na een bepaalde looptijd vervangen worden. Operating system (OS) updates tot aan applicatie(s) updates moeten dan allemaal verzorgd worden.

Bij virtuele machines wordt dit al gemakkelijker doordat de hardware wordt ‘gevirtualiseerd’.

Hierdoor heb je als voordeel dat meerdere machines – onafhankelijk van de hardware – kunnen draaien op één fysieke server.

De volgende stap gaat richting de cloud. In dat geval worden virtuele machines in de cloud aangemaakt en beheerd door de cloud provider, en is eigen hardware niet langer nodig.
In dat geval is er nog sprake van verschillende ’cloud modellen’, namelijk IaaS, PaaS en SaaS.

  • Bij IaaS “Infrastructure as a Service” wordt de infrastructuur voor u beheerd. Hieronder vallen netwerken, harde schijven en servers.
  • Bij PaaS “Platform as a Service” wordt bovenop het netwerk, harde schijven en servers ook het middleware en het OS beheerd. Het beheer van data/database en applicaties zijn dan nog het “enige” dat je zelf moet beheren.
  • SaaS “Software as a Service” heeft als voordeel dat er helemaal niets meer beheerd hoeft te worden. U kunt uw software – zoals de naam al verklapt – als service gebruiken.

Een voorbeeld hiervan is Office 365. Hierbij kunt u gebruik maken van de software als service.

De volgende stap en laag is containers, containers zijn een extra abstractie laag bovenop de hardware virtualisatie ook wel OS virtualisatie genaamd.
Als je dit vergelijkt met de fundering van een huis, dan zou dit je huis steviger en flexibeler maken.

Uiteindelijk komen we uit bij de laatste variant, namelijk Serverless.
Bij Serverless wordt alleen de applicatie beheerd, en is er de mogelijkheid om op een stabiele, sterke fundering (beheerde omgeving) de applicatie op te bouwen. En is schaalbaar op basis van de workload.

De fundering “de basis” waarop we software bouwen is veranderd van fysieke machine naar virtuele machines en vervolgens van Cloud Compute naar Containers en uiteindelijk naar Serverless.

Als je deze stappen vergelijkt met het eerder genoemde voorbeeld ‘van het bouwen van een huis’ is dit in feite het gebruiken van een nieuwe fundering wanneer je je huis gaat bouwen.
Dit is nog niet het aanpassen van de fundering achteraf. Je begint hier opnieuw en bouwt er iets op.

Bij deze laatste variant “Serverless” is dit niet zo. Hier worden de server (“fundering”) die nodig zijn dynamisch en automatisch gemanaged – ook wanneer er servers uitvallen. Hierbij maakt het niet meer uit wat voor netwerk, harde schijven, servers, middleware en OS achter de applicatie(s) zitten.

De Serverless variant biedt de fundering met een stabiele ondergrond, die kan meegaan met de tijd en omstandigheden en biedt de nodige flexibiliteit. De complete fundering “zowel servers als back-end software” kan namelijk vervangen worden zonder dat je er erg in hebt.

Is dat niet mooi?