A quick look at Cloud Computing
Cloud computing is the delivery of computing services like storage, software, databases, servers, network over the internet. The cloud computing model has drastically changed the way we approach computing services — things that were done, on premise and locally, can be handled remotely, across the internet.
The National Institute of Standards and Technology, NIST, defines Cloud Computing like this —
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources — networks, servers, storage, applications and services — that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models. — NIST
In this article, we take a deep dive into the three cloud service models — IaaS, PaaS, and SaaS — a look at what they are and a clear understanding of how they differ from each other and their relationships, as these models form a stack — they are built on top of another.
But first, Cloud Providers!
Access to cloud computing services by users and developers, is made possible by, you guessed it right — Cloud Service Providers like Amazon Web Services, Google Cloud Platform, Digital Ocean, and Microsoft Azure.
These cloud providers provide the underlying “infrastructure” like — hardware and software — upon which users can access a vast pool of computing resources through a web browser, and eliminate burdens like cost of buying hardware and software, setting up data-centers, which users would have gone through in providing traditional IT services.
The pricing model employed by cloud providers is the pay as you use model — liken to the pricing model for utilities like electricity. Users only pay for what they use and/or consume. And what’s more? Cloud providers provide a vast array of computing resources which makes scaling a possibility — one can deliver IT services at an increasing scale or a lower scale if there is a drop in the demand for one’s services.
A look at the three cloud computing service models — IaaS, PaaS and SaaS
At the most basic level, cloud computing services is broken into three models — Infrastructure as a Service — IaaS, Platform as a Service — PaaS, and Software as a Service — SaaS. And they are intertwined — as they form a stack, one laying on top another.
Infrastructure as a Service — IaaS
IaaS is one of the cloud service models that is hinged on the provisioning of on-demand computing resources like virtual hardware — Virtual Machines VMs, Storage, Network, Load Balancers — by cloud service providers, enabling users like system administrators to install software like operating systems, servers, databases, which creates the way for the building and deployment of web applications.
Cloud providers maintain the computing infrastructure in traditional data centers and make use of hypervisor — a process that creates and run Virtual Machines — like VMware and Hyper-V in providing IaaS to users. IaaS is the foundation upon which all other cloud services like PaaS and SaaS is built.
IaaS is most suitable for large organizations, businesses or users with system administrators.
How Does IaaS Work?
IaaS, can be accessed via the internet using a browser and other internet enabled channels. Users can then install applications that they need for their business or development needs. A user can create a Virtual Machine, install the needed Operating System on the VM, create a database, run backups, and all other apps on top the VM.
Use case Scenario for IaaS
- Storage — With IaaS, storage of high demand and growth of data for business, become seamless, as organizations won’t have to bother about the high cost of physical computing resources. They only pay for the usage of the resources which is consumed over the cloud service.
- Web development, testing and hosting — All the team need for this is the installation of the tools on top of the VMs, to kick-start development of web apps, testing and hosting/deployment. So with IaaS, CI/CD becomes a seamless process.
- Web applications — IaaS provides massive support for development of web apps — servers, databases, networking resources. There is also the ease of scaling infrastructure, up or down, depending on the demands of the web application.
- Access to super high performance computing resource, which can solve some complex problems.
Pros for IaaS
- Reduction in the cost setting up an on-premise datacenter for small businesses and startups, as they won’t have to bother about buying and supporting the underlying infrastructure.
- It helps in managing of unpredictable spikes in web apps demands.
- Pay as you use pricing model — bringing in to place the same model that is liken to the consumption of utility.
A brief look at Some IaaS Providers
- Amazon EC2—Amazon Elastic Compute Cloud
EC2 is a web service that provides secure, compute capacity in the cloud. Suitable for developers to ease web-scale cloud computing. EC2 shortens the time required to spin up server instances, and aids the scaling of capacity, whether up or down, based on your computing needs. Developers only pay for capacity that is used.
- Google Compute Engine — Gives developers the ability to create and run Virtual Machines on Google’s infrastructure. It provides scale, performance, and value that makes it possible for developers to launch large compute clusters on Google infrastructure.
- Microsoft Azure Virtual Machine — Azure gives users access to a wide range of computing solutions with support for Linux, Windows Server, Oracle, IBM, and more. It offers Virtual Machines including load balancing and auto-scaling at no cost. Azure offers two payment options — Pay as you go and Reserved Virtual Machine Instances.
- Digital Ocean — Easily create compute servers, deploy and scale applications in the cloud using Digital Ocean’s infrastructure.
- OpenStack — Is an open source software for creating private and public clouds. OpenStack software manage large pools of compute, storage, and networking resources throughout a datacenter, via a dashboard or the OpenStack API.
Platform as a Service — PaaS
Platform as a Service — PaaS is a cloud service model focus on the provision of resources like servers, storage, and networks on the public cloud for developers to build, run, and manage applications.
PaaS is hosted on infrastructure provided by the service provider.
While IaaS provides the Infrastructure for virtual hardware and virtual machines upon which applications can be installed, PaaS provide the enabling environment for which the management and usage of the installed applications can be used.
Features of PaaS
- It is built on the foundation of IaaS. With virtualization at its core, making it easy to scale as business needs changes.
- Provides developers with a pipeline for the development, testing, deployment, and delivery of apps.
- Easy integration of web and database services.
Use Case Scenario for PaaS
Perhaps the major use case for Paas in apps development — Paas provide a platform that developers can leverage to develop and deploy applications using the cloud.
Pros of PaaS
- PaaS makes it easy for developers to focus on their core responsibility —building, development, and delivering of applications.
- PaaS is an enabler for the development of cross platform applications. How? The tooling is already provided on the PaaS.
- Faster development of application — With the provision of built-in development tools on the PaaS platform, there is a faster development time for developers, as there is a cut in time it takes to code new applications.
- The pay as you go model, makes it possible for organizations and developers to access a vast array of software development and business tools which they probably won’t have been able to afford.
- Support for complete software development lifecycle — building, testing, deployment, managing, and updates.
A brief look at Some PaaS Providers
- AWS Lambda — It allows developers to run code without provisioning or managing servers. Users only pay for the compute time that they consume.
- AWS Elastic Beanstalk — Used for deploying and scaling web apps and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker on servers like Apache, Nginx, Passenger and IIS. Developers pay for the AWS resources needed to store and run the applications.
- Microsoft Azure App Services — Azure app services make it easy to build, deploy and scale apps on a fully managed platform.
- Google App Engine — Makes it easy for developers to develop apps using their favorite languages, libraries and frameworks.
- Heroku — Heroku is hinged on a managed container system, with integrated data services, and a strong ecosystem, for deploying and running apps.
- OpenShift — Red Hat’s OpenShift is a containerized PaaS that allows developer to focus on writing codes, while OpenShift build, run, and scale the apps in the cloud.
Software as a Service — SaaS
SaaS is the delivery of a completely managed application over the internet by cloud service providers to enable end-users use these applications without bothering about the installation of the software.
Users only pay for the usage of these services on a pay as you go basis or through subscription.
In SaaS, users are concerned about how they use the software. For example, when you make use of the email, you don’t bother above the infrastructure on which the email service is being provided, or the platform on which the mail server is hosted. You are also bothered about the delivery of mails sent and recipient of the mails.
Use Case Scenario of SaaS
Have you ever sent or received a e-mail? Used Google photos to save your images on your phone device, so you can access it using you Google account? What about using online office tools to carry out tasks like word processing, spreadsheet, using Microsoft Office 365? If your answer to any of these questions is yes, then you have used SaaS.
RunCloud is SaaS based startup that allows developers to focus on their core responsibility – developing apps, while it takes care of the setting up, configuring, managing, and monitoring the applications on a cloud hosting service as Digital Ocean.
These are use case scenario of using SaaS. And the big connection in the use case of SaaS is the accessing and delivery of these services over the internet.
Pros of SaaS
- No need bothering about installation, management, set up and configuration of software. These are all handle by the SaaS provider.
- Users pay for what they use or through a subscription payment plan
- App is accessed most times through the browser.
- No special expertise is needed to consume apps delivered Software as a Service.
- Ease of accessing of data from any remote location. Think of Google photos — images stored on the app, can be accessed from any device in the world, by simply logging to the app. So even if the device is stolen, data can be still be accessed as it is stored in the cloud.
A brief look at Some SaaS Providers
- Salesforce — Salesforce offers a suite of web-based CRM applications.
- G Suite — G suite is a collection of secure, cloud-native collaboration and productivity apps like Gmail, Google docs, calendar, and Drive provided by Google.
- RunCloud — A SaaS startup that helps developers set up, configure, manage and monitor their apps on a cloud hosting platform. RunCloud currently supports PHP and WordPress applications.
- Microsoft Office 365 — Microsoft provides access to its suite of office tools like Outlook, OneDrive for cloud storage, Word, and Excel, over the internet.
The major decision you make when faced with making a choice on what cloud service model — IaaS, PaaS, or SaaS — to adopt should be based on two things — responsibility and control. You can take a quick look at the diagram below which classifies the different types of cloud services model and their various levels of control.
By responsibility, we are saying what do you hope to achieve with the service model — do you want to install servers and/or operating systems on top an infrastructure, or do you want to build and deploy apps, or are you just concerned about using a service that is already available across the internet?
By control, we are saying to what extent, do you wish to give the control and flexibility of usage to the cloud provider?