Programming for the cloud has been tricky to say the least for a long time. One of the main issues is that there are several different "types of clouds" out there, and picking one is often a lifetime commitment in terms of development. By releasing Zend Framework 1.11, PHP is about to change everything once again: they included their "Simple Cloud API".
Cloud talk is often very... cloudy. So, what does the Simple Cloud API actually do?
Store files on cloud servers
Imagine that you are running an application displaying photos -- millions of them. Managing the IT infrastructure to even hold those files can quickly become a real nightmare. Using an online file server (such as Amazon S3), you can get your users to upload their photo onto your servers, and then store those photos "somewhere in the cloud" -- only to fetch it when you need it. Those photos will be backed up, and you will never, ever run out of space. The following services are supported: * Amazon S3 * Windows Azure Blob Storage * Nirvanix * Local * Rackspace Cloud Files (coming soon) * GoGrid Cloud Storage (coming soon)
Queue Service integration
This is also a pretty "cloudy" term, which is often misunderstood. Imagine that you have your web application running on server A: your server is accepting photos from your users. Imagine that you have a second server, let's call it "B", which is dedicated to create different versions of the uploaded photos, at different resolutions. Server "A" will need to send a message to server "B", so that server "B" can start working on those images (which are probably stored somewhere on the cloud). What happens if server "B" is unavailable right when server "A" needs it? This is when Queue Services come handy: server "A" sends a message to server "B" through a Queue Service, rather than directly. Server "B" will fetch the message whenever it's ready to do so, process the files, and send a message to server "A" when all the processing is done (and the resized photos are available, again, somewhere in the cloud file server). The following services are supported:
- Amazon SQS
- Windows Azure Queue Storage
Document APIs are used to store data on the cloud. You can see this as having a database server that never, ever runs out of space, doesn't need backing up, and never stops. The drawback: it's not relational. You can run queries like:
- "SELECT * FROM mytable WHERE attr1 = 'Tested'
The following services are supported:
- Amazon SimpleDB
- Windows Azure Table Storage
The cloud is only getting better. Zend making their Simple Cloud API available is a huge step forward: programming using the cloud has never been easier, and it will only get better.