Cloud Computing is hot en er lijkt geen ontkomen meer aan. Zou Cloud Computing ook bruikbaar zijn binnen het (Java) software ontwikkelproces? En zitten er nog nadelen aan het gebruik van deze technologie? Het korte antwoord op deze vragen luidt “Ja!”, ze zijn bruikbaar en er zitten nadelen aan.
Als we kijken naar Cloud Computing komen we drie termen tegen die wat zeggen over de mogelijkheden van deze technologie, nl. IaaS, PaaS en SaaS. Al deze technologieën hebben een verschillende toepassing en zijn ook in meer of mindere mate goed te gebruiken binnen het (Java) software ontwikkelproces.
Hieronder een korte beschrijving van de verschillende technologieën en een toelichting van hoe deze toegepast kan worden binnen het ontwikkelproces.
Infrastructure as a Service gaat over het virtualiseren van hardware, denk hierbij aan servers en evt. clients. Op basis van een eenmalige configuratie (image) kan een virtuele omgeving gestart worden.

Binnen het ontwikkelproces is IaaS erg goed inzetbaar, dit vooral doordat er eenmalig een image gemaakt wordt en op basis hiervan kunnen meerdere virtuele instanties gestart worden. Hierdoor is het voor een ontwikkelaar of tester erg makkelijk om een extra, productie waardig, systeem op te zetten. Voor een ontwikkelaar wordt het op deze manier bv. ook erg eenvoudig om omgeving specifieke problemen, op een aparte instantie, te reproduceren.
Voordelen hiervan zijn dat er geen extra hardware aangeschaft hoeft te worden een extra virtuele instantie is zo gemaakt. Er wordt betaald naar gebruik van schijfruimte, processorkracht, geheugen e.d. Dit kan een kostenbesparing opleveren, echter er zijn vaak wel wel kosten verbonden aan extra support van een IaaS provider.
Bij 'Platform as a Service' draait het vooral om het aanbieden van ready-to-use diensten. Denk hierbij aan Source Control Management (SCM), bugtracking e.d. maar ook specifieke applicatie deployment omgevingen.
PaaS kan ook erg goed ingezet worden binnen een ontwikkelproces. Een geïntegreerde SCM oplossing (unfuddle, sourceforge etc.) maakt het erg makkelijk om code in een repository te stoppen, te koppelen aan bugs. Vaak bieden deze omgevingen ook een centrale plek voor documentatie zoals een wiki. Hierdoor is erg snel een ontwikkelomgeving op te zetten.
Daarnaast kennen we ook PaaS als een deployment omgeving (Google App Engine, CloudFoundry) waarop erg snel en (redelijk) eenvoudig een applicatie te deployen is. Zo'n omgeving biedt een applicatieserver, database e.d.dit hoeft dus allemaal niet op de lokale omgeving geïnstalleerd te worden. Hierdoor kan bv. erg snel een demo of prototype gedeployed worden.
Software as a Service, zoals de naam al doet vermoeden, is het aanbieden van software (ontwikkelomgeving, tekstverwerker e.d.) in de cloud. Hierdoor is het eenvoudig om deze software (overal) te kunnen gebruiken. Over het algemeen is het hebben van een webbrowser voldoende om toegang te krijgen tot de applicaties.

Binnen het softwareontwikkelproces heeft SaaS nog niet echt een toepassing. Er zijn wel een aantal projecten met een online ontwikkelomgeving (bv. ACE). Deze online ontwikkelomgevingen maken het vooral voor gedistribueerde teams eenvoudig om samen te werken, denk hierbij aan code-reviews en pair-programming. Een toepassing die wel ingezet kan worden binnen het ontwikkelprocess is Google Docs. Hiermee is het eenvoudig om documenten te delen en toegankelijk te maken.
In het voorgaande hebben we het vooral gehad over voordelen van Cloud Computing maar zoals eerder aangegeven kleven er ook nadelen aan. Enkele nadelen (in willekeurige volgorde) zijn:
Als een dienst niet beschikbaar is ligt een deel van het ontwikkelproces eruit wat weer een projectrisico is. Daarnaast: hoe zit het met failover, zijn er meerdere locaties, dat wanneer er één locatie down is een andere die het kan overnemen? Voor IaaS is dit vaak zelf te regelen, voor PaaS en SaaS zijn we vaak gebonden aan (standaard) service level agreements.
De overige punten hebben vooral te maken met de beveiliging en recovery van bestanden. In eerste instantie willen we niet dat het misgaat (beveiliging), mocht het dan wel misgaan willen we wel dat we snel een backup terug kunnen zetten. Mochten we tenslotte ooit besluiten om te wisselen van aanbieder kunnen we dan onze bestanden meenemen (zijn wij wel eigenaar).
Alle bovenstaande nadelen/vragen verschillen per aanbieder en dienst en zullen uitgezocht moeten worden. Daarnaast kan een deel van deze nadelen ondervangen worden met een goede SLA (backups, beschikbaarheid en soms ook niveau van beveiliging).
Ondanks de genoemde nadelen heeft Cloud Computing, ook binnen het softwareontwikkelproces, de toekomst. Het maakt een aantal zaken een stuk eenvoudiger, sneller en soms ook goedkoper.
Er zijn nog geen reacties
Let op: Uw reactie wordt gepubliceerd. Voor privé-reacties kunt u rechtstreeks mailen met de auteur. Voor contact mogelijkheden bekijk het auteur profiel van Marten Deinum
Marten is een ervaren Java Consultant en een Open Source fan. Hij heeft ruime ervaring in diverse branches en is hoofdzakelijk geïnteresseerd in (client/)server development en de realisatie van grote en omvangrijke applicaties.
Lees Meer in Profiel