Tegenwoordig zie je op internet heel vaak de termen ‘cloud computing’, ‘cloud storage’ en ‘the data is in the cloud’ voorbij komen. In deze blogpost licht ik deze termen wat meer toe en verduidelijk ik ze met voorbeelden.

Definitie
Laten we eerst beginnen met een — momenteel aanvaarde — definitie van Cloud Computing volgens Gartner:

“Cloud Computing (Storage) is a style of computing (storage) where scalable and elastic IT-enabled capabilities are delivered as a service to external customers using Internet technologies”. (bron)

In deze definitie komen 3 belangrijke termen voor die we hierna kort toelichten:

  • scalable
  • service
  • Internet technologies

Scalable
Het belangrijkste aan Cloud Computing en Storage is het vermogen om meer resources beschikbaar te maken als de vraag groter wordt.

Als voorbeeld nemen we een simpele webserver. In een traditionele setup komt een webserver overeen met een fysieke computer waarop een server besturingssysteem draait. Deze heeft een vaste configuratie op gebied van CPU kracht en beschikbaar geheugen, onafhankelijk van de taak die hij momenteel vervult.

In een cloud setup gaan we deze fysieke server omzetten naar een virtuele server die draait op een krachtig virtualisatieplatform zoals bv. VMWare of Xen. Waar in een traditionele setup elke server z’n eigen harde schijf en geheugen en CPU heeft, is er in virtualisatie 1 grote resourcespool die verdeeld wordt over de virtuele servers. Eventueel dynamisch aanpasbaar naar gelang de vraag van de virtuele server zelf.

Dit virtualisatieplatform opzetten is een grote kost. Hoe meer redundantie je in wilt bouwen, hoe duurder het wordt. Maar je krijgt er wel een hele hoop flexibiliteit voor terug.

Service & Internet technologies
Traditioneel draaiden computerprogramma’s op de computer van de gebruiker zelf. Neem als voorbeeld een simpele teksverwerker als Word of Pages.

In een service-oriented aanpak draait het programma op een centrale server als een website (=Service), waar de gebruiker via het internet op kan inloggen (=Internet Technologies). Neem als voorbeeld Google Docs, Googles online tekstverwerker.

Het grote voordeel? Als eindgebruiker moet je niet meer omkijken naar installatie en onderhoud van het systeem. Ook maakt het niet uit vanwaar je connecteert op het systeem, zolang je maar een internetverbinding en een webbrowser hebt kun je met de service werken. Al je data staan online gecentraliseerd en niet langer lokaal.

Praktijkvoorbeelden
Als iemand nu zegt “the data is in the cloud” bedoelt hij of zij dat z’n data beschikbaar is via een webservice. Die dan weer gehost wordt op een virtuele server als onderdeel van een virtualisatieplatform. Er is geen vaste lokatie meer voor bestanden, je weet niet op welke harde schijf in het platform data bestaan. Maar je weet dus wel dat je er altijd via je webservice aan kan.

Banken
Eigenlijk zijn de huidige banken een perfect voorbeeld van een Cloud Service: je geld staat op je rekening en je kan er via elk bankkantoor of geldautomaat aan. Waar het geld precies staat, is voor jou niet belangrijk. Zolang je er maar overal toegang tot hebt.

Flickr
Zelfde principe voor Flickr: je uploadt en beheert je fotos op Flickr via hun website (service). Maar op welke server nu precies je fotos staan, maakt jou niet uit.

Amazon S3
Amazon gaat nog een stap verder met hun S3 service. Je kunt een volledige virtuele schijf van enkele gigabyte huren, waar je dan via hun webservice via een filebrowser aan kunt. Je kunt zelfs je storage mouten op je eigen pc, net als een netwerk share. Ideaal voor mensen die op meerdere plekken aan hun data moeten kunnen.

Twitpic
Dat de Amazon S3 service verder gaat dan alleen eindgebruikers, kun je zien bij Twitpic.com: ze bieden een foto upload service aan, maar hebben zelf geen data storage. Daar gebruiken ze Amazon S3 voor. Een mooi voorbeeld van hoe 2 webservices elkaar gebruiken om tot een uiteindelijk product te komen.


31-03-2011 om 12:29

Ik ben ondertussen toch al een behoorlijk aantal jaren actief als PHP developer en ik heb al behoorlijk wat code van anderen moeten overnemen of onderhouden. En dan zie ik vaak dezelfde foutieve constructies en fouten terugkomen.

Hieronder een beknopt overzicht van de meeste voorkomende zaken. En hoe je er dan wel correct mee omgaat:

1. Gebruik geen closing tag “?>”

Er zijn maar weinig PHP coders die weten dat een closing tag niet verplicht is. Gebruik hem niet en je hebt nooit meer problemen met extra whitespace onderaan een pagina die de wel befaamde “Output already started” warnings geeft.

Onderstaande code is dus een perfect legale PHP file:

<?php
echo 'Hello World';

Zeurt je editor dat je toch een closing tag moet gebruiken? Dan is het misschien tijd om een nieuwe editor te zoeken.

2. Single en double quotes

Mensen gebruiken ook veel te vaak double quotes waar het totaal niet nodig is. Als er geen variabele substitutie nodig is, dan gebruik je simpelweg geen double quotes maar single quotes.

Fout:

$string = "U heeft alle vragen beantwoord";

Goed:

$string = 'U heeft alle vragen beantwoord';

In de meeste gevallen is het simpelweg korter en duidelijker om single quotes te gebruiken.

Goed:

$count = count($results);

$text = “Er waren $count aantal resultaten”;

Beter:

$text = ‘Er waren ‘ . count($results). ‘ aantal resultaten’;

Simpele rule-of-thumb: double quotes are evil.

3. Gebruik de heredoc syntax voor strings van meer dan 1 regel tekst

Iets wat helaas ook veel te vaak voorkomt, zijn onderstaande regels code:

$text = “Dit is de eerste lijn met een variable $var1”;
$text .= “Dit is de tweede lijn text met variable $var2”;
$text .= “Dit is ...”;

En het wordt nog erger als er HTML in staat:

$text = “<div id=‘main’><p style=’...’><a href=’$url1’>Eerste lijn</a>.</p>”;
$text .= “<p style=’...’>Dit is de <a href=’$url2’>tweede lijn</a>.</p>”;

$text .= “<p style=’...’>Dit is ...</p></div>”;

Los van het feit dat de style definities naar een CSS include file moeten, gaan de meeste editors de HTML code niet speciaal highlighten omdat het in een string staat. Maar het grote probleem is vooral dat er veel te veel code wordt verspild aan opmaaktekens terwijl het simpeler kan met heredoc synthax:

$text = <<<TXT

<div id=‘main’>
 <p style=’...’>Dit is de <a href=’$url1’>eerste lijn</a> met $var1</p>
 <p style=’...’>Dit is de <a href=’$url2’>tweede lijn</a> met $var2</p>
 <p style=’...’>Dit is ...</p>
 </div>
TXT;

Met deze constructie kun je ook gemakkelijk hele blokken HTML code gewoon in je document plakken, een paar variabelen aanpassen en klaar. En ondertussen kan je editor netjes z’n synthax coloring blijven toepassen. (In een MVC framework ga je dit natuurlijk niet veel tegenkomen, maar er zijn toch altijd die paar situaties waar zulke strings wel moeten worden opgebouwd.)

4. Simpele input format check met sprintf

Als je queries opbouwt die integers als variabelen gebruiken, is sprintf een zeer makkelijk manier om je code al te beschermen tegen SQL injectie: alles wat geen integer is wordt standaard herschreven naar de numerieke waarde 0:

Fout:

$query = “SELECT * FROM node WHERE id = $id”;

Goed:

$query = sprintf(‘SELECT * FROM node WHERE id = %d’, $id);

Als je deze manier wilt gebruiken om ook strings op een veilige manier door te geven aan queries dan kun je dat ook via sprintf doen. Maar gebruik dan zeker ook de quote functie van je database layer om veilig te zijn tegen SQL injectie:

$query = sprintf(‘SELECT * FROM node WHERE title LIKE %s’, $db->Quote(‘%’ . $str . ‘%’));

5. Strftime makes your life A LOT easier

In Nederlandstalige sites wordt er maar al te vaak teruggegrepen naar het manueel aanmaken van array’s met daarin de namen van de maanden en dagen van de week. En dat terwijl er een functie is die dat perfect automatisch kan doen aan de hand van de ingestelde locale: strftime.

Geeft deze functie je toch de Engelse termen weer? Dan is de correcte locale waarschijnlijk niet op je server geinstalleerd. Dat is iets wat je webhoster normaal gezien zonder problemen voor je kan installeren (onder Debian: dpkg-reconfigure locales).

6. And last but certainly not least: Get certified

Behaal het Zend 5.3 Certified Engineer certificaat. Het is een bewijs dat je effectief PHP kent. En staat ook heel goed op je CV. Maar het beste is toch wel dat je tijdens het studeren voor het examen een hele hoop zaken tegenkomt die je normaal gezien nooit gebruikt, maar waarvan je dan toch opeens denkt van “hmm, dit is toch wel handig”.


23-02-2011 om 11:49