Cloud computing is the on-demand delivery of computing resources — including servers, storage, databases, networking, software, and analytics — over the internet with pay-as-you-go pricing, eliminating the need for organisations to own and maintain physical data centres. NIST defines cloud computing through five essential characteristics: on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured service. The three primary service models — IaaS (Infrastructure as a Service), PaaS (Platform as a Service), and SaaS (Software as a Service) — and three deployment models (public, private, hybrid) give organisations flexibility to match cloud resources to their security, compliance, and cost requirements.
| Model | Full Name | You Manage | Provider Manages | Example Services |
|---|---|---|---|---|
| IaaS | Infrastructure as a Service | OS, runtime, apps, data | Virtualisation, servers, storage, networking | AWS EC2, Azure VMs, Google Compute Engine |
| PaaS | Platform as a Service | Applications and data only | OS, runtime, middleware, infrastructure | Heroku, Google App Engine, AWS Elastic Beanstalk |
| SaaS | Software as a Service | Nothing (just use it) | Everything | Gmail, Salesforce, Microsoft 365, Zoom |
| FaaS | Function as a Service | Code logic only | Execution environment, scaling | AWS Lambda, Google Cloud Functions, Azure Functions |
Wikimedia Commons, CC BY-SA
Docker is an open-source platform that uses OS-level virtualization to package applications and their dependencies into lightweight, portable units called containers, ensuring consistent execution across any computing environment. Unlike virtual machines that emulate entire hardware stacks, Docker containers share the host OS kernel and isolate the application's filesystem, processes, and network using Linux namespaces and cgroups. Docker has revolutionized software delivery by enabling the "build once, run anywhere" paradigm, drastically reducing environment-related deployment failures.
Kubernetes (K8s) is an open-source container orchestration system originally developed by Google that automates the deployment, scaling, load balancing, and self-healing of containerized applications across clusters of machines. It abstracts the underlying infrastructure, allowing developers to declare desired application state (via YAML manifests) while Kubernetes continuously reconciles the actual state to match. Kubernetes has become the de facto standard for running production-grade microservices workloads, supported by all major cloud providers (AWS EKS, Google GKE, Azure AKS).
A distributed system is a collection of independent computers that appear to users as a single coherent system, coordinating their actions by passing messages over a network to achieve a common computational goal. Key challenges in distributed systems include handling partial failures (where some nodes crash but others continue), achieving consensus on shared state, ensuring data consistency across replicas, and tolerating network partitions. Modern distributed systems underpin the internet's most critical infrastructure — from Google's search index and Amazon's shopping cart to financial clearing systems and distributed databases.
The metaphor of a "cloud" for the internet dates to telecommunications network diagrams of the 1970s–80s, where a cloud symbol represented the public telephone network. The modern term "cloud computing" was popularised by Google CEO Eric Schmidt at an industry conference in 2006, coinciding with Amazon Web Services' launch of EC2.