Different types of cloud computing are provided ‘as a service’ to consumers, and most of them fall under one or more of three categories: Software as a Service, Platform as a Service, and Infrastructure as a Service. It is the service nature of cloud computing that makes it such a disruptive force in the IT industry. Computing capabilities are rented and no hardware or software assets are purchased outright by the consumer.
Software as a Service (SaaS)
Software as a Service provides complete business applications delivered over the web. Advances in web technology
such as Ajax, along with ubiquitous internet access, have made it possible to deliver the rich features and functionality
of desktop applications in a web browser. SaaS applications also make use of standards for web services, and these standards enable them to easily ‘call on the services’ of other applications somewhere else on the web in order to exchange, include or ‘mash up’ data. The time savings that come with on-demand software, where nothing needs to be installed on a PC and new users can be added easily – along with the pay-per-use business model – have made SaaS a success.
The most popular and familiar example of SaaS is e-mail in a web browser, but SaaS applications are becoming increasingly sophisticated and collaborative. You can run the entire administrative, operational and sales side of your business in the cloud. SaaS capabilities provided online include tools for:
- accessing virtual Microsoft Windows desktops on a per-user-per-month rental basis;
- accounting, financial management, inventory and e-commerce;
- collaborations between employees and clients on projects;
- creating flowcharts, diagrams, floor plans and other technical drawings;
- Customer Relationships Management (CRM);
- editing, storing and sharing documents, presentations, spreadsheets, blogs, web pages and videos;
- project management;
- web-mail, calendaring, instant messaging, video conferencing and social networking.
There are many specialized SaaS applications available to rent online but some SaaS vendors provide extensive software
suites (see Figure 1.3 for an example) and ‘marketplaces’ for integrated third-party applications (see Figure 1.4 for an example).
Platform as a Service (PaaS)
Platform as a Service provides consumers with a stable online environment where they can quickly create, test and deploy web applications using browser-based software development tools. There is less work involved in creating an application using PaaS than the traditional approach,
which involves procuring and managing one or more servers for development, testing and production, and installing and configuring server software.
PaaS systems typically include some or all of the following features:
- browser-based development environment for creating databases and editing application code – either directly or through visual, point-and-click tools;
- built-in scalability, security, access control and web service interfaces;
- easy integration with other applications on the same platform;
- tools for connecting to applications outside the platform’s cloud;
- tools for designing web forms, defining business rules and creating workflows.
If your business has its own software development team, and you are considering the cloud for application development
and hosting, then your team’s programming language preferences may sway your choice of PaaS provider, but software developers are accustomed to change so let this not be your only decision criterion. Moreover, some PaaS solutions enable non-developers to create web applications using visual, point-and-click tools rather than a programming language, and some give you the best of both worlds so you can use visual tools to create applications and a programming language to extend functionality if required.
Infrastructure as a Service (IaaS)
Software as a Service was quite a hot topic in IT before cloud computing engulfed the industry, but it was Infrastructure
as a Service (IaaS) that caused the fire to take hold. IaaS provides consumers with administrative, web-based access
to fundamental computing resources such as processing power, storage and networks.
All cloud infrastructures depend on virtualization. By abstracting server software from the underlying hardware, multiple virtual machines, including operating systems, storage and installed software, can run on a single physical
computer and share its processing power. In cloud computing, server virtualization is extended further, going beyond the more efficient use of a single physical machine or cluster to the aggregation and partitioning of computing resources across multiple data centres. This enables cloud providers to efficiently manage and offer on-demand storage, servers and software resources for many different customers simultaneously. More importantly the web interfaces they provide empower their customers to administer computing resources as if they owned them.
IaaS systems typically include some or all of the following features:
- a choice of ready-made virtual machines with pre-installed operating systems including numerous versions of Windows, Linux and Solaris;
- a choice of virtual appliances – virtual machines with specific sets of software pre-installed;
- ability to store copies of particular data in different locations around the world to make downloads of the data as fast as possible;
- software tools to help process large amounts of data (in Data Grids) and perform complex calculations (in Compute Grids) using large arrays of virtual servers working in parallel on the same problem;
- ability to manually increase or decrease the computing resources assigned to you using a web browser as your requirements change;
- ability to automatically scale computing resources up and down in response to increases and decreases in application usage.
The elastic capability of IaaS systems makes on-demand computing possible, but it is the low entry costs and the pay-per-use charging model that make it attractive to businesses.