Introduction to Cloud Computing and Architectural Design Principles
The National Institute of Standards and Technology (NIST), the primary U.S. government body responsible for defining technical standards, formalized the definition of cloud computing in its Special Publication 800-145, establishing five essential characteristics that distinguish cloud services from traditional on-premises IT infrastructure[^2]. First, on-demand self-service enables users to provision computing resources—such as servers, storage, and networking—automatically without requiring human interaction with service providers. For example, a developer can spin up a new virtual machine on Amazon Web Services (AWS) in under 60 seconds via a web console or API call, eliminating the weeks-long procurement cycles typical of on-premises hardware deployments. Second, broad network access ensures cloud services are available over standard network protocols (e.g., HTTP, SSH, RDP) and accessible from any device with an internet connection, supporting distributed and remote workforces. Third, resource pooling leverages multi-tenant architectures where providers dynamically allocate physical and virtual resources to multiple customers based on demand, with users generally having no control over the exact physical location of their resources (though regional and availability zone selection is often supported). Fourth, rapid elasticity allows resources to be scaled up or down automatically in response to workload changes, often in a matter of seconds or minutes, with the appearance of unlimited resources available on demand. Finally, measured service automates the tracking, monitoring, and billing of resource usage, with customers paying only for the resources they consume, rather than for pre-provisioned idle capacity.
These five characteristics underpin the core service models that define the cloud stack, each representing a different level of abstraction and responsibility shared between the cloud provider and the customer. The four primary service models, ordered from lowest to highest level of abstraction, are Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and Function as a Service (FaaS), a serverless variant of PaaS that has gained widespread adoption in recent years. To clarify the division of responsibilities across these models, the industry uses the *shared responsibility model*, a framework that delineates which aspects of the system the provider manages and which the customer is responsible for securing, configuring, and operating. The following Mermaid diagram illustrates the responsibility split across the four core service models:
```mermaid graph TD A[Cloud Service Models] --> B[IaaS] A --> C[PaaS] A --> D[SaaS] A --> E[FaaS]
%% Provider responsibilities subgraph Provider Responsibilities P1[Physical Data Centers] P2[Physical Servers & Storage] P3[Networking Infrastructure] P4[Hypervisor / Host OS] P5[Runtime Environments] P6[Application Stack] end
%% Customer responsibilities subgraph Customer Responsibilities C1[Guest Operating System] C2[Middleware & Runtimes] C3[Application Code & Data] C4[Access Control & Configuration] C5[Function Code & Event Triggers] end
B --> P1 & P2 & P3 & P4 B --> C1 & C2 & C3 & C4 C --> P1 & P2 & P3 & P4 & P5 C --> C3 & C4 D --> P1 & P2 & P3 & P4 & P5 & P6 D --> C4 E --> P1 & P2 & P3 & P4 & P5 E --> C5 & C4 ```
1.1 Core Cloud Service Models
1.1.1 Infrastructure as a Service (IaaS)
IaaS is the most foundational cloud service model, providing customers with on-demand access to virtualized computing resources over the internet. In the IaaS model, the cloud provider manages the physical data center, servers, storage, networking hardware, and virtualization layer (hypervisor), while the customer is responsible for managing the guest operating system, middleware, runtime environments, application code, and data. IaaS offers the highest level of control over the infrastructure stack, making it ideal for workloads that require custom operating system configurations, specialized hardware drivers, or full administrative access to the underlying system.
Common use cases for IaaS include lift-and-shift migrations of legacy on-premises applications to the cloud, development and testing environments that require rapid provisioning and teardown of infrastructure, and high-performance computing (HPC) workloads that need access to specialized GPU or TPU instances. Leading IaaS providers include AWS Elastic Compute Cloud (EC2), Azure Virtual Machines, and Google Compute Engine (GCE). For example, a financial services firm running a legacy risk calculation application that requires a specific version of Red Hat Enterprise Linux and custom kernel modules can migrate the application to AWS EC2 without modifying the application code, simply by replicating the on-premises operating system configuration in a cloud virtual machine.
1.1.2 Platform as a Service (PaaS)
PaaS abstracts away the underlying infrastructure layer entirely, providing customers with a pre-configured platform for developing, deploying, and managing applications without worrying about server provisioning, operating system patching, or runtime maintenance. In the PaaS model, the provider manages all layers of the stack from the physical data center up to the runtime environment, while the customer is only responsible for their application code and data. PaaS dramatically reduces the operational overhead for development teams, allowing them to focus exclusively on building business logic rather than managing infrastructure.
PaaS is particularly well-suited for web application development, mobile backend development, and microservices deployment, where teams want to iterate quickly without being burdened by infrastructure management tasks. Popular PaaS offerings include AWS Elastic Beanstalk, Google App Engine, Heroku, and Microsoft Azure App Service. For instance, a startup building a customer-facing e-commerce platform can deploy its Python Django application to Heroku with a single `git push` command, without needing to configure web servers, load balancers, or operating system updates, reducing time-to-market from weeks to hours.
1.1.3 Software as a Service (SaaS)
SaaS represents the highest level of abstraction in the cloud service stack, delivering fully functional, ready-to-use software applications to end users over the internet, typically via a web browser or mobile app. In the SaaS model, the provider manages the entire technology stack, from physical infrastructure to application functionality, while the customer is only responsible for configuring application settings and managing user access and data. SaaS eliminates the need for customers to install, maintain, or update software, as all maintenance and upgrades are handled automatically by the provider.
Virtually every consumer and enterprise software category now has SaaS offerings, including customer relationship management (CRM) tools like Salesforce, enterprise resource planning (ERP) systems like SAP S/4HANA Cloud, collaboration tools like Microsoft 365 and Google Workspace, and video conferencing platforms like Zoom. For example, a small business can subscribe to Salesforce’s SaaS CRM product, configure it to match its sales workflow, and start managing customer relationships on day one, without needing to purchase servers, install software, or hire a dedicated IT team to maintain the system.
1.1.4 Function as a Service (FaaS)
FaaS, often synonymous with *serverless computing*, is a specialized subset of PaaS that executes discrete units of application logic (called *functions*) in response to specific events, with resources allocated only for the duration of the function’s execution. Unlike traditional PaaS offerings that