In the cloud, computing is made available as a service, and there are three predominant application models and two variant models for cloud computing.
- Infrastructure as a service
With the infrastructure as a service (IaaS—pronounced “eye-as”) model, Cloud Consumers are renting only the server hardware and a small amount of software (the hypervisor) to host application’s virtual machine (VM), where the VM consists of the operating system, associated system software, and the application itself.
IaaS means that VMs are simply moved from on-premises to the cloud. Many operating systems and applications can coexist on a cloud server. A thin piece of code called a hypervisor ensures that each one runs in a timely and efficient fashion.
This is the easiest and fastest migration strategy; it offers many benefits, including cost savings. IaaS is one of the most common cloud deployment patterns to date because it reduces the time between purchasing and deployment to almost nothing.
However, Operations will need to manage such tasks as patch management, updates, and upgrades.
- PaaS(Platform as a Service)
In platform as a service , the cloud provider maintains all system software, removing the burden of upgrades and patches from the IT department. In a PaaS deployment model , all that the enterprise needs to focus on is deploying its code on the PaaS machines; the cloud provider ensures that operating systems, database software, integration software, and other features are maintained, kept up to date, and achieve a high SLA.
PaaS provides IT departments with important benefits, most important among them being the cost savings associated with reduced or eliminated maintenance of system software and other rote functions. However, PaaS usually implies some redesign of the application (12 Factor Cloud Native Application Architecture) in order to best take advantage of the model.
- SaaS ( Software as a Service)
In software as a service ,Cloud Consumers rent an application from a vendor, such as Microsoft Office 365 for email and productivity. This is by far the most cost-effective of all the options because typically the only work involved for the IT department is provisioning users and data and, perhaps, integrating the application with single sign-on (SSO). Typically, SaaS applications are used for functions that are not considered business-differentiating, for which custom or customized applications encode the competitively differentiating business models and rules.
Differentiator: When choosing how to move functionality to the cloud as per cloud first principle, cloud consumers should always be on the lookout for opportunities to use SaaS-based applications. Usually, SaaS solution would provide one with the highest return on investment.
However , some of the SaaS products requires a huge degree of integrations with current IT systems hence the time to market may get impacted.
This solution option lie somewhere between IaaS and PaaS on the “as-a-service” spectrum—are a means by which applications can share a single instance of an operating system.
This provides the appropriate isolation and security guarantees preventing applications from “stepping” on one another. Because starting a containerized application typically does not involve loading and initializing an entire VM with an operating system, container startup can be very fast, so scale-up and scale-down can be very performant.
Containers have many advantages. Often it is possible to package an application with few or little changes to run within a container. Having created containers, it’s often useful to deploy multiple copies for scale or resiliency reasons. A related technology, orchestration, can help automate the process of deploying many copies of many different applications or components to a cluster of servers.
- FaaS (Function as a Service) – Serverless
This is a computing paradigm that fits somewhere into PaaS category. The primary difference is in the way cloud consumer compose and deploy their application, and therefore the scalability of their application.Serverless architecture is a pattern where applications are hosted by a cloud provider, eliminating the need for server software and hardware management by the developer. Applications are broken up into individual functions that can be invoked and scaled individually.