You may have heard the acronym BaaS, or "Backend as a Service." The basic idea is quite important: a REST API on the server side can provide database communication and hosting services for application developers. This reduces server side coding and enables smaller teams to build better applications with faster development schedules. There is a derivative acronym called mBaaS, or "Mobile Backend as a Service." Mobile devices definitely need RESTful services, so this is a more specialized version of BaaS. Unfortunately, in both cases, these terms have become associated with other ideas that make this simple value proposition hard to understand. As the mobile paradigm shift plays out we are either going to need to redefine these acronyms or drop them altogether.
What Does BaaS Have To Do With NoSQL?
The main proponents of the term BaaS were probably Kinvey, Parse, and Stackmob. Famously, Kinvey created an infographic of the "BaaS Landscape" and drew themselves in the middle of the diagram. These companies were often popular with consumer video game developers that needed somewhere to store high scores and a simple way to handle OAuth. They provided basic CRUD services for data, and in each case used a NoSQL database for storage, perhaps MongoDB or CouchDB. This made sense because their customers didn't have a legacy database or the need for structured data.
But in the world of enterprise software the vast majority of data is stored in SQL. For example, corporate information about accounts, contacts, and opportunities could be useful for a mobile application. The links between these objects are important. Contacts might be associated with a particular account, and opportunities might be associated with a particular contact. Companies need an easy way to connect Active Directory roles through a REST API to existing SQL roles and data. All things considered, SQL support is more important than NoSQL for mobile application development.
What Does BaaS Have To Do With SaaS?
Kinvey, Parse, and Stackmob are trying to move upstream and appeal to enterprise customers. But these guys are actually hosting the services. This is similar to a Software As A Service (SaaS) vendor. For example, Salesforce.com sells Customer Relationship Management (CRM) in the cloud. But unlike Salesforce, BaaS is an infrastructural capability, not a departmental application. And unlike Salesforce, these BaaS players don't have a world class data center and billions of marketing dollars to gain enterprise trust.
This is where the BaaS story starts to diverge from reality. Enterprise customers won't store important corporate information at a startup company. And so Kinvey announces that they have a "ring-fenced and fully managed instance of their platform" for enterprise customers. By the way, "ring-fenced" is not an actual technical term for anything. Meanwhile Appcelerator touts "virtual private enterprise mBaaS." And so they are left with important but embarrassing questions: who has access to the data? where is your data center? what is your disaster recovery plan? why don't you have a SAS 70 Type II certification?
Let's Get Serious About BaaS
This is why we provide the DreamFactory Services Platform (DSP) as an open source software package available for download in the cloud marketplaces for Amazon, Azure, BitNami, and VMware. We also have installers for most Linux operating systems including Redhat, CentOS, Debian, and Ubuntu. This allows enterprise customers to install DreamFactory on premises or in the cloud and use their existing deployment, backup, management, and security policies.
Instead of hosting the data, DreamFactory can create a secure connections to an existing database. We can hook up any legacy SQL database and expose a comprehensive palette of RESTful services for CRUD and metadata access. You can even work with SQL data and related objects in a JSON document, much like NoSQL. And by the way, we support almost every kind of NoSQL database as well. The security capabilities we layer on top of this are too extensive to cover here.
So as you can see, the BaaS acronym is problematic for us over here at DreamFactory Software. As a value proposition, we love it: developers can build applications faster than ever with all the services they need for mobile application development. But the association of BaaS with NoSQL and SaaS hosting is just confusing and unnecessary at this point. We prefer the term "service platform" or "backend services" to explain what we do.