This is the second part for my cloud model surveys. In this part we will discuss the characteristics of the cloud.
Empowerment of End Users
IT systems management was always a problematic case because of technical skills it required. Thus created centralized IT departments (in the companies or local computer store for a personal user) whom they controlled everything related to the data flow of the computers, what programs they ran or which sites they have connected. End users were just “end users”. As it was not very easy to have a virtual server or you needed somethings to be installed on your computer to encode your video file, end users never had lots of luxuries for the systems they used.
Cloud computing provides them this ability. Creation of a virtual server is just a single click away, thanks to Amazon. Or if you want to encode your video you can always upload it to Zencoder and it will handle the rest. The same is also valid for software deployments and other areas of the computing. Whatever you lacked in technical skill, it’s fulfilled by a cloud service which you can use. Increasing the amount of things you can do as a single man and allow you to compete with big guys by adding more servers to your heavy traffic site just by clicking buttons or removing them to decrease the cost.
To empower end users, cloud systems had to simplify their interface and user controls. Thus lead to a point which allowed cloud sites to be more “agile”. As adding or removing resources was just clicks away, users reacted faster to the changing demands, and the machines they used had to react faster too. In the old times, you had to “shutdown” the server in order to add more Ram or CPUs which was slower and also costly as it affected the availability of your site or your services.
The emergence of Web Services was a huge shift for computer systems that was able to work together. With a common interface (or protocols and xml etc.) they have access to, they were able to communicate with each other without having any actual dependency to each other. As computers providing a public interface to someone else, the same interface might have been used by someone else too.
Cloud services, provided users a user interface for end users to allow them easy interaction. But they also provided easy interaction between computers too by providing public APIs that allowed anyone who had a computer system to integrate seamlessly with the cloud service and allowing to automate their work flow. Considering Heroku, you are able to deploy a web application just by checking in your changes to the version control system.
One of the key features of Cloud services were their accessibility. Considering any cloud service you can manage it using your computer, your mobile phone, your iPad or any other device that can connect to the Internet anywhere in the world without needing any VPN connection or SSH tunnels.
Cloud services provides all the infrastructure you need to get yourself going. If you want to deploy a web site that will handle hundreds of users concurrently the odds are you should have a powerful server or a server cluster. Powerful servers comes with increased costs and their maintenance is also costly. This increases your base costs. Using cloud systems to deploy your web applications frees you from buying a server and keeping its maintenance. You can increase the resources your server has access to in the peak hours to increase the user experience and decrease them when the user load is decreased. You are also free of upgrading costs or free from hardware failures that can cost you more than just money but your reputation.
As the prices of cloud services are calculated based on your usage, you pay for what you actually use. This comes in handy when you just started using the service, which you don’t know how much you will be using it. Anytime, you can change to subscription based model to balance your costs or back to the usage based subscription. You can manage your costs much more easily and without having to worry about failures.
There are many failure scenarios considering software from null pointer exceptions to hardware failures. These are all cases you should consider when developing software. A most common way to manage such problems is to have redundant copies of the software/server/ database to provide ease of transition in case of failures. Cloud computing providing you such redundancy is very suitable for such a case. Providing backup services in addition to other services, gives you confidence that your data will not be lost. By maintaining server farms, they provide you the excellent server redundancy service in case of hardware failures.
Cloud services allow you to increase or decrease the resources you can use anytime you want. This solves many of the performance problems as adding more servers to a system is actually cheaper then developing new software. Cloud services provides a ready-to-use scalable server architecture for you, easing your performance problems.
As infrastructure is handled by the service providers, you don’t need to worry about cleaning the servers and checking the heat levels or keeping them cool.
Maintenance costs are handled by the service provides, so you don’t have to pay any additional fees to keep running your already costly servers. Most importantly it saves you time. Instead of keeping your servers running, you use your time to increase the quality of your service or pass your time with your family.
As the data is guarded by professionals, we might consider that our secrets are as secure as they can be. As there is only a single point of entry, wen can consider that data is harder to reach without proper access levels. However cloud systems are also distributes systems where you data is actually distributed too. Security concerns are discussed in the following chapter more thoroughly.