Het is niet voor niets dat allerlei ontwikkelplatformen beschikbaar zijn gekomen waarmee ontwikkelaars applicaties voor de cloud kunnen bouwen. Denk aan Amazon, de Google App Engine of Azure van Microsoft. Maar die ontwikkeling van cloud-ontwikkelplatformen betekent ook dat ontwikkelaars zich bepaalde nieuwe principes eigen moeten maken.

“In de perfecte wereld hoeven ontwikkelaars niet na te denken over waar hun applicatie draait, of dat nou is in een eigen datacenter, op een lokaal systeem, in het datacenter van een partner, in een publieke cloud of private cloud”, zegt Soma Somasegar, vice-president van de developer-divisie van Microsoft, tegen Webwereld. “Dan kunnen ze zich toeleggen op een paar architecturele kernprincipes, en kunnen ze los gaan.”

Maar een perfecte wereld is het nog niet. Daarom noemt Somasegar een aantal basisprincipes die ontwikkelaars volgens hem in het oog moeten houden, als ze gaan ontwikkelen voor een cloud-infrastructuur. Het maakt daarbij niet uit welk platform ze gebruiken: de volgende vier zaken zijn voorbeelden van intrinsieke verschillen tussen het ontwikkelen van een 'klassieke' applicatie, en het ontwikkelen van een op de cloud gebaseerde applicatie.

Multitenancy

Het maakt voor een applicatie veel uit of hij voor gebruikers binnen een gesloten omgeving moet draaien, of juist meerdere gebruikers onafhankelijk van elkaar moet bedienen. “Om te beginnen moet je de applicatie zo ontwerpen dat die tegelijk kan draaien binnen verschillende hardware-omgevingen”, legt Somasegar uit.

Waar een applicatie bij een lokaal systeem te maken heeft met slechts één configuratie, moet een cloudapplicatie het zonder die informatie doen omdat meerdere instances bediend dienen te worden. ”Het voordeel van het on-premise draaien van een applicatie is dat je precies weet wat de configuratie is. In de cloud is dat anders, daar is het een dynamisch geheel. Het kan constant veranderen.” Om die reden, zegt Somsegar, is multitenancy een steeds belangrijker wordend principe bij het ontwikkelen van applicaties.

Gedistribueerd

In programmeerland wordt het al als uiterst lastig ervaren om voor hetzelfde programma meerdere threads te gebruiken. Met cloud-infrastructuren wordt dat naar een ander niveau getild. “Je moet je applicatie opdelen in blokken die je kunt verdelen over verschillende machines”, zegt Somasegar. Meerdere processen kunnen dan tegelijk worden uitgevoerd, voor meerdere gebruikers. “Ik noem dit 'distributed computing', maar je kunt het ook 'parallel computing' noemen”, zegt Somasegar.

Beheer is compleet anders

Het is voor beheerders noodzakelijk dat ontwikkelaars rekening houden met de beperkingen die een applicatie-infrastructuur in de cloud op beheergebied met zich mee brengt. “Bij on-premise heeft de applicatiebeheerder bijvoorbeeld toegang tot de fysieke machine”, noemt Somasegar. “De dingen die je als beheerder eerst kon doen door domweg achter het systeem te kruipen, moet je nu op een andere manier aanpakken.” De ontwikkelaars krijgen daarmee volgens Somasegar een extra taak. “Ze moeten ervoor zorgen dat de onderliggende architectuur geschikt is voor zaken als beheer op afstand.”

Schaal is een kernprincipe

Als laatse noemt Somasegar iets dat in een notendop alle elementen meeneemt die ontwikkelaars in hun achterhoofd moeten houden als ze 'voor de cloud' aan het ontwikkelen zijn: hun applicatie dient niet 'voor de cloud' ontwikkeld te worden, maar moet uiteindelijk overal ingezet kunnen worden. Schaalbaarheid wordt vaak pas achteraf ingecalculeerd. Ontwikkelaars bouwen een applicatie voor een bepaald doel, en pas later wordt bedacht hoe het voor andere doeleinden wordt aangepast, zo omschrijft Somasegar de situatie. “Die gedachte mag je bij het ontwikkelen voor de cloud eigenlijk niet bezigen. Maar zo ver zijn we nog niet.”