Our API is getting a lot of traction these days. We enable our customers to perform lookups against our masterfile via a REST API. Recently, we've also started exposing our Master Data Management (MDM) capabilities via our REST API. This includes matching/linking, analysis, and consolidation functionality. A customer can send us their data, we will run a sophisticated set of fuzzy matching logic attempting to locate the healthcare entity in our universe (i.e. "match"). We can then compare the attributes supplied by our customers with those on the entity in our universe, and decide which are the most accurate attributes. (i.e. "consolidate") Once we have the consolidated record, we run analysis against that record to look for attributes that might trigger an audit.
I've always described this as a Software as a Service (SaaS) offering, but as we release more and more of our MDM capabilities via the REST API, it is beginning to feel more like Platform as a Serivce (PaaS). I say that because we allow our tenants/customers/clients to deploy logic (code) for consolidation and analytics. That code runs on our "platform".
That got me thinking about the differences between Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Back-end-as-a-Service (BaaS), and Software as a Service (SaaS). Let's first start with some descriptions. (all IMHO)
IaaS: This service is the alternative to racks, blades and metal. IaaS allows you to spin-up new virtual machines, provisioned with an operating system and potentially a framework. From there you are on your own. You need to deploy your own apps, etc. (BYOAC == Bring your own Application Container)
PaaS: This service provides an application container. You provide the application, potentially built with a provider's tools/libraries, then the service provisions everything below that. PaaS adds the application layer on top of IaaS. (BYOA == Bring your own Application)
SaaS: These services exposes specific business functionality via an interface. Consumers are typically consuming the services off-premise over the web. In most cases, SaaS refers to some form of web services and/or user interface. (Either no BYO, or BYOC == Bring your own Configuration)
BaaS: For me, there is a blurred line between BaaS and SaaS. From the examples I've seen, BaaS often refers to services consumed by mobile devices. Often, the backend composes a set of other services and allows the mobile application to offload much of the hard work. (user management, statistics, tracking, notifications, etc) But honestly, I'm not sure if it is the composition of services, the fact that they are consumed from mobile devices, or the type of services that distinguishes BaaS from SaaS. (ideas anyone?)
Of course, each one of these has pros/cons, and which one you select as the foundation for your development will depend highly on what you are building. I see it as a continuum:
The more flexibility you need, the more overhead you have to take on to build out the necessary infrastructure on top of the lower level services. In the end, you may likely have to blend of all of these.
We consume SaaS, build on PaaS (salesforce), leverage IaaS (AWS), and expose interfaces for both PaaS and SaaS!
Any which way you look at it, that's a lot of aaS!