IaaS, CaaS, PaaS, FaaS: How Do You Choose?
With all the *as-a-Services out there, let's take a look at how each of them applies to your project and how they impact software development.
Join the DZone community and get the full member experience.Join For Free
In simple words, cloud computing is nothing but accessing services through the Internet.
Client -> Shopping Mall, Banking, Insurance, Health Care
Vendor -> Hardware, OS, Dev Envi, Databases, Application
Dev Co -> EnnVee, TechM, Wipro
The most common services available through the cloud are IaaS (Infra as a Service), SaaS (Software as a Service), PaaS (Platform as a Service), and in recent times, new services like CaaS (Communication as a service) and MaaS (Monitoring as a Service).
Platforms for Cloud Computing
A twist to customers, platforms in the cloud are making the delivery of application functionality even more interesting.
Increasingly, applications that run in the cloud are starting to look less like websites and more like platforms, meaning they are growing tech-wise and are starting to sprout APIs, code libraries, and even programming models.
Collectively, these new innovations in development technologies can be thought of as platforms to run the application in the cloud. Similar to traditional platforms, cloud computing platforms provide tools that allow developers to leverage and older functionality to create something new and match with that tool. However, because these platform tools are accessed freely over the Internet, rather than through an operating system or package that was installed on a local machine, developers don't need to worry about the logistics of putting together an executable that will be installed on a user's machine because everything is maintained in the cloud itself. Anyone with a web browser can access the app!
The possibilities presented by this type of platform service have emerged quickly, spurred on by the popularity of mash-ups — a website or application that combines tools from multiple cloud computing platforms without giving much complexity to the user to install extra software or tools in local machines to create new functionality.
Some cloud computing platform tools used in today's technology include innovations like Google's search API, which allows developers to use the power of that search engine in their applications,
eBay's APIs for submitting items for listings and auctions, and Amazon.com's system for creating entirely new storefronts and provides control service operation access.
For example, almost any real estate website or application these days uses a mapping service such as Google Maps under the hood which makes there business easy, illustrating how these eBay's, Amazon.com's APIs are now commonly running alongside the more traditional database, application server, or os platforms.
PaaS is the concept of accessing a platform on which applications built are provided as a service over the internet.
It's an environment where developers use programming tools offered by a service provider to create applications and deploy them in a cloud. The application is hosted as a service and provided to customers via the Internet. The PaaS vendor provides a well-developed API for creating and extending specialized applications. The PaaS vendor also takes responsibility for the daily maintenance, operation, and support of the deployed application and each customer's data. Examples include Force.com (the platform used by SalesForce) and Google App Engine.
PaaS providers abstract out most of having to deal with servers and give clients an environment in which operating system and servers, as well as hardware and infrastructure, are taken care of.
The business can requisition as they need them, scaling as demand grows, rather than investing in hardware and other resources.
Accessing infrastructure, such as application servers and storage server over the Internet, is called IaaS. Infrastructure-as-a-Service consists of highly automated and scalable compute resources, complemented by cloud storage and network capabilities that can be self-provisioned, metered, and available on-demand because of its lower maintenance.
Infrastructure-as-Service is the basic layer in the cloud computing model. Companies that provide IaaS include Digital Ocean, AWS, Microsoft Azure, and Rackspace
IaaS allows developers to create their own platform and software. It allows an organization to spin up additional resources quickly and efficiently without having to purchase physical hardware. Usually, this model is charged on a “pay-as-you-use” or “pay-as-you-grow” basis.
An application that is hosted as a service provided to customers across the Internet is called SaaS.
Whenever cost is a matter for an organization, they tend to reduce the cost of ownership by removing technical staff most likely to install, manage, and upgrade software, as well as reduce the cost of licensing software. SaaS comes with a subscription model as a counterbalance. SaaS comes with IaaS, but SaaS doesn't offer the flexibility of creating custom software like IaaS does.
In simple words, I want to highlight the differences between SaaS, PaaS, IaaS with some examples:
SaaS: For example, if you already built a website and now you want to host your website.
PaaS: When you're planning to build a website and you don't want to put much money into buying software like force.com, Anypoint Studio, etc. to develop — and if you think someone would rent you the software license for a certain period — then PaaS is the best option.
IaaS: Now say you want to build a website/application and you want the license of Anypoint Studio and also to make sure that the system on which you are working fulfills your computational capabilities. Assuming all that, then IaaS comes into the picture.
Functions-as-a-Service is a newer cloud computing service allowing to users to develop, maintain, and run code independently without any complexity of building infrastructure. It is associated with serverless computing architectures.
Types of functions:
Process a web HTTP request
Process an MQ message (queue)
Scheduling and processing queues
Manually running functions
FaaS platforms made available to the world for public use include:
Very high volume transactions: Isolate them and scale them.
Burstable workloads: If you only run something once a day or month, there's no need to pay for a server 24/7/365.
Scheduling tasks: They are a perfect way to run a certain piece of code on a schedule.
Communication-as-a-Service is a contract enterprise communications solution. Providers of this type of cloud-based solution are known as CaaS vendors. CaaS is responsible for the management of hardware and software required for delivering some telecommunication services and networking resources like Voice over IP (VoIP) services, Instant Messaging (IM),
and video conferencing capabilities to their customers. CaaS offerings guarantee QoS (Quality of Service) with well-defined SLAs. Also, CaaS solution includes redundant switching and circuit diversity.
Service Layer Architecture
Opinions expressed by DZone contributors are their own.