The spectrum of abstraction with cloud services and simulation software
July 3, 2022
Cloud computing has made data center-grade hardware accessible to pretty much any business. No matter how large or small, any organization can now use the computing resources of companies like AWS or Google to accelerate their IT workflows. Furthermore, cloud computing resources are available at different tiers of abstraction, ranging from customizable low-level infrastructure to cloud applications that are ready for use immediately.
“Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., 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.”
– Mell and Grance (2011)
The points from above also apply to simulation because many vendors now offer simulation software in the cloud. And just like with cloud vs in-house computing, businesses need to choose between on-premises and cloud software when looking for a simulation solution.
With that in mind, it’s important to understand the basics of hardware abstraction in cloud services when considering the cloud or the on-premises model. This blog post will look at abstraction levels in cloud services and simulation software to help businesses make more informed decisions.
The four abstraction levels of cloud computing
What does abstraction actually mean? Abstraction was defined by Basu, et al. (2020, p. 914) as “a means of hiding complexity and building something large by putting together collections of smaller parts.”
Regardless of the level of abstraction, cloud computing services provide the same primary benefit – they allow businesses to outsource a certain portion of their compute requirements to a third party. What differs between the abstraction tiers is the extent to which they abstract hardware and software resources from customers (Ezeamuzie, et al., 2021).
Below, we’ll have a look at the three main cloud computing abstraction levels (or models) – IaaS, PaaS, and SaaS – as well as XaaS, which is an umbrella model that incorporates the other three (IBM Cloud Education, Sept 2 2021).
Infrastructure-as-a-Service, or IaaS, is the lowest level of abstraction for cloud services. IaaS provides computing infrastructure hosted in the cloud by a cloud provider. This cloud computing infrastructure typically offers:
- Computing hardware like CPUs (central processing units) or GPUs (graphics processing units).
- Storage and memory.
- High-speed network resources.
These components are distributed across the servers that are hosted by IaaS providers. The servers can be either shared or dedicated – more about their differences below.
Shared servers. These servers are shared between several customers. The compute resources used by different customers are isolated from each other through virtualization. Each customer receives their portion of the server’s computing resources in the form of a virtual machine.
Dedicated servers. Dedicated servers are unshared and provide their entire compute resources to only one customer. The customer is free to use the server as a single compute unit in their workflows, or they can use virtual machines to distribute the server’s resources between several independent tasks.
Uses and examples of IaaS
Businesses can use IaaS for the same purposes they would use on-premises data centers. IaaS and on-premises infrastructures are functionally the same, with the main difference being that businesses don’t have to manage IaaS compute resources themselves.
“IaaS leverages significant technology, services, and data center investments to deliver IT as a service to customers. Unlike traditional outsourcing, which requires extensive due diligence, negotiations ad infinitum, and complex, lengthy contract vehicles, IaaS is centered around a model of service delivery that provisions a predefined, standardized infrastructure specifically optimized for the customer’s applications.”
– Rittinghouse and Ransome, 2017, p.34
Because IaaS provides the most significant degree of control over cloud infrastructure, it has the broadest range of use cases of all abstraction levels. The use cases of IaaS include but are not limited to the following:
- Software testing and development.
- Data backups and disaster recovery.
- Training and hosting of machine learning and deep learning models.
- Hosting complex and highly customized websites and applications.
- Running self-hosted simulation software.
To adapt IaaS solutions to their needs, businesses can install their selected operating systems, programming frameworks, and software on their cloud infrastructure. Businesses can often break down their cloud compute resources into virtual machines.
IaaS platforms can be general-purpose, or they can be tailored to very specific needs. For example, Google Cloud Compute A2 has extra GPU power and is specifically designed for applications that require immense GPU resources, like machine learning or rendering. In contrast, general-purpose cloud infrastructure, like Amazon EC2, can be used for anything but doesn’t excel at any specific use case.
Platform-as-a-Service, or PaaS, is the next level of abstraction in cloud services. PaaS is intended to help businesses develop, test, deploy, and manage web applications. One could view PaaS as a very specialized type of IaaS that is specifically designed for application development and deployment.
How does PaaS differ from IaaS in practice?
The infrastructure that powers PaaS and IaaS can be the same, but what differs is that PaaS comes with a preinstalled set of frameworks and software to simplify application development. If we go into the specifics, here are some of the components that PaaS adds on top of IaaS:
- Operating systems.
- Development and analytics tools.
Uses and examples of PaaS
Businesses can use PaaS services to build applications of any kind, including but not limited to:
- Customer-facing web apps.
- Applications for internal business use.
- Containerized applications.
“The PaaS model makes all of the facilities required to support the complete life cycle of building and delivering web applications and services entirely available from the Internet, all with no software downloads or installation for developers, IT managers, or end users. Unlike the IaaS model, where developers may create a specific operating system instance with homegrown applications running, PaaS developers are concerned only with web-based development and generally do not care what operating system is used. PaaS services allow users to focus on innovation rather than complex infrastructure.”
– Rittinghouse and Ransome, 2017, p.48
With that said, different PaaS solutions can support different frameworks and classes of apps. As an example, Engine Yard is designed to simplify app deployment to AWS and only supports Ruby on Rails, PHP, and Node.js. In contrast, Google Cloud App Engine and AWS Elastic Beanstalk, support Java, .NET, Python, C#, and Node.js.
Businesses should use PaaS instead of IaaS whenever they need cloud infrastructure specifically to build cloud-based applications. While PaaS isn’t as flexible as IaaS, it allows businesses to get started without having to consider configuring their cloud infrastructure for application development.
Software-as-a-Service, or SaaS, is the highest level of abstraction in cloud services. SaaS abstracts away all the infrastructure details and provides businesses with cloud-based applications that are ready for use out of the box. So unlike PaaS, which is designed to simplify app development, SaaS provides off-the-shelf applications and services for businesses that need them quickly.
SaaS solutions are very similar to software that businesses can deploy on-premises. The main difference is that SaaS is hosted in the data centers of the cloud service provider.
Uses and examples of SaaS
SaaS solutions exist in a vast array of industries, meaning that businesses can use them to carry out pretty much any of their functions. Some examples of SaaS platforms include the following:
- Video conferencing: Zoom, Cisco WebEx, LogMeIn GoToMeeting.
- Online collaboration: Slack, Microsoft Teams, Asana, Trello.
- Cloud storage: Google Drive, Microsoft OneDrive, Dropbox.
- CI/CD: GitHub Actions, GitLab, Travis CI.
“SaaS is most often implemented to provide business software functionality to enterprise customers at a low cost while allowing those customers to obtain the same benefits of commercially licensed, internally operated software without the associated complexity of installation, management, support, licensing, and high initial cost. [It is] a software distribution model in which applications are hosted by a vendor or service provider and made available to customers over a network, typically the Internet. …SaaS is also often associated with a pay-as-you-go subscription licensing model.”
– Rittinghouse and Ransome, 2017, p. 50-51
Some SaaS solutions also include entire suites of smaller SaaS applications. For example, Google Workspace (formerly G Suite) includes Gmail, Drive, Meet, Calendar, and other SaaS apps for business uses.
SaaS applications are typically designed for a broad range of use cases and may not excel at anything specific. Businesses with very particular needs might be unable to find a SaaS solution that would fit their use cases and might have to resort to making their own applications with PaaS.
Businesses should use SaaS if they don’t need to build applications from scratch and just want a toolset that they can start using immediately. SaaS might also be the right choice for businesses that don’t want to bother with maintaining or scaling infrastructure. Small businesses that don’t have their own data center infrastructure can also immensely benefit from SaaS.
Everything-as-a-Service, or XaaS, incorporates the previous three levels of cloud abstraction. XaaS platforms offer products at every level of cloud abstraction, enabling businesses to take care of all their computing needs in one place.
XaaS as a concept isn’t as well-known or promoted as the other cloud service models. With that said, there are quite a few platforms out there that could be considered XaaS.
Uses and examples of XaaS
The use cases of XaaS combine the use cases of IaaS, PaaS, and SaaS. Depending on the platform, businesses can use XaaS to do basically everything from one dashboard.
“…five factors characteriz[e] successful XaaS models …: (i) asset ownership transfer, (ii) change of strategy from offering the best products to being a solutions provider, (iii) nanonization, or a focus on being lean by matching the customer’s utility attributes over time, and pricing based on nanonization, (iv) a culture of customer-centricity to create a cycle of continuous innovation, and (v) the judicious use of technology to enable value creation for the customer and the firm, along with the offering of personalized services.”
-- Bhattacharya and Bhattacharya, 2021, p. 5
AWS is one prominent platform that could be considered XaaS. AWS offers a very wide range of cloud solutions, ranging from bare infrastructure (EC2) to frameworks for fraud detection (Amazon Fraud Detector). AWS also includes several SaaS solutions, like the communication service Amazon Chime.
Companies like Microsoft and Google can be considered XaaS service providers too. While their platforms Azure and Google Cloud mostly focus on lower-level IaaS and PaaS cloud services, the companies have many SaaS solutions as well, like the ones we mentioned in the SaaS section.
The three abstraction levels of simulation software
The abstraction levels of cloud services can be to some extent applied to simulation software as well. Simulation software can be a part of IaaS, PaaS, or SaaS, so what we’ve discussed above also works with simulation.
That said, because simulation is a specific use case of IaaS, PaaS, and SaaS, we can expand a bit on its abstraction by covering more specific details. Simulation software can also be used outside the cloud, adding additional depth to its abstraction range. Subsequently, let’s look at the spectrum of abstraction of simulation software – both offline and in the cloud.
Custom simulation software
The lowest level of abstraction for simulation software is custom code. At this level, teams write their own simulation software using programming languages like Python, Rust, R, or some combination thereof. Researchers can build simulation routines completely from scratch, or they can mix up custom code with functions from statistical frameworks.
As far as deployment is concerned, researchers can host their simulation routines in-house or in the cloud. For cloud deployment, they can choose between IaaS and PaaS services. PaaS might be the best choice for cloud deployment for many businesses because it abstracts away the setup of infrastructure.
The benefits of custom simulation software
The main benefit of custom code is that simulation teams get full control of their simulation workflows. Everything starting from variables and functions and ending with data input pipelines is tightly controlled and can be adjusted in any way that the simulation engineers see fit.
Simulation teams retain control over their data if the code is deployed on-premises rather than in the cloud. This can be especially beneficial with sensitive data that must be kept private. Besides, simulation teams don’t have to rely on third parties to ensure the security of their data.
The disadvantages of custom simulation software
The biggest disadvantage of custom code is that it takes time to plan and develop software. Teams can use statistical frameworks to accelerate development somewhat but building a custom simulation application from zero will always take some time. And depending on the scope of the project and the efficiency of internal collaboration, the development time can vary considerably.
Another serious issue is that simulation teams will need to validate their code to ensure that it produces correct and reliable results. Third-party frameworks or packages – especially ones that are open-source – can be vetted by hundreds of industry professionals, which typically enables high quality. An in-house simulation solution that is not meant to go public cannot have the same degree of vetting. Simulation teams will therefore have to test their simulation code for correctness and security on their own.
Finally, teams will need to deploy and scale their simulation code themselves. The simulation team will need to write optimized and scalable code from the beginning to make deployment and future growth easy. Although if the code is deployed on an IaaS or PaaS platform, deployment and scalability could be greatly simplified.
Use cases of custom simulation software
Keeping the advantages and disadvantages of custom simulation software in mind, simulation teams should write simulations from scratch if they want to get a highly customized toolset. If there is no off-the-shelf software package out there that can do what the simulation team needs, then custom simulation code is the way to go.
Off-the-shelf simulation software for in-house deployment
The next level of abstraction is off-the-shelf simulation software that is designed to operate on-premises. This is software that’s been developed and is maintained by a third party but needs to be deployed locally.
The benefits of off-the-shelf, on-premises simulation software
The main benefit of off-the-shelf simulation software over custom code is that it allows teams to start simulating much quicker. There’s no need to write simulation routines from scratch – everything has been done by the software vendor already.
Additionally, off-the-shelf software can be built with scalability in mind from the get-go, and it might also be designed for specific production environments. So, unlike custom code, off-the-shelf simulation software can be easier to deploy and scale as a team’s simulation needs grow.
Finally, even though a third party makes the software, simulation teams can maintain some degree of independence from the vendor. More specifically, because the software is deployed on-premises, there is no dependence on the vendor’s uptime and data center reliability. Teams can retain control over their data as well.
The disadvantages of off-the-shelf on-premises simulation software
For obvious reasons, off-the-shelf simulation software isn’t as flexible as custom code. Off-the-shelf software can also somewhat limit the freedom of simulation teams. More precisely, off-the-shelf software can lack features or result in vendor lock-in where teams must stick to the vendor of their simulation software for add-ons.
Concomitantly, another thing to keep in mind is that simulation teams can retain control over their data; they need to make sure that the simulation software doesn’t secretly collect or analyze it. The vendor’s terms of service and privacy policies should outline the allowed uses of the data, but teams shouldn’t rule out the possibility of shady practices.
Use cases of off-the-shelf on-premises simulation software
Off-the-shelf simulation software is a good middle-ground for teams that don’t want to write their own code but want to keep all their simulation workflows in-house. This type of simulation software is ready for use from the get-go and allows businesses to maintain a good degree of control over their simulation processes.
SaaS simulation software
The highest level of abstraction for simulation software is SaaS. SaaS simulation solutions are like off-the-shelf software but are hosted in the data center of the software’s vendor. So not only does SaaS simulation software provide teams with a solution that’s ready to go out of the box, but it also abstracts away deployment and scaling.
Examples of SaaS simulation software include:
- Software Delivery Simulator.
- SOLIDWORKS 3DEXPERIENCE Works.
- OnScale Lab and Solve.
- AnyLogic Cloud.
The benefits of SaaS simulation software
The biggest benefit of SaaS simulation software is that it’s extremely easy to deploy. Once the team purchases a subscription, they can access the software from their web browsers or desktop clients and run simulations pretty much immediately. The software is already deployed in the vendor’s data center, so there are no extra steps that teams need to do to get started. Besides, the simulation software can be accessed from any device that is connected to the internet.
Next, because SaaS software is hosted in the cloud, the management of data centers is completely outsourced to the simulation vendor. The vendor does infrastructure configuration, security, scaling, and maintenance. This means that simulation teams can start simulating without having any in-house compute infrastructure.
Furthermore, SaaS simulation software can be a very cost-effective way of getting into simulations. SaaS eliminates the costs of simulation software development and infrastructure management, which could help businesses save significant amounts of money and/or avoid upfront investment in in-house infrastructure.
The disadvantages of SaaS simulation software
SaaS simulation software offers the least degree of flexibility to simulation teams. This is especially important from the standpoint of vendor lock-in. For example, suppose a simulation team needs to integrate the simulation software with some third-party visualization tool one day. They might be stuck with whatever native integrations the vendor provides.
The reliance on the SaaS vendor can also be a serious issue in some instances. The simulation data’s security and service reliability are completely dependent on the vendor. Simulation teams can neither control nor improve the security and reliability of their vendor’s IT infrastructure, which might be a big issue with some service providers.
Use cases of SaaS simulation software
SaaS simulation software is the right choice for teams that want to outsource both the development and management of their simulation tools to a third party. SaaS software can be especially useful for small teams or startups that don’t have the budget to afford an in-house IT infrastructure.
In-house, IaaS, PaaS, SaaS – all these abstraction tiers have their pros and cons. There’s no one-size-fits-all solution. Even if we are talking about the all-encompassing XaaS, businesses using a XaaS service might need to choose between similar tools at different levels of abstraction.
SaaS simulation software is probably the best bet for most business use cases. It requires no deployment or updating, and a third party manages the infrastructure that it’s hosted on. SaaS simulation software also exists in various industries, like structural mechanics or software development. So, unless we are talking about specific needs, SaaS simulation tools can cover any use case.
A low-key, fundamental introduction to SASS simulation software is SimSaaS: simulation software-as-a-service (Tsai, et al., 2011, April). This paper:
- proposes a framework that incorporates key elements of SaaS features for simulation;
- suggests a design of a platform-independent configuration model to support multi-tenancy architecture (MTA);
- presents a simulation runtime infrastructure that supports MTA; and
- investigates a range of run-time analysis techniques that monitors, analyzes, and calibrates the simulation continuously.
Azure. (2022a). What is IaaS? Infrastructure as a service. Microsoft. https://azure.microsoft.com/en-us/overview/what-is-iaas/
Azure. (2022b). What is PaaS? Platform as a service. Microsoft. https://azure.microsoft.com/en-us/overview/what-is-paas/
Azure. (2022c). What is SaaS? Software as a service. Microsoft. https://azure.microsoft.com/en-us/overview/what-is-paas/what-is-saas/
Basu, S., Rutstein, D., Xu, Y., & Shear, L. (2020). A principled approach to designing a computational thinking practices assessment for early grades. In J. Zhang & M. Sherriff (Eds.), Proceedings of the 51st ACM Technical Symposium on Computer Science Education (pp. 912–918). ACM. https://doi.org/10.1145/3328778.3366849
Bhattacharya, S., & Bhattacharya, L. (2021). Xaas: Everything-as-a-service-The Lean And Agile Approach To Business Growth. World Scientific.
Bigelow, S. J. (2022). XaaS (Anything as a Service). TECHTARGET Network. https://www.techtarget.com/searchcloudcomputing/definition/XaaS-anything-as-a-service
Duò, M. (Apr 12, 2021). XaaS: The Anything as a Service Model (With 10 Example Categories). Kinsta. https://kinsta.com/blog/xaas/
Ezeamuzie, N. O., Leung, J. S., & Ting, F. S. (2021). Unleashing the Potential of Abstraction From Cloud of Computational Thinking: A Systematic Review of Literature. Journal of Educational Computing Research, 60(4) 877–905.
Fedak, V. (Apr 23 2018). What is the cloud pyramid: the layers of DevOps services. ITSVIT. https://itsvit.com/blog/what-is-the-cloud-pyramid-the-layers-of-devops-services/
Google Cloud. (n.d.). What is IaaS? Google. https://cloud.google.com/learn/what-is-iaas
IBM Cloud Education. (July 14 2021). PaaS (Platform-as-a-Service). IBM Cloud Learn Hub. https://www.ibm.com/cloud/learn/paas
IBM Cloud Education. (Sept 2 2021). IaaS versus PaaS versus SaaS. IBM Cloud Learn Hub. https://www.ibm.com/cloud/learn/iaas-paas-saas
Kavis, M. J. (2014). Architecting the cloud: design decisions for cloud computing service models (SaaS, PaaS, and IaaS). John Wiley & Sons.
Mell, P., & Grance, T. (2011). The NIST definition of cloud computing. Special Publication 800-145. National Institute of Standards and Technology.
Rittinghouse, J. W., & Ransome, J. F. (2017). Cloud computing: implementation, management, and security. CRC Press.
Sakovich, N. (2021). Everything-as-a-Service (XaaS): Definition and Examples. SaM SOLUTIONS.https://www.sam-solutions.com/blog/everything-as-a-service-xaas-definition-and-examples/
Salesforce. (2022). What is SaaS? Salesforce. https://www.salesforce.com/in/saas/
Tsai, W. T., Li, W., Sarjoughian, H., & Shao, Q. (2011, April). SimSaaS: simulation software-as-a-service. In Proceedings of the 44th Annual Simulation Symposium (pp. 77-86).