The Cloud
If you're working in IT, chances are that you've heard about "the cloud", you might even know what the expression actually means. Let me give you a few insights.
Some background.
Cloud computing isn't a new idea, it dates back to the 1960s (some even claim the 1950s). Basically it's all about sharing resources and about scaling.
If you take a look at the average load on a computer, let's say a web-server, it could probably be as low as 10%. In peak hours it might hit 100% from time to time, but most of the time you only need about 10% of what you pay for.
This is a huge waste of money and resources. Imagine how big a waste of resources (and money) this is for a big company like Amazon (yes, the people with the world's biggest online book-store).
To address this issue, Amazon took a look at cloud computing and after implementing this internally, they decided to launch it as a service to external customers in 2006 with Amazon Web Service (AWS). Since then Amazon has been expanding on their services and have the biggest portfolio of cloud services available today.
Another big cloud computing provider is of course Microsoft with their Windows Azure Platform which was launched in February 2010.
Apart from Amazon and Microsoft, you'll find lots of other companies that want to sell you access to public or private clouds. Most of these sell "cloud hosting". This is often virtual servers, some run on huge blade servers on VMWare software.
To cloud host, or not to cloud host.
So what's different from what we did a few years back?
When you needed an application, here we're talking web-sites hosted on Windows, that could handle lots of requests and could scale, one solution would be to run a cluster with several Windows web-servers. This would leave you with several servers to keep updated and running. Whether you're running a commercial (or free) content management system, or a custom web application, you are often forced to manually deploy any application changes to all servers. If your application runs off some sort of database, changes done to the (database) content would be visible on all servers, but often the application will have files locally on the file-system, that could be stylesheets, javascript files, uploaded content etc.
Even an expensive content management system like Sitecore is a pain to keep updated across a cluster of web-servers. Believe me, we're doing it!
So "cloud hosting" is just like a cluster of servers, the main difference being that they're not physical, and that makes it easier to scale the individual servers (just assign some more CPU power, more RAM, more HDD space etc.).
Unless you're a machocist you're not really interested in keeping another bunch of servers running and updated.
So the alternative is to take a look at AWS and Azure. Both let you host your application without having to worry about the OS etc. You're not getting another server for the system administrators to handle!
If your application is under pressure, you just need to add more instances of your application. Depending on the features of the cloud computing service you use, you might even be able to run instances near your customers, so an instance in the US, one in Europe and another in Asia.
So AWS and Azure have some nice benefits, but, and there's always a but. Is your application ready?
Content management systems and web-applications alike have been using the filesystem for years, it has been the ideal place to put content uploaded to the application, this could be images, css, js or pdf files, or it could be data, like the indexes created by applications like the Lucene search engine.
In the cloud, the application can not use the local file-system, you need to remember that you'll have several instances running, so if you need to share information between these instances, you need to put the information somewhere all instances have access to. This could be a database, or it could be a shared, cloud based, storage system (like AWS's S3 or Azure's Blob storage).
So this is a bit of a challenge for most applications. Unless the application has been developed in the last couple of years, most developers have not taken these requirements into consideration.
Chances are that your content management system provider will claim that their software is "cloud ready" or "can run in the cloud". This is probably correct.
What they should be telling their customers, is whether or not their software can actually take advantage of running on a cloud computing service like AWS or Azure. Can you run several instances without having to worry about synchronizing any changes across the instances etc. ?
If you pressure your software provider for an answer to that question, they will most likely end up saying no. If you can get a straight answer from them.
So if you need your website or web application to be ready to handle lots of traffic, to be close to the visitors from around the world, or any of the other cloud computing service features, yes, you should consider moving to the cloud soon. And more importantly, you need to start looking for software that is really ready for the cloud, or skilled people that can help you make it ready.