Cloud computing services are on the rise and keep evolving. But it can be complicated to keep up with all the new terms along with the differences in infrastructure deployment.
Knowing the full scope of opportunities provided by each cloud service model — as well as its pros and cons — is essential for choosing the right model for a specific product.
This article will be helpful for everyone who is interested in cloud services and virtualization, wants to know the differences between IaaS, PaaS, and SaaS, and how to pick the most suitable cloud service model for a certain project.
Cloud computing and a cloud computing stack
Cloud computing is a computing services delivery model that provides computer system resources like data storage and computing power on demand over the internet.
The core technology of any cloud computing service is virtualization. It allows us to fully separate the physical hardware layer from the provided service, removing any need for the customer to purchase and maintain physical hardware. At the same time, virtualization allows cloud vendors to efficiently use their own data centers and provide more computing power to customers as needed.
The National Institute of Standards and Technology (NIST) defines the following five characteristics of a cloud service:
In traditional on-premises models, platforms, infrastructure, and applications are built on top of each other to provide a functional environment where end users can perform their tasks. Cloud services, on the contrary, allow customers to choose how much of the traditional process they want to manage.
Virtualization technology allows us to deliver a number of cloud computing services, which can be roughly split into three big groups: infrastructure as a service (IaaS), platform as a service (PaaS), and software as a service (SaaS).
These three groups comprise the proverbial cloud computing stack. Let’s explore each of them closer.
- Infrastructure as a service (IaaS) — The service provider maintains the physical hardware (computing power) and provisions more computing resources as needed. The customer manages operating systems, middleware, and applications.
- Platform as a service (PaaS) — The service provider manages everything up to middleware, leaving application code and deployment to customers.
- Software as a service (SaaS) — The service provider manages everything including the final application, offering customers a ready solution. The customer only has to put data into the application to get the service they need.
Now, thanks to the rise of containerization technology, you can also see function as a service, or FaaS, which is defined as a separate implementation of serverless computing. FaaS is focused on the event-driven computing paradigm, meaning that application code or containers only run in response to events or requests.
With FaaS, you can literally deploy a function in the cloud and let it do its work whenever it’s needed by applications. However, in this article, we’ll only look at the IaaS, PaaS, and SaaS models.
Let’s break down the components that vendors and customers manage with each service model. In the image below, orange components are provided by a cloud computing vendor and green components are handled by customers.
In the image below, we show how responsibilities are divided between a cloud vendor (orange) and a customer (green) for each service model:
To better understand which model to choose between SaaS, PaaS, and IaaS, let’s take a closer look at the pros and cons of each.
Infrastructure as a service
Infrastructure as a service (IaaS) is scalable cloud computing infrastructure provided on demand through means of virtualization technology. The technologies and capabilities delivered by IaaS systems are similar to those offered by traditional data centers, only without the need for clients to physically maintain or manage servers.
IaaS cloud servers are usually provided through a dashboard or an API, allowing clients to have full control over the entire infrastructure. The most popular examples of IaaS products include Amazon Elastic Compute Cloud EC2, Microsoft Azure, Google Compute Engine, Rackspace, Linode, and DigitalOcean.
A IaaS service provides a number of advantages:
Lower infrastructure costs — Instead of buying infrastructure up front, IaaS allows customers to spread the spending over time. Moreover, you can save all additional expenses regarding hardware maintenance, including the cost of having dedicated personnel just to maintain hardware.
Security and reliability — By abstracting software from the physical infrastructure, you make that software much more secure and reliable. With the IaaS model, service vendors take care of hardware reliability and availability, physical security, and the impacts of software on the hardware.
Scalability — Computing resources are provisioned on demand and can easily be scaled as needed. This means you can not only increase service consumption but also decrease it when resources are no longer necessary, allowing you to use your money as effectively as possible.
However, implementing the IaaS model may also have some drawbacks:
Legal limitations — Regulations and legal issues can prevent certain types of data, such as financial information, from being hosted outside the country. So IaaS usage may be limited depending on the laws of the country where your organization operates.
Potential security flaws — Software security may be affected if a IaaS vendor doesn’t ensure their customers can’t access data deposited to storage assets by previous customers.
Possible issues with internet connectivity — Dependence on IaaS means that if a service provider ever goes offline, your infrastructure will go offline with it. However, such issues happen rarely and are quickly fixed.
Now, let’s explore when it’s best to choose the IaaS cloud computing model for software development.
When to choose IaaS
The IaaS model works great for companies that need to save money or experience spikes in demand for hardware resources. It allows smaller companies to grow without large upfront investments and quickly provision infrastructure without the need to invest huge sums of money. It also gives you the possibility to save money by scaling down existing physical infrastructure and transferring parts of it to the cloud.
Spikes in demand and the need for temporary infrastructure are probably the most obvious cases where IaaS will be extremely beneficial, allowing you to quickly provision additional resources and then scale them back.
From the service provider’s standpoint, IaaS is all about economies of scale. Multiple users share the same physical machine, allowing vendors to fully utilize resources of their data centers and maximize the return from every piece of hardware.
Platform as a service
Platform as a service (PaaS) can be defined as middleware provided on demand via the internet. PaaS solutions mainly target developers and software vendors, since they provide them with environments in which to develop, test, deploy, host, and maintain their applications.
The PaaS model allows companies to focus on creating and deploying applications without worrying about maintaining physical hardware, virtualization, operating systems, or middleware. It offers a complete set of programming tools and computing resources necessary to start working on your solution immediately.
PaaS platforms can be divided into several categories depending on their focus and distribution method. Here are a few examples of PaaS platforms:
- Public: Heroku
- Private: Apprenda, OpenShift, Cloud Foundry, AWS Lambda, AWS Elastic Beanstalk, IBM Cloud Kubernetes Service
- Hybrid: IBM Bluemix
- Open source: Google App Engine
- Rapid development: Mendix, Customer 360 Platform (formerly Force.com)
Software developers choose the PaaS model because of its multiple benefits.
Fully managed development environment – The service vendor manages the development environment and ensures that all data is backed up, allowing customers to focus on their development efforts.
Convenient tools – There’s no need to separately license, install, and maintain a set of tools for creating applications, as PaaS services already provide the necessary environment. Web-based tools allow developers to work from anywhere with a wide array of devices and middleware. This is especially convenient for geographically dispersed development teams.
Integration with other services – PaaS vendors introduce a single common standard through which developed software can easily be integrated with other services, either third-party or provided by the PaaS vendor.
Built-in scalability for deployed software – PaaS solutions usually offer built-in scalability for any software you create and deploy within them. Since middleware such as databases or message queues are provided by the platform itself, there’s no need to worry about scaling and backing it up.
Fast application development and delivery – Thanks to the ready-to-use environment, infrastructure, rich sets of tools, and built-in scalability opportunities, developers can create and deliver applications faster. This is especially valuable if a company needs to get products to market quickly.
When to choose PaaS
Many cloud companies embrace PaaS as a way to allow developers to integrate with their own proprietary software without leaving the company ecosystem. This helps companies create development communities around their products without going completely open source.
However, such practices also raise valid concerns about getting locked in to your current PaaS vendor. It’s extremely hard to migrate an application created with custom tools and integrated with a proprietary solution, making developers dependent on PaaS services staying up and providers staying in business.
Despite such concerns, PaaS solutions keep gaining popularity. Extensive collaboration tools, the ability to spread out costs over time, and the fact that there is no need to worry about setting up and managing middleware are what make developers use PaaS products.
Software as a service
Software as a service (SaaS) is a software delivery model where centrally hosted applications are made available on demand via the internet. SaaS applications are fully managed by a vendor, without the need for users to worry about their configuration and maintenance.
Software as a service has proved a popular choice for CRM, ERP, financial, tax, sales management, and other solutions. The most well-known examples of SaaS products include G Suite, Microsoft Office 365, Amazon Web Services, and Salesforce.
The SaaS model is convenient for customers since it ensures automatic updates and remote access from various devices, offers on-demand scalability, and provides pay-as-you-go or subscription pricing models.
Apart from customers, SaaS development has also gained popularity among developers. This delivery model has a set of advantages for developers beyond just meeting customer expectations.
- Gain a competitive advantage for standardized services – A convenient delivery model and lower prices can help developers get a competitive advantage when creating solutions where core functionality is standardized and barely differs from the competition (for example, email services).
- Build applications with extensive online features – Many applications rely on web access for a number of core features. In this case, it may be simpler and cheaper, in the long run, to simply move the whole application to the cloud.
- Provide extensive remote access – Cloud computing allows developers to easily make their apps available from any web browser at any time without needing to create separate versions for each platform.
- Save money on support – The SaaS delivery model ensures that every customer has the latest version of the software, freeing developers from the need to support legacy versions and ensuring that critical security patches are delivered automatically to every user.
- Customize applications per user or region – When an application is in the cloud, it’s easy for vendors to customize deployments for specific users or regions. The SaaS model also gives vendors an opportunity to run A/B tests and customize their applications to better meet regional restrictions or local preferences.
- Secure intellectual property – Users can’t steal and illegally distribute a SaaS product because they access it only via a web browser or application and don’t have access to its source code.
SaaS Development Lifecycle
What cloud computing model should you choose?
As you can see, each technology stack brings incremental advantages compared to the previous: a PaaS technology stack is easier to work with than IaaS, and SaaS is easier still. In summing up all the advantages, we can arrive at the following conclusions:
- Migrating to the cloud makes software available over the internet and across all devices and cuts the costs of hardware allocation and maintenance.
- IaaS takes control of virtualization management and gives software vendors the possibility to scale on demand.
- PaaS reduces the costs of platform management by taking care of setting up databases, middleware, and connectivity between separate components.
- SaaS gives you a functional application with rapid updates and fixes that you don’t need to maintain yourself.
So why do we even need IaaS when we can use PaaS to build new SaaS applications and not worry about the low-level implementation behind it? The answer is simple: one size does not fit all.
Let’s take a look at the most common use cases for each cloud computing model.
Different solutions may require different levels of control over the platform and infrastructure. Simple and straightforward software can be built using a SaaS platform even without developers, while complex technical solutions often require all three stacks at the same time.
You may need to use existing SaaS solutions, use PaaS solutions to build your own additional solutions, and still need to deploy complete clusters over separate EC2 instances of customers while maintaining your own internal infrastructure on some IaaS stack all at the same time.
Doing your best work means choosing the right stack for your goals and allowing your cloud service vendor to take care of the things you don’t need to manage yourself.
Cloud technologies offer lots of advantages for businesses of all shapes and sizes, allowing them to focus on software development and not worry about infrastructure management. Depending on the particularities of your project, you can choose the cloud service model that best suits your needs.
For instance, the IaaS model is a decent solution for companies that want to have their infrastructure properly managed by a third party and benefit from scalable on-demand computing services. PaaS vendors take on the responsibilities of hardware and middleware management, allowing developers to focus purely on their software. The SaaS model is perfect for rapidly creating standardized solutions and ecommerce software without spending time on server or software issues.
At Apriorit, we provide robust cloud solutions, taking care of providing strong architecture and focusing on each client’s business needs. Contact us to leverage cloud technology for your dream project.