Cloud computing models deep dive
Published: 2024-04-04 10:14:12

Cloud computing allows organizations to focus on their core business and leave unwanted work
like IT infrastructure capacity planning, procurement, and maintenance to cloud providers.

As cloud computing has grown exponentially in recent years, different models and strategies have surfaced to help meet the specific needs of organizations as per their user base. Each type
of cloud computing model provides you with additional flexibility and management.
There are many ways to classify cloud services, and understanding the differences between them helps you decide what set of services is suitable for your application workload. In this section, we will cover a common classification. Cloud services can be categorized as follows:
- Infrastructure as a Service (IaaS)
- Platform as a Service (PaaS)
- Software as a Service (SaaS)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bmpdu4gg1mdx9zfc2qr1.png)


**Understanding IaaS**

Cloud infrastructure services, also known as IaaS, comprise highly flexible, fault-tolerant compute and storage resources. IaaS provides access, complete management, and monitoring of compute, storage, networking, and other miscellaneous services. IaaS enables enterprises to use resources on an as-needed basis, so they don’t need to purchase equipment.

IaaS leverages virtualization technology. AWS allows you to quickly provision hardware through the AWS console using the Command-Line Interface (CLI) or an API, among other methods. By using an IaaS platform, a business can provide a whole host of resources and functionality with its current infrastructure without the headache of physically maintaining it. 

From a user perspective, they need to be aware that the backend services are being provided by an IaaS platform instead of a company-owned data center.

When using the IaaS solution, you are responsible for managing more aspects of the stack, such as applications, runtime, operating systems, middleware, and data.
However, in these cases, AWS will manage servers, hard drives, networking, virtualization, databases, and file storage.


In the IaaS model, you have maximum control, which means you can achieve the required flexibility as per your application’s needs. 
- It offers the most flexibility of all the cloud models.
- Provisioning of compute, storage, and networking resources can be done quickly.
- Resources can be used for a few minutes, hours, or days.
- Complete control of the infrastructure.
- Highly scalable and fault-tolerant.


In the IaaS model, having more control means putting additional effort into maintaining, monitoring, and scaling infrastructure. However, there are disadvantages to the IaaS model, some of which, such as data encryption and security issues, vendor lock-in, potential cost overruns, and configuration issues, are also applicable to SaaS and PaaS solutions. More specifically, the disadvantages of IaaS include the following:
• **Security**: In this case, customers have much more control over the stack, and for this reason, it is highly critical that they have a comprehensive plan in place for security. Since
customers manage applications, data, middleware, and the operating system, there are possible security threats, such as if certain ports are left open, and intruders guess which ports are open. Attacks from insiders with unauthorized access and system vulnerabilities can expose data between the backend servers and VMs from nefarious sources.
• **Legacy systems**: While customers can migrate legacy applications into AWS, the older hardware may need help to provide the needed functionality to secure the legacy applications. Modifications to older applications may be required, potentially creating new security issues unless the application is thoroughly tested for new security vulnerabilities.
• **Training costs**: As with any new technology, training may be needed for the customer’s staff to get familiar with the new infrastructure. The customer is ultimately responsible for securing their data and resources, computer backups, and business continuity. With this training, it may be easier to secure the necessary staff to support and maintain the new infrastructure.

Some of the most common instances when IaaS is used are as follows:
- Backups and snapshots
- Disaster recovery
- Web hosting
- Software development environments
- Data analytics

These are a few of the IaaS services offered by AWS:
- **Elastic Compute Cloud (EC2)**: One of the most popular services in AWS. EC2 is essentially a server on the cloud.
- **Elastic Block Storage (EBS)**: Amazon EBS is block-level storage, like a SAN (Storage Area Network) drive on the cloud.
- **Elastic File Storage (EFS)**: Amazon EFS is file-level storage, like a NAS (Network Attached Storage) drive on the cloud.
- **Virtual Private Cloud (VPC)**: This offers a logically isolated, fully customizable virtual network that you can use to define and launch AWS resources and to secure and monitor connections... and many more.



**Understanding SaaS**

SaaS, or cloud application services, are services where the cloud provider does most of the heavy lifting (in this case, AWS). You will not have to install software or worry about the operating system or software patches for SaaS. Your focus will be on customizing the application’s business logic and supporting your users. 

Most SaaS systems will only need browser access as most of the computation will be done on the cloud side. SaaS eliminates the need for your staff to visit individuals’ devices regarding software installation. Cloud providers such as AWS are fully responsible for any issues on the server, middleware, operating system, and storage levels.

These are the clues that will help determine if a service is SaaS:
- It is managed by the vendor (such as AWS).
- It is hosted on a third-party server.
- It can be accessed over the internet.
- AWS manages applications, infrastructure, operating systems, software patches, and updates.

SaaS has several advantages:
- Reducing the time, money, and effort spent on repetitive tasks
- Shifting the responsibility for installing, patching, configuring, and upgrading software across the service to a third party
- Allowing you to focus on the tasks that require more personalized attention, such as providing customer service to your user base

A SaaS solution allows you to get up and running efficiently. This option, versus the other two solutions, requires the least effort. This option enables companies big and small to launch services quickly and finish a project on time.

SaaS solutions have some limitations as well:
- **Interoperability**: Interoperability with other services may be complex. For example, if you need integration with an on-premises application, it may be more complicated to perform this integration. Most likely, your on-premises installation uses a different interface, complicating the integration. Your on-premises environment is an assortment of technology from different vendors, making it challenging to integrate. In contrast, before
you spin up your first service, AWS goes to great lengths and performs rigorous testing to ensure that services interoperate and integrate smoothly.
- **Customization**: The convenience of having a vendor such as AWS manage many things for you comes at a price. Opportunities for customization in a SaaS solution will not be as great as with other services that are further down in the stack. For example, an on-premises solution that offers complete control of all levels in the stack will allow full customization. In your on-premises environment, you install the patch if there is a requirement
to use a particular version of Linux with a specific security patch. In contrast, installing a particular version of Linux is impossible if you use AWS Lambda as your deployment environment. In fact, with AWS Lambda, the operating system being used under the covers is transparent to you.
- **Lack of control**: If your organization requires that you only use a particular approved version of an operating system, this may not be appropriate. For example, there might be a regulatory requirement requiring detailed testing approval of the underlying operating systems, and if the version is changed, a retest and approval are required. In this case, SaaS will most likely not be an acceptable solution. In a SaaS environment, you have
non-deterministic latency issues. In other words, controlling how long your processes will take requires a lot of work.
- **Limited features**: If the SaaS solution you are using does not offer a feature you require, you might only be able to use that feature if the SaaS vendor provides that feature in the future.


SaaS is best suited for scenarios when you want to use out-of-the-box applications without managing application code or IT infrastructure. You may choose a SaaS solution when you don’t
see a return on investment for building the platform due to a small number of users, or when you need in-house expertise. Some of the most common instances when SaaS is used are as follows:
- Payroll applications such as ADP
- Customer Relationship Management (CRM) solutions such as Salesforce
- Workplace collaboration solutions, including Zoom, Cisco Webex, Amazon Chime, Microsoft Teams, Slack, etc.
- Office management solutions such as Microsoft Office 365
- Workspace solutions, including Amazon WorkSpaces, Google Workspace, Microsoft Workspace, etc.

SaaS reduces the risk for organizations as all the application development and maintenance work is offloaded to vendors. Some of the services that AWS offers that could be classified as SaaS solutions are as follows:
- **Amazon Connect**
- **Amazon Workspace**
- **Amazon QuickSight**
- **Amazon Chime**

Many third-party vendors, including some that offer their services on AWS Marketplace, are SaaS solutions. There are multiple examples, but here are a few that decided to build their SaaS
offerings on AWS:
- **Splunk**
- **Sendbird**
- **Twilio**


**Understanding PaaS**

Any application where you are responsible for the maintenance of some of the software and some of the configuration data. More formally, Platform as a Service (PaaS) is a cloud computing service that supplies an environment to enable its users to develop, run, and manage data and applications without worrying about the complexity associated with provisioning, configuring, and maintaining the infrastructure. These complexities come in the IaaS model, where you are responsible for creating applications, including the servers, storage, and networking equipment.

PaaS enables developers to design and create applications while operating at a very high level of abstraction and focusing primarily on business rules and user requirements. These applications, sometimes called middleware, can be highly scalable and available if developed appropriately.

Like SaaS, PaaS takes advantage of virtualization technology. Resources can be started or shutdown depending on demand. Additionally, AWS offers a wide selection of services to support
PaaS applications’ design, development, testing, and deployment, such as AWS Amplify to develop web and mobile apps.

Using PaaS provides many benefits, such as:
- Cost-effective and continuous development, testing, and deployment of applications, as you don’t need to manage the underlying infrastructure
- High availability and scalability
- Straightforward customization and configuration of an application
- Reduction in development effort and maintenance
- Security policy simplification and automation

PaaS solutions have some limitations as well:
- **Integrations**: Having multiple parties responsible for the technology stack creates complexity in how integrations must be performed when developing applications. That becomes particularly problematic when legacy services are on-premises and are not scheduled to be moved to the cloud soon. One of the reasons enterprises like to minimize the number of technology vendors is not to allow these vendors to be able to point fingers at
each other when something goes wrong. When something invariably goes wrong, enterprises know precisely who they must contact to fix the problem.
- **Data security**: The data will reside in a third-party environment when running applications using a PaaS solution. This poses concerns and risks. There might also be regulatory
requirements to be met to store data in a third-party environment. Customers might have policies that limit or prohibit the storage of data off-site. Using a PaaS approach to comply with
this regulation requires standing up full-fledged infrastructure mimicking your existing infrastructure in other locations.
- **Runtime issues**: PaaS solutions may not support the language and framework that your application may require. For example, if you need an old version of a Java runtime, you might not be able to use it because it may no longer be supported.
- **Legacy system customization**: Existing legacy applications and services might require more integration work. Instead, complex customization and configuration needs to be done for legacy applications to integrate with the PaaS service properly. The result might yield a non-trivial implementation that may minimize the value provided by your PaaS solution.
- **Operational limitations**: Even though you have control of some of the layers in the PaaS stack, other layers are controlled and maintained by AWS. If the AWS layers need to be customized, you have little or no control over these optimizations. For example, if you are required to use a particular operating system but your PaaS provider does not support it, you are stuck with choosing one from the list of available operating systems.

PaaS can be beneficial and critical to today’s enterprises’ success. Here are some examples of PaaS use cases:
- Business Process Management (BPM)
- Business Analytics/Intelligence (BI)
- Internet of Things (IoT)
- Databases
- API management and development
- Master Data Management (MDM)

Here are some examples of the most popular PaaS offerings in the AWS ecosystem:
- AWS Elastic Beanstalk
- Amazon RDS
- AWS Lambda
- Amazon Elastic Kubernetes Service (Amazon EKS)


**Choosing between SaaS, PaaS, and IaaS**

There are two main reasons why you should use IaaS or PaaS instead of SaaS:
- The use case requires a specific type of database or software not supported by the AWS SaaS solutions. For example, you may already have purchased Tableau licenses for your organization and built reports. So instead of using Amazon QuickSight as a SaaS BI platform, you can install Tableau in EC2 instances as an IaaS model.
- The total cost of ownership of running an application using PaaS or IaaS is significantly lower than the SaaS model. A specific example may be AWS Athena versus using Apache Presto directly. If you plan to run thousands of queries per day, with the current cost structure, some cloud users have found deploying Presto more cost-effective than using AWS Athena. Another option is to use Amazon Redshift as a PaaS model rather than Athena as a SaaS model cost-efficiently. It’s important to note that these cost calculations should be carried out using all relevant costs, including staffing and support costs, not just software costs.