In todays day and age one does not have the luxury to build applications, which have release cycles beyond few months leave apart years like before. One needs to be super agile and focus on your core expertise, leverage whatever one can use and release the app at the earliest. Sticking to the non-invented-here syndrome, just might be a recipe for disaster.
You imagine about an App idea, be it Mobile, Web, Gaming or Social App and most likely you will find it in one of the AppStore, if not most likely someone, somewhere in some garage or a big company is working on the same idea. Time to market is essential, releasing the app late might just loose its relevance in the market or catching up with competition might become a daunting task.
Developing a non-trivial App requires expertise at various layers of the architecture and platforms.
Device : iOS, Android, Windows 7/8, HTML5, J2ME for Mobile devices
Server Side : PHP, Ruby, Python, Java, Scala, Groovy, Closure, .Net, Node.js etc
Databases : RDBMS, NoSQL, Embedded etc.
Cloud Computing : IaaS – Infrastructure as a Service, Traditional Hosting, PaaS etc.
The developer also needs to have knowledge on setting up the right configuration for Firewall ports, Security, patches, high availability, Scalability, Performance etc.
System Monitoring & Management – The health of the backend servers and managing the servers and data (e.g. Backups), geographical redundancy etc.
For a developers the list activities to be done and skills required across platforms and layers of architecture might consume too much of their time since instead of focusing on their core features. Lot of time goes into non-core activities.
Developers eventually might think that their idea to see the light of the day might be quite far from what they had imagined.
Even if the developer is an expert, the sheer time and effort it will take to achieve this might be more than the time and budget they have.
- It might not be cost effective for them because taking up virtual machines with IaaS provider is quite expensive than one imagines and paying them even before your App is released in the market itself is something which might effect his total budget significantly.
- Development of server side logic requires different skills, different than Device technologies and might consume lot of time and effort.Even if one decides to develop in-house, which in turn might inflate the cost.
- For Service companies engaged in outsourced App development. The development is done by two separate teams, one doing development on the device/client and the other specializing on the server side. The device team is always dependent on the server team and they always end up fighting on the desired interface or their frequent changing. This dependency adds on to unnecessary pressures on time lines and team morale.
- Managing your servers and infrastructure for Non-Functional requirements is complex e.g. Scalability, Performance High Availability, Security etc. Also requires lot of time, effort and cost. Not to forget specialized skills especially for capacity planing, sizing and setting up the Physical Architecture.
What if some of the pain points illustrated above is taken care by an external service provider. Somebody whose bread and butter is to manage backend apps.
- Continuously keeps on adding new features and maintaing current ones with public interfaces which are versioned.
- Keeps the developer oblivious of the complexities of the deployment of the app on the cloud, server installation and its management.
- Offers out of the box features for most of the common cases.
- For the ones which requiers some custom logic gives an execution environment for custom code to be deployed and run on the backend server along with the existing servers.
- Provides native SDKs for all popular platform for device and web.
- Makes supporting more than one platform easier since the backend remains the same only the native SDKs, which have similar interface has to be changed.
- Provides a Management Console which allows access and management of all the data generated through the usage of the SDKs
Backend as a Service - BaaS comes to the rescue. It is a logical evolution of Platform as a Service – PaaS, which tries to solve the above pain points and more. BaaS is a layer which sits over PaaS. Most often it provides a REST based interface to all its services which can be accessed through native SDKs. A further more specific platform for Mobile development is Mobile Backend as a Service – MBaaS
- The developer just needs to add the respective native SDK library based on the technology in which he is developing, write few lines of code to integrate and voila
- Gets out of the box functionality from day one. No need to manage servers, spend time in writing boiler plate code
- Have flexibility to write custom code.
- No need to learn, hire or develop most of the server side functionality
- And with all of the above save time, effort and cost.
Backend as a Service is getting evolved everyday. Its also participating in the MEAP vision helping app developers to become successful which MEAP – Mobile Enterprise Application Platform a term coined by Gartner in their Gartner Magic Quadrant.
Applying the cliched 80-20 rule. Intention is to cover 80% of the features which one requiers on the server side for App development. For remaining 20% features, some BaaS Providers have started offering provision to run custom code on the cloud. One can even mash two or more APIs and carve out a higher level facade API.
Most Common services which the BaaS Providers offer are :
- User Management
- Push Notification
- Geo Spatial
Already Backend as a Service is being used by many developers across platforms. The pace at which it is evolving, it is surely a technology which one cannot ignore and to reckon with.