There has been increasing hype about cloud computing during the last year. Big companies such as IBM®, Microsoft®, and Amazon have announced their strategies for cloud computing. Smaller companies, even start-ups, have offered their services. As always, when something is hyped a lot, it's good to ask why we care about it, and what are the benefits to be gained by customers. This last installment of the Architectural Manifesto explores, at a high level, cloud computing and its possibilities for both vendors and customers.
Often called Software as a Service (SaaS), cloud computing is also sometimes referred to as everything as a service (EaaS). It can include the servers, databases, software, or any combination of them. In Layers we’ll explore the different layers (or services) that cloud computing vendors can offer. We'll also discuss the risks of cloud based services. First, though, an introduction to cloud computing.
In short, cloud computing means that companies, the users of IT services, can buy their IT related services as a service. Instead of buying servers for internal or external services, or buying software licenses, the company can buy them as a service. This is nothing new. Hosting services have been around for quite some time, allowing you to focus more on your business than on the IT infrastructure. Still, cloud computing has something more to offer.
Imagine that a big vendor is selling their goods through a Web portal. They need access to servers and infrastructure to support the biggest peaks in demand (peak hours of day, peak days before holidays), but most of the time they can manage with smaller capacity. They start wondering if they really have to own so much infrastructure which is not fully used most of the time. With a hosting service, the big vendor could buy the needed infrastructure as a service, pay a monthly or yearly fee, and worry less about their infrastructure. They would buy exactly the capacity they need, as they need it at peak times. With cloud computing, they would pay for peak capacity based on usage. The benefits for the customer are quite obvious.
There are several key characteristics of cloud computing:
- The customer doesn't have to know (and buy) the full capacity they might need at a peak time. Cloud computing makes it possible to scale the resources available to the application. A start-up business doesn't have to worry if the advertising campaign works a bit too well and jams the servers.
- Customers pay only for what they use. They don’t have to buy servers or capacity for their maximum needs. Often, this is a cost savings.
- The cloud will automatically (or, in some services, with semi-manual operations) allocate and de-allocate CPU, storage, and network bandwidth on demand. When there are few users on a site, the cloud uses very little capacity to run the site, and vice versa.
- Because the data centers that run the services are huge, and share resources among a large group of users, the infrastructure costs are lower (electricity, buildings, and so on). Thus, the costs that are passed on to the customer are smaller.
Customers get the services they want, and pay only for their actual usage. If their Web site gets a lot of visitors five days a week, but is almost dead on weekends, they'll pay for the capacity they need (and use) only on the weekdays.
There are several recognized layers in cloud computing. The vendors in these layers have very different service offerings and operating models. Some vendors concentrate on building and maintaining a huge data center, while others concentrate on building a user friendly and feature-rich application. The layers, from bottom to top, are: infrastructure, storage, platform, application, services, and client.
- At the bottom is the infrastructure of the service, or the platform virtualization.
You get the kind of server environment you want. This is the basic offering;
customers still need to handle the server, all software installation, and maintenance
The cloud computing infrastructure does differ from traditional hosting services because of scalability, and pay-as-you-go pricing. A start-up company might be very interested in getting the scalability, and in not paying for the time they're not using the service. It is convenient, especially if you’re trying to grow the traffic on your Web application but don’t know how soon, or how well, you'll succeed.
- With the storage layer, you get a database or something similar, and pay per gigabyte
per month. A storage layer is nothing new or special, except for the full stack of
services. It is, of course, vital.
There are several possibilities for storage. Some are traditional relational databases, and some are proprietary solutions such as Google's Bigtable or Amazon's SimpleDB.
- The platform layer has solution stacks such as Ruby on Rails, LAMP, or Python Django. Now things start to get interesting. That fictitious start-up company doesn't have to deal with the installation of server software, or keep their versions updated, because that comes with the service. They can focus on developing and marketing their application.
- The application layer contains applications that are offered as services. The most
famous examples are probably Salesforce.com and Google Docs, but there are hundreds
if not thousands of (real) applications that can be purchased as services.
Popular Web applications such as Facebook, Flickr, and LinkedIn are cloud services. In these cases, the customer probably doesn't know if the application is run in a scalable data center, in an ordinary hosting service, or in the service providers basement. But, that isn't a concern or problem for the customer who needs to use the application. This layer is probably the most visible part of cloud computing. It emphasizes the benefits that can be seen by customers.
- The services layer contains interoperable machine-to-machine operations over the network. The most prevalent example of this layer is Web services. Other examples include payments systems, such as Paypal, and mapping services, such as Google Maps and Yahoo Maps.
- At the top of the stack is the client layer, which contains the users of the cloud systems. Clients are, for example, desktop users (thin client or thick client), and mobile users (Symbian, Android, iPhone).
As you can see, there are vast opportunities for vendors to offer exiting and new services, and for customers to find services and applications that solve their problems. However, there are some risks that customers need to understand.
There are several points to consider before signing up for cloud based services. Don’t think of the risks below as show stoppers or cardinal failures, but as issues you must acknowledge while making decisions. You should analyze whether cloud based services are right for your needs, and which of the available services is the right one for you.
- Vendor lock-in
- Make sure there is an easy way to get your data out of the service. If you're using an infrastructure service, backing up the files and data should be relatively easy. If you’re using a Web application, be sure to have a plan for taking your data with you in case you need to switch to another vendor. You don't always need to move all of your data to the new application if you have a way to somehow view the data. For example, you don't have to move all of the old time tracking application's data to the new one if you have viewable access to it.
- If something goes wrong with the service provider, such as servers going down, the customer can do nothing. For situations like this, it's better to choose a service provider who offers mirrored sites. Sometimes, though, even this is not enough; even the big vendors can have problems.
- Data security
- This is not always a risk. The security procedures and expertise of the vendor might
be a lot better than those of a small start-up.
The issue to consider is: who gets to see your data, and what are the vendors policies for this. For example, if your data is sensitive for competitors to see, check your vendor's policies.
- Going out of business
- Investigate what would happen to your data, or to the application, if your vendor is forced to shut down. This negative aspect might be something that is seldom mentioned in marketing materials. If exporting your data is easy, then the possible shut down of the vendor shouldn't be that dangerous. You would still face the problem of finding a suitable new application (or vendor) for your business needs, though.
In this edition you learned about the essence of cloud computing, key characteristics, the layers, and some risks to be assessed. To the average customer, cloud computing means getting the services you want and paying per your usage. Cloud computing has many characteristics, such as scalability, on demand resource allocation, and economies of scale. There are six layers in the cloud computing stack, ranging from infrastructure to the client layer. Vendors operate and offer services in one or more of the layers. You also learned about risks that customers and future vendors should consider.
Cloud computing is not just a trend that might happen some day. It's a reality; typical Web users use cloud services daily whether they know it or not. In the near future we’ll probably see a stronger trend of corporate services and applications moving toward clouds. Naturally there are certain applications that corporations would rather run in their own servers, but the majority of corporate applications should be appropriate for cloud computing.
- Discover why cloud computing is important, how to get started, and where to learn more about it in the developerWorks Cloud computing space.
- Read about IBM’s plans to build two major cloud computing centers.
- Cloud computing outlines IBM’s cloud computing plans and activities.
- Read more about cloud computing from Wikipedia.
- "Guide To Cloud Computing" (InformationWeek, Jun 2009) has more about cloud computing and the biggest players.
- "Computing Heads for the Clouds" (BusinessWeek, Nov 2007) is a short primer on how the new technology works.
- Find developer resources on developerWorks.
- Learn by watching Software as a Service demos.
Get products and technologies
- Access IBM software products in the Amazon Elastic Compute Cloud (EC2) virtual environment and start developing your applications today.
Dig deeper into Open source on developerWorks
Get samples, articles, product docs, and community resources to help build, deploy, and manage your cloud apps.
Keep up with the best and latest technical info to help you tackle your development challenges.
Software development in the cloud. Register today to create a project.
Evaluate IBM software and solutions, and transform challenges into opportunities.