So far, we have been talking about resources that represent infrastructure technology like processors, storage, and networking. But resources also include software services like databases, identity management, and email servers. Those software services are also available in cloud environments, and they are typically constructed as a shared, multitenant service. Multitenancy is a computing architecture that allows customers to share computing resources in the cloud. Although customers are sharing resources, their individual configurations and data are isolated.
For example, say that you’re a cloud provider. If each customer had their own dedicated server, storage device, and networking equipment, scaling your cloud business to support thousands of customers would be hugely expensive. In addition, you’d have to offer your cloud services at a very high cost. On the other hand, if the cloud vendor uses a multitenancy architecture, they can have multiple customers using shared infrastructure. Similarly, cloud software vendors use a multitenancy architecture so that they don’t have to replicate their software for every single user. Your software data, settings, and preferences are all saved, but the underlying base software is shared in a multitenancy approach.
To make resource pooling work, each pooled element needs to be written with service-oriented constructs in mind. Consequently, each resource is written as an independent service without dependencies and with well-defined interfaces.
Cloud delivery models
Understanding the foundations of cloud computing calls for an understanding of cloud delivery models. In this section, we focus on the models that represent computing environments:- Infrastructure as a Service
- Platform as a Service
- Software as a Service
Infrastructure as a Service
Infrastructure as a Service (IaaS) is the delivery of services, including an operating system, storage, networking, and various utility software elements, on a request basis. The easiest way to think of IaaS is that it provides a virtual server that is equivalent to a physical server — you have to select an operating system (for example, Linux, Windows, and so on), and everything “up the stack” to the applications that will run.IaaS has both public and private versions. In the public IaaS, the public cloud provider creates the infrastructure and resources that consumer can use. The user simply needs a credit card to acquire these resources. When that user stops paying, the resource may disappear. In a private IaaS service, it is usually the IT organization or an integrator who creates an infrastructure and resources that internal users and sometimes business partners can use on demand. Whereas criteria for a public cloud are based primarily on the ability to pay for a service, a private service applies company policy to a service request. Some customers will bring their own tools and software to create applications.
Platform as a Service
Platform as a Service (PaaS) is a mechanism for combining IaaS with an abstracted set of middleware services, software development, and deployment tools that allow the organization to have a consistent way to create and deploy applications on a cloud or on-premises environment. The easiest way to think about PaaS is that it’s an IaaS, but the operating system and development tools are already in place. Because a PaaS environment is ready for development, productivity and time to value is greatly increased.Many PaaS environments are anchored to software platforms. For example, Salesforce is a generalized Customer Relationship Management (CRM) to help companies manage their relationships and interactions with customers and prospective customers. Salesforce has a large PaaS platform so that partners with specific domain expertise can use the Salesforce PaaS platform to build industry specific CRMs specific industries, including pharmaceutical sales, education, retail clothing, and food sales.
A PaaS offers a consistent set of programming and middleware services that ensure developers have a well-tested and well-integrated way to create applications in a cloud environment. A PaaS environment brings development and deployment together to create a more manageable way to build and deploy applications. A PaaS requires an Infrastructure service.Software as a Service
Software as a Service (SaaS) is a business application created and hosted by a provider in a multitenant model. Some of the most popular SaaS applications include Google’s G Suite Apps, ServiceNow, Salesforce, Adobe Create Cloud, and Zendesk. Customers typically pay for the SaaS service per user on a monthly or yearly contract model. The SaaS application sits on top of both a Platform as a Service and foundational Infrastructure services. However, customers do not typically care about the underlying infrastructure and platform services. Instead, customers are concerned about the functionality, performance, and availability, and security of the applications.The computing resources lifecycle
A fundamental notion of the cloud, both public and private, is that consumers utilize computing resources only when they want to and are only charged for the resources they actually use, for the time they use those resources. In that sense, they rent resources for time periods they desire. Contrast that with the physical data center where computers, storage, and other resources are purchased and then used for the life of those resources.To meet consumer needs, cloud service providers need to design their computing platforms to respond immediately to whatever consumers request. Since the providers don’t know when consumers will make their requests, how many resources they will need, the size of those resources, and how long they will keep those resources, the design must keep many resources available for use at all times. Moreover, the cloud provider must track all resource usage down to fractions of a second so that consumers can be billed for exactly what they used on a pay-as-you-go basis. When consumers finish using resources, the cloud platform must return those resources to the set of available resources so that other consumers can use them.
In some situations, a service provider can’t anticipate the needs of a customer. Therefore, it is common for a service provider to add capacity from a third-party service provider. Typically, the consumer is unaware that they are dealing with an additional cloud service provider.