Cloud computing is the delivery of computing as a service over a network, whereby distributed resources are provided to the end user as a utility. The idea of utility computing originated in the 1950s and 1960s, but the enabling technologies evolved decades later and have finally matured to a state in which cloud computing is a viable option for organizations to invest in.

The enabling technologies of cloud computing include:

  • Networks
  • Virtualization and resource management
  • Utility computing
  • Programming models
  • Parallel distributed computing
  • Storage technologies

Cloud computing consists of four building blocks:

  • Application software
  • Development platforms
  • Resource sharing
  • Infrastructure

Cloud service models exist at various levels in the building blocks.

Software as a service (SaaS) is at the application software layer. SaaS is the delivery of software over the internet (typically through a web browser).

Platform as a service (PaaS) is at the development platform layer and can be defined as a computing platform that allows for the creation of web applications in a simplified manner without the complexity of purchasing and maintaining any of the underlying software and infrastructure.

In the Infrastructure as a service (IaaS) model, providers rent out compute resources in the form of instances or virtual machines, which have some form of CPU, memory, disk, and network bandwidth attached to them.

There are three well-known deployment models for cloud computing: public, private, and hybrid.

Popular cloud providers include Amazon Web Services, Microsoft Azure, Google Cloud Platform, and OpenStack. Each provider typically offers a stack consisting of compute, storage, and networking services, among others.

Some of the most popular use cases for the cloud include:

  • Web and mobile applications
  • Big data analytics
  • On-demand high-performance computing
  • Online storage and archival
  • Rapid application development and testing