Het kiezen van het juiste platform, anders gezegd de juiste publieke cloud dienstverlening, is essentieel om de productiviteit van ontwikkelaars alsmede de kwaliteit van het geleverde werk te maximaliseren. Met het vervagen van de scheidslijnen tussen IaaS, PaaS en SaaS verdient het aanbeveling om de keuze te baseren op zowel de detailkenmerken van de beschikbare dienstverlening alsook de kenmerken van de ontwikkelaars binnen de organisatie.
Applicatieontwikkelaars maken gebruik van publieke cloud platforms met gevirtualiseerde infrastructuurcomponenten, frameworks, runtime environment, tools en consoles die hen in staat stellen om zeer snel applicaties te ontwikkelen, testen, deployen en onderhouden. Onder publieke cloud platforms verstaan we de in hoge mate gestandaardiseerde dienstverlening op basis van publiekelijk beschikbare en toegankelijke cloud oplossingen voor het ontwikkelen, testen, draaien en beheren van applicaties. Dergelijke dienstverlening maakt gebruikt van een multi-tenant infrastructuur resource pool, biedt self-provisioning, snelle elasticiteit en maakt het mogelijk het gebruik van resources te meten. Misschien zijn deze laatste twee zinnen voor velen van ons overbodig, maar in ons ict-wereldje waarin we de veelal irritante neiging hebben om overal maar ‘buzzwords’ op te plakken vinden we het belangrijk om aan deze breed gebruikte NIST-definitie van cloud computing te refereren.
Het kiezen van het juiste platform, anders gezegd de juiste set aan publieke cloud diensten, is een essentiële keuze om de productiviteit van ontwikkelaars alsmede de kwaliteit van het geleverde werk te maximaliseren. Publieke cloud diensten worden veelal onderverdeeld in de welbekende drie smaken Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) en Software-as-a-Service (SaaS). Een onderverdeling die weliswaar zijn waarde heeft, zoals ieder model c.q. iedere poging tot structureren wel zijn waarde heeft, maar die steeds moeilijker in stand te houden is.
Scheidslijnen vervagen
De scheidslijnen tussen IaaS, PaaS en SaaS vervagen steeds meer nu aanbieders van, in dit geval op applicateontwikkelaars gerichte, publieke cloud diensten de scope van hun dienstverlening uitbreiden. In de laatst verschenen Forrester Wave voor Enterprise Public Cloud Platforms (Q2 2013) zien we dat PaaS verder onderverdeeld wordt in ‘IaaS+ platforms’, ‘PaaS- platforms’, en ‘SaaS extension platforms’.
– ‘IaaS+ platforms’: IaaS dienstverleners voegen functionaliteit toe om ontwikkelaars een hogere abstractielaag te geven, met gehoste middleware en ontwikkeltools. Deze ‘bottom-up’-ontwikkeling is terug te zien bij bijvoorbeeld Terramark, AWS met zijn CloudFormation, Elastic Beanstalk en Opswork, alsook bij IBM met de SmartCloud Enterprise Application Services-dienstverlening en het toevoegen van Cloud Foundry aan het recent overgenomen SoftLayer.
– ‘PaaS- platforms’: PaaS dienstverleners gaan de de ‘diepte’ in door naast hun platform abstractielaag-gebruikers nu ook de mogelijkheid te geven om onderdelen van de onderliggende infrastructuur te benaderen, configureren en besturen. Deze ’top-down’-benadering geldt bijvoorbeeld voor Heroku, één van de cloud platforms van salesforce.com, en Engine Yard. Afhankelijk van de mate waarin PaaS-dienstverleners deze stap maken kun je in sommige gevallen ook simpelweg stellen dat ze IaaS-leverancier worden, Microsoft is hier een voorbeeld van, evenals Google met naast zijn App Engine nu ook Compute Engine.
– ‘SaaS extension platforms’: SaaS-dienstverleners maken vanuit hun applicatie de stap naar het als dienst beschikbaar stellen van een ontwikkelplatform. Salesforce.com heeft dit gedaan met Force.com. Andere voorbeelden zijn Intuit, NetSuit en Workday. Maar wat moet je nou kiezen, als organisatie, als je de ontwikkelaars het beste platform wilt geven? Dat hangt natuurlijk sterk af van het type ontwikkelaar.
– ‘Harde code jockeys’: dit zijn ontwikkelaars,die zich bijn voorkeur 100 procent willen richten op het zelf schrijven van de applicatiecode en zich vooral niet willen bezighouden met het configureren en onderhouden van applicatieservers, databaseservers, et cetera. Dat neemt niet weg dat ze zich in hun zoektocht naar de optimale performance soms over infrastructuurvraagstukken zullen moeten buigen. Maar bij voorkeur doen ze dat dan samen met een infrastructuurspecialist in de ontwikkelfase van de applicatiecode. Dit soort ontwikkelaars wil een ontwikkelplatform waarmee men snel kan werken en waarbij een heleboel infrastructuurkeuzes eigenlijk gewoonweg automatisch voor hen worden gemaakt. Dan kom je dus uit op PaaS- danwel IaaS+-dienstverlening
– ‘Prototypers’: dit zijn onder andere de beoefenaars van ‘iterative application development’ (iad) en ‘rapid application development’ (rad). Deze ontwikkelaars programmeren liever op een hoger abstractieniveau en maken graag gebruik van kant-en-klare libraries van componentservices, grafische geautomatiseerde (vierde en vijfde generatie) ontwikkeltools, et cetera. Men heeft veelal geen behoefte om zich bezig te houden met het besturen van de gevirtualiseerde infrastructuur, noch het configureren van middleware en de applicatieontwikkeltools. Voor deze groep ontwikelaars zijn PaaS-platforms met zeer uitgebreide functionaliteit alsook SaaS extension-platforms ideaal;
– ‘End-to-end experts’: dit zijn ontwikkelaars die bij voorkeur zelf sterke invloed uitoefenen op het configureren van de applicatieserver(s), de databaseserver(s) en soms zelf directe toegang willen tot onderdelen van de virtuele infrastructuur zoals vm’s en storage. Deze groep voelt zich niet alleen verantwoordelijk voor de ontwikkeling van de applicatiefunctionaliteit, maar ook het runnen van de applicaties volgens een rijke set aan non-functional requirements, Men heeft veel minder behoefte aan grafische tools en is meestal geen liefhebber van het abstraheren van de infrastructuurlaag. Voor deze groep kunnen zowel PaaS alsook IaaS en IaaS+-platforms een goede keuze zijn.
Welk type ontwikkelaar ben jij? En bij welk soort cloud platform voel jij je prettig? Of ontkom je er niet aan om een mix van verschillende cloud platforms, met verschillende programmeertalen en ontwikkelframeworks? Zeker bij ontwikkelaars speelt ‘empowerment’ een belangrijke rol, maar hoe maak je als organisatie de juiste keuze en hoe dwing je hem af? We zijn benieuwd naar ieders ervaringen!
Dit artikel is geschreven in samenwerking met Edwin Schouten, master IT Architect en cloud consultant.
De enige ‘juiste’ cloud is de private cloud. Publiek in deze context staat gelijk aan meekijken door niet gecontroleerde overheidsdiensten.
Overigens is het uitgangspunt nogal krom. Je gebruikt geen methodieken omdat je die zo fijn vindt. Je gebruikt ze omdat ze het best passen bij de gekozen manier van oplossen. In de praktijk zijn vaak de oplossingen die het beste zijn ook de fijnste om te gebruiken.
Johan,
Dank voor je reactie, al hebben we een wat andere insteek:
– Ik ben er nog niet of een private omgeving (want een private cloud is geen cloud, aldus de definitie van het NIST) echt altijd veiliger is. Ik heb voldoende “in eigen beheer” omgevingen gezien waarvan de beveiliging nog niet 5% was van die van gespecialiseerde partijen, om maar een voorbeeld te noemen. Ook zijn zijn vele voorbeelden op te sommen van hackers die zowel private omgevingen als publieke gesharede omgevingen hackten. En niet-gecontroleerde overheidsinstanties … zijn eigenlijk net hackers. Dus ik zie plussen en minnen van zowel private omgevingen als publieke cloud omgevingen. De afwegingen tussen die 2 was niet waar ik me op richte.
– Volgens mij kies je methodieken, tools, etc. zowel omdat ze passen bij hoe je iets wil oplossen, alsook gewoonweg omdat je bepaalde stijl van ontwikkelen hebt die je prettig vindt. Anders gezegd: ik drink ´s avonds op de bank graag een drankje, maar om een 1 of andere reden kom ik toch iedere keer uit bij rode wijn 🙂
De column was dan ook bedoeld om er eens achter te komen welke mensen welke kleur wijn drinken, en wat ze van die wijn vinden. Want zowel mensen, zoveel smaken, zoveel ontwikkelaars, zovel ontwikkelstijlen- en platforms?
Met vriendelijke groet,
Marc
Marc (en Edwin)
Als de ontwikkelaar de keuzen gaat maken dan ben ik bang dat we nog veel ellende met de ICT zullen krijgen.
Met die opmerking zal ik vast veel ontwikkelaars tegen de schenen schoppen maar als ik kijk naar ontwikkelingen als DevOps had ik het idee dat er eindelijk enige samenwerking op gang kwam tussen de ‘bloedgroepen’ in de lifecycles van services en applicaties. Maar mogelijk mist hier nog een architect die niet alleen verder kijkt dan de technologie maar ook naar de samenhang van processen en hoe ze bijdragen aan bedrijfsdoelstellingen. En als ik me niet vergis was er ook al eens een opinie geschreven over de wenselijkheid van keuzen door ontwikkelaars omdat al die ‘gereedschappen’ uiteindelijk ook weer onderhouden moeten worden.
https://www.computable.nl/artikel/opinie/softwarebeheer/4728437/4480179/de-verborgen-inefficiency-van-agile.html
Niets ten nadele van ontwikkelaars dus maar soms lopen ze nog weleens voor de muziek uit, ze adopteren liever de laatste technologie dan dat ze zich bezig houden met opgeleverde eindproducten. En dat zorgt ervoor dat we steeds meer verspillingen krijgen omdat dingen uit pas gaan lopen, NIST heeft volgens mij dan ook al meermaals de definitie aangepast, herschreven of aangevuld. Technologie veranderd gewoon sneller dan procedures en mensen waardoor de beheersbaarheid van ICT steeds moeilijker wordt, mede omdat de scheidslijnen inderdaad steeds meer vervagen. Dat er verschillende ontwikkelaars zijn is prachtig en bij het voetbal heb je ook aanvallers, verdedigers of middenvelders maar uiteindelijk moeten ze allemaal binnen de lijnen van het veld spelen.
Mooi verwoord Ewout en mea culpa.
Marc, je schrijft een mooi stuk met genoeg haakjes en inzichten om over na te denken.
Om de vraag te beantwoorden, ik voel me prettig bij Amazon Webservices (AWS) en Microsoft Windows Azure. Mijn redenen hiervoor zijn als volgt:
– Als ontwikkelaar is security vaak een uitdaging. Door op een zo’n standaard mogelijke manier de infrastructuur van genoemde spelers te gebruiken heb ik een groot deel van deze security zwakte al afgedekt. Door de houden aan voorgestelde “practices” voel ik me erg zeker dat ik security wise goed bezig ben.
– De platformen geven mij vrijheid om de ontwikkel tools in te zetten die ik wil. Ze dwingen niets af al is Windows Azure uiteraard wat meer ge-ent op het hosten van .NET applicaties en Windows Services.
– Beide platformen komen zeer dicht bij de NIST definitie van cloud computing en zijn daarmee de archetypen van cloud computing. Betalen naar gebruik en fundamenteel gericht op self-service
– Beide platformen hebben uitgebreide “free tiers” waarmee het dus aanlokkelijk wordt te experimenteren zonder dat het direct knaken kost. Ik zou best wel meer met IBM willen doen, maar de free tier van IBM is alleen voor de VS.
– Het portfolio van diensten versnelt het snelst en zij lopen dus voorop waarbij ze de uptime ook respecteren!
– Ze hebben een fijn zelfbedieningsportaal wat mij het gevoel van controle geeft.
– Heel veel automatisering. Niet alleen provisioning, maar ook het monitoren en het automatiseren van triggers en event spreekt mij erg aan.
– Er is veel (video) materiaal documentatie en GOEDE API’s.
– Ze zijn erg concurrerend in prijs.
– – –
Nadelen zijn er ook.
– Het komt uit de VS en niemand kan je de vertrouwelijkheid van informatie geven (al komen er steeds meer technieken die dit wel mogelijk gaan maken).
– Een mogelijke vendor lock-in (maar dit hoeft niet per se slecht te zijn)
– Functionaliteit heeft soms wel een hele korte life cycle (Azure cache anyone)?
– Performance tuning mogelijkheden zijn beperkter.
– Nagenoeg geen invloed op de infrastructuur (maar dit zie ik zelf als een voordeel)
– sommige onderdelen van deze diensten pretenderen meer dan ze zijn en staan nog deels in kinderschoenen (Relationele MS SQL Server databases)