Platform as a Service (PaaS)
We can think of software as a service (SaaS) at being at the top of the cloud services stack simply because we’re dealing with fully finished applications that are delivered via the internet running in the cloud, but with the downside that they’re not your applications.
So, when you’re dealing with your most unique and important business needs, there may not be a SaaS for that. So, we need to work at the lowest level (shown as the top-most pyramid in the figure below) using infrastructure as a service (IaaS) for that.
At the Iaas level, you or people like network architects configure
- storage and
which you can use to build whatever you want. But if you configure a server in the cloud, it may be a virtual machine, but it is still your responsibility. You need to configure it and take care of updates and service fixes. If something you installed is not working the way you wanted, that’s your problem. It’s not the problem of the cloud service provider. They just provided you with the infrastructure. The rest is up to you.
Somewhere in between Iaas and SaaS there’s platform as a service (PaaS). The provider gives you a pre-built platform where you can deploy and manage your codes and applications but not the infrastructure. An example of Paas provider is AWS Elastic Beanstalk.
The easiest way to think about platform as a service is to think about the initial years of cloud computing. During those years what we now call infrastructure as a service was kind of the first option you had (IaaS). You could configure a bare-bone virtual machine server with perhaps just an operating system and then the rest was up to you.
But let’s say you wanted a server for doing web development (a very common reason) what that meant was you would first configure a very basic server and then immediately having to install so many applications to get that server ready for your website. You would install exactly the same things to build and run one or more web applications, some of which are listed in the following figure:
In other words, after installing your web server, you would then install database management software, and then install a web development framework like asp.net, node or PHP. Next, you install source control. Next install security software. In the end, you now go and configure everything so they all talk nicely to each other.
The thing is a typical software developer doesn’t really want to do all that stuff. They want to do what comes next or what comes after that. So, the cloud service provider said, well, seeing as a lot of this is just repeated tasks, what if we automate that part of the work?
For example, if what you want is a server for doing web development, it is the cloud service provider who will just take care of installing and configuring all those extra necessary pieces, that is, the web service software, the database software, the web framework, and so on. The provider also takes care of keeping everything like the operating system patched and updated so you don’t need to directly manage the virtual machine.
Instead of merely getting a server in the cloud and developing all the rest by yourself, what you’re getting is a complete development environment in the cloud, that is, a development platform or platform as a service (PaaS).
You get away from having to think about the underlying infrastructure, the details of the server, the storage and networking. Those are hidden a little bit further away. These PaaS options are often very targeted at specific kinds of development. For example, you have options for web development, mobile development, data analytics (meaning you can also get very good reporting built into them) and so on.
You can also get options for automatically scaling those apps, that is, if the website you’re building gets hit by a lot of users and suddenly you’re running a 95% capacity, you can have a setting that would say this application will automatically scale up an allocate more resources so it behaves like a faster, more powerful machine and then scale back down when it’s no longer needed. We will look at scaling in more detail shortly.
Now you are still going to have to build something on top of all this to make it do anything. But with platform as a service, you’re getting that full development platform.
Differences Between SaaS, PaaS and IaaS
Scaling In, Out, Up or Down
The words scale out is often used when talking about acquiring new compute power by adding more servers. The words scale up is sometimes used, regardless of how the compute resources are scaled. But in this section, I’ll use more precise terms to distinguish between the two fundamentally different ways for scaling compute resources. They are horizontal scale and vertical scale.
In horizontal scaling we add more compute powers by adding one or more servers. In vertical scaling, we add more compute power by making our existing servers more powerful.
Scaling up is often used in on-premises data centers to refer to hardware upgrades whereas horizontal scaling is often used by cloud service providers that join more virtual machines together to handle increasing workloads. In horizontal scaling, we use scaling out and scaling in to refer to compute resource increase and decrease respectively.
In vertical scaling, we use the words scaling up and scaling down to refer to server capacity increase and decrease respectively. Even though scaling up and scaling down are often used in place of scaling out and scaling in within the context of cloud service, I follow a strict usage of these terms in this book so you don’t get confused.
The CMR Model
The “-aaS” model is based on different abstraction levels over the cloud hardware, so it’s centered on cloud internal structure. The CMR model (or Control-Mesh-Resource model) is a workload-centric model that focuses on how a user’s workload is deployed and hosted on cloud.
The CMR model sees the cloud as a huge compute resource pool, around which user applications roam. Instead of approaching the cloud through either PaaS or IaaS, we approach it through a unified control plane. The control plane takes our workloads and projects them on top of a compute plane, which comprises of various compute resources like RAM, CPU and hard drives.
Workloads on the compute plane take the form of service meshes. A service mesh is used to define an isolated networking environment for an application. We can scale a service mesh and move it on the compute plane as needed. The following figure shows a high-level view of the CMR model.
To easily understand CMR imagine you have a rack of projectors. Any time you want to deploy an application, just load a deck of slides in one of the projectors and then project the application onto a huge screen (the compute plane).
You can zoom in or zoom out as you wish (for scaling), and you can pan your projector around to move the projection to anywhere you want (for upgrades, failovers, etc.) The CMR model is designed for describing micro services.
The Marketplace: Cloud Solutions & Cloud Vendors
Making sense of cloud providers
Let’s go back to that idea of a stack of cloud services explained earlier. Before you can provide a service of a finished application, you need some kind of development platform to build it on. To have a development platform, you need some kind of infrastructure. Another useful perspective is just to consider the typical users of these different cloud service categories.
For infrastructure as a service (IaaS), the typical audience would be IT professionals, network administrators or System admins. Now step up to platform as a service (PaaS). That typical audience is more often a software developer. Now up one more level to software as a service (SaaS), the audience is now anyone.
But all this pyramid represents is the idea that they logically build on each other. It does not show popularity or revenue. In fact, if I wanted to show you these different categories, either by say the number of companies offering this kind of cloud service or indeed the revenue generated by these kinds of cloud services, that’s a very different story. See the figure below.
Software as a service (SaaS) generates the most revenue by far, followed by infrastructure as a service (IaaS) and followed by PaaS platform. That shouldn’t be a surprise because SAS is the most straightforward revenue model with the widest audience potential. It’s a finished app and it charges people to use the app.
Now let’s quickly explore what is on offer from the major providers of cloud infrastructure and even who those providers are. Well first, the most common names you’ll see are:
- Amazon Web Services (AWS)
- Microsoft Azure
- Alibaba Cloud
- Google cloud
- IBM cloud
- Oracle Cloud
Now there certainly are others, but currently the top four of these have the biggest global market share, with Amazon having the most. If you just visit any of these websites and look to see what services they offer, it can be incredibly daunting. A challenge for anyone working with the major cloud providers is just the immense number of options, making sense of them and keeping up with how quickly they change.
For example, if an IT professional goes to any of these cloud providers because he wants to research using that provider for just storage in the cloud, he won’t find just one option for storage, but perhaps a dozen different options.
There’re options for storage intended for long-term backup as shown in the figure below.
In these options for storage is disaster recovery. Another different storage option is there for high performance. All these are important because they’re often different pricing tiers. When you first start to use any of these major cloud providers, you’re immediately presented with perhaps 10 or 15 different categories where each category might have 10 to 15 different services. We can’t even begin to cover everything in a book like this.
However, there are a few words I do want to cover in these cloud computing fundamentals- some terms you’ll see across many of these providers.
Public Cloud, Private Cloud, Hybrid Cloud or Multi-Cloud?
First, you will see phrases like public cloud, private cloud, hybrid cloud and multi-cloud, such as shown in the figure below.
You’ll also see the term elastic computing being used on several of these sites. See this figure for example:
You’ll see the term serverless computing in multiple places. See an example in this figure:
We will go over all of those terms in the next few sections.
Cloud Deployment Options
We have these terms, public cloud, private cloud, hybrid cloud. You’ll also see multi-cloud. See the following figure.
Now this first one’s easy because when we talk about or use cloud computing, we’re most often talking about public clouds. It’s the most common. It’s the default option. If we’re having a conversation about cloud and you hadn’t used any of those extra words, I’m just going to assume you mean a public cloud.
Nothing is owned by you. Everything in the data centers – all the hardware, software and supporting infrastructure – are owned by a third party, and they are available to the general public to use. So, we have that idea of multitenancy. All the companies (tenants) are using the same servers, storage and networking. Examples of public cloud service providers are AWS (Amazon Web Services) and Microsoft Azure.
Private cloud is a much less common option. It’s usually for larger enterprise level organizations. This is where a set of computing resources in the cloud will be dedicated to just one organization or company and not shared.
Now this does not mean the organization has just their own equipment in their own server room. A private cloud can still be hosted by a public cloud provider. They’ll then reserve a set of resources just for that organization, and then they’ll set it up with a private network with an extra layer of authentication.
So, it does allow another layer of security, control and more customization but it’s also going to be much more expensive. Some examples of private cloud providers are VMware, Dell, Oracle and HPE (Hewlett Packard Enterprise).
Then we have hybrid cloud, which, as the name might suggest, is a mix or it can mean using both public and private clouds. However, it also refers to the idea of incorporating your own on-premises applications and equipment into the picture. Now this doesn’t mean that you’re just using a few unrelated options.
A company can say…
“Hey, we have some internal applications running on-premises. We’re also using a SaaS and hosting a website in Microsoft Azure, but nothing talks to each other”.
No, that’s not a hybrid cloud. Hybrid cloud refers to the idea that you’re setting up communication or orchestration between the different parts of your largest system. So, the applications themselves will talk to each other using APIs, and you’re sharing the workload between on-prem, public cloud and possibly also private cloud.
An example of a hybrid cloud company is NASA. It uses private cloud to store sensitive data and public cloud to store and share non-confidential data.
Finally, there’s multi-cloud. Simply put, it’s using cloud services from more than one provider. For example, perhaps your organization decides they want to use the machine learning platform as a service in Microsoft Azure, but also prefers the archival cloud storage options in AWS from Amazon, and they make both of them part of the larger architecture. That’s multi-cloud.
It adds some architectural complexity, but it’s becoming more and more of an expectation that organizations don’t have to completely commit to just one cloud service provider.
Elastic and Serverless Computing
A word you’ll see on multiple websites for cloud service providers is elastic computing. You’ll see references to elastic service, elastic storage and elastic networking. The basic idea of elasticity is straightforward. It’s the same reason we might use elastic for anything because it allows us to expand and contract without additional effort on our part.
In cloud computing, it refers to the ability of our servers, storage and networking to automatically adjust to different levels of demand. But you might say…
“Hey, we’ve been scaling up and scaling out computers to meet increased demand forever. So, what’s the difference between scaling and elasticity?”
Okay. Elasticity is having the ability to scale up and also scale back down automatically.
But within the administration portal of a cloud service provider’s website, such as that shown in the figure below, I could set up rules to say if the system detects it’s running at more than 95% CPU, then automatically reallocate the virtual machine to act as if it’s running on a faster processor, has more cores, or even duplicate the entire virtual machine to have another instance of it running.
But we can also set up rules to say that when demand dies down, reduce the resources. This can all be set up with a few clicks of a mouse and it’s just handled automatically by the cloud provider. Elasticity is another one of the key benefits of cloud computing. It’s one of the great side effects of having this pooled and virtualized infrastructure. The reason for this is that when you’re not using those additional resources, you don’t have to pay for them.
Now you may also see references to serverless computing. See the figure below. This is an aspect of computing that’s targeted mainly at software developers and the first thing I need to clear up about it is the name serverless computing.
It’s a terrible name! It does not mean “no server”. It still uses a server. For a software developer, this is a way to run code without caring or even thinking about the server.
In the previous section, I talked about having platform as a service (PaaS) as a way to get a full development environment in the cloud, including a web server, a database and an application frameworks. But as a software developer, I still have to think about building and running a full application on that platform.
Now, serverless takes it one step further than that, to the point where if I wanted to, I could just say, I have a few lines of code. I want to run them in the cloud. On some websites you’ll even see the term fast or functions as a service. Now, personally, I think of fast as just a specialized kind of platform as a service, but it gives me the ability to have just a few lines of code.
I could call on demand, perhaps from a website or even from a mobile app where we’d only be charged for the computing time the code actually uses whenever it’s called.
Service-Level Agreements (SLA) in Cloud Computing
One of the most common concerns people have when moving to the cloud is about availability and uptime. With software development in general, we know there’ll be outages, hardware failures and network issues. However, we can still have high expectations of those cloud service providers.
We can measure those expectations because they all have service level agreements or SLA to describe what expectations we can have as a paying consumer of that particular cloud service. See an example in the figure below.
The figure below shows various service credits given back to paying customers if Amazon cloud services can not be made available up to certain percent of uptime in any month. For example, if it’s less than 99.99% availability, then you get 10% off your bill. If it’s less than 95% availability, it’s a 100% of the bill.
Now, if you’re not used to working with percentage numbers for availability and uptime, understand that what might sound like a pretty good number to the general public is often not a good number for software developers.
For example, if a website was available 99% of the time, a lot of people think that sounds pretty good or at least acceptable, but 99% availability means between seven and eight hours of downtime a month. See the figure below.
The question any development team needs to ask is, is that okay? I mean, is this a critical application? How much revenue could we lose? What are our service level agreements with our own external customers? Improving this number can be costly, not just by resources, but also terms of system and architectural complexity.
Real-World Applications of Cloud Computing
In this cloud computing fundamentals, I want to give you more perspective on how vital cloud computing is to your life and mine, I’m giving you here five real-world applications of cloud computing.
Examples of how cloud computing impacts education can be found on platforms/tools like Ratatype, SlideRocket and Amazon Web Services.
Advanced cloud computing technology is rapidly being adopted by students in various educational institutions. Educators are making relentless efforts to modernize classrooms by introducing e-learning software like SlideRocket.
Students use SlideRocket cloud platform to build and submit presentations. They do this through web conferencing which is all done on cloud. Ratatype typing tutor is another great tool that educators use to teach students fast typing and valuable keyboarding skills. Free online typing tests are also offered on cloud for tracking their progress.
Amazon AWS cloud features VDI (virtual desktop infrastructure) solutions for K-12 and primary schools. Through the cloud, students and instructors can access learning and teaching software on multiple devices.
Cloud computing is revolutionizing healthcare. It is used by physicians, nurses and administrators for sharing information quickly from anywhere in the world. This helps to boost efficiency and create maximum convenience. It also helps to save cost since large data files by can be shared instantly.
Moreover, cloud technology helps patients to receive the best possible care with little or no delay. The condition of patients is updated in a few seconds through the use of remote conferencing. Unfortunately, very few modern hospitals have implemented cloud computing. There’s a forecast however that many more will do so in the near future.
The applications and benefits of cloud computing for government and its agencies are citizen services, IT consolidation, flexibility, cost savings and shared services among others.
Early adopters of cloud computing were the US military and U.S government. The U.S. Federal Cloud Computing Strategy, was introduced and instituted under the Obama administration for the sole purpose of accelerating cloud adoption in all departments.
This strategy was meant to shift the focus from the technology itself to the mission and core competencies of the agency.
The U.S. government’s cloud incorporates mobile, social and analytics technologies. Nevertheless, they have to adhere to security measures and strict compliance (FISMA, FIPS and FedRAMP). This is for protection against cyber threats from both abroad and domestic.
Marketing & Financial Services Cloud
A marketing cloud is an end-to-end digital marketing platform that can be used to target leads and manage contacts. For example, Maropost Marketing Cloud provides services like hyper-targeting of leads and easy-to-use marketing automation. They also provide advanced SMS delivery capabilities, trigger email services, mobile notifications, and so on. Adobe Marketing Cloud also offer end-to-end digital marketing. Hubspot offers marketing, sales and service software that helps businesses grow.
Cloud-based foreign exchange (forex) trading services and platforms are becoming more popular these days. Since armchair traders worldwide are now equipped with the best online services and tools, they embrace the action of buying, selling and exchange of global currencies. Cloud provides trading automation and also allows even busy traders to be in control of any market situation on the go.
There is a rapidly growing number of cloud storage providers online these days. Each of them competes over the storage capacity they can offer clients. For example, Dropbox has remained the clear leader in the provision of streamlined cloud storage. They give users free apps that they can use to access their files on multiple devices and on their website with up to 1TB free storage capacity.
Gmail, a Google’s email service provider, give their users unlimited storage capacity on the cloud. Google can be seen as a revolution when it comes to the way we send and receive emails. In other words, Gmail has helped greatly to increase email usage throughout the world.
Facebook also gives infinite cloud storage capacity, allowing their users to store unlimited videos and images on their profiles, which they can easily access on multiple devices. Facebook takes it a step further by allowing users to exchange data on their Messenger app.
You just reached a milestone! This is the end of your Cloud Computing Fundamentals. Now I know it may not feel like much, given that you still have a long way to go in this course. But I wanted to call this out right upfront because it’ll help you better understand the road ahead. If you’ve never had any hands-on experience with cloud before, it’s now time to build one. I want you to start with Microsoft Azure. You will learn how to create azure windows virtual machine with free subscription. Good luck!