Gone are the days when app developers would develop their own backend system for their apps. Backend-as-a-Service or commonly known as BaaS came into existence a long time ago and has been the preferred way for app development across the world. It’s not just the indie developers or startups who are using BaaS service providers but even the large enterprises who have started to go for agile and incremental digital transformation have implemented BaaS in their omnichannel app development strategy.
With Backend-as-a-Service, developers get to focus more on their app functionality and user experience rather than spending time, money, and effort on developing and maintaining the backend. Most apps are being developed along with the supporting, or employee or partner apps and their update release cycle needs to short and the new features have to be rolled our frequently in order to handle rising customer expectations. If you’re still contemplating using BaaS, there may be questions and decision data points that you might have to consider before deciding on whether to got BaaS or not. Listed below are some of the points, which might help you to decide objectively. These points may also help you to decide on which BaaS Service Provider is right for your needs:
1. Time to Market
The rate at which new apps are coming into the market is phenomenal. If you try to depict the number of apps coming out on the market in the last few years on a chart, it will surely look like a “Hockey Stick”. Apps today have to be developed in record time. In today’s day and age, if an app takes more than a few weeks or months to launch, it might be just too late. Even after you have released your app and it has got the first mover advantage, new updates have to be released in the shortest possible time to stay ahead of the competition. New apps are mushrooming from all over the world on a daily basis. If you happen to search for chess on any of the app stores, you will find 100s of Chess apps. You think of an app idea and most likely there will already be an app for that idea, if not more.
If somehow with the app development and deployment time being reduced, the cost of IaaS resources can be optimized, it will make a huge impact on the Time To Market and savings. Backend-as-a-Service drastically reduces the server side development time because of the out of the box functionality it provides. In some cases, one might not need to write even a single line of code at the backend because of the available rich services being provided.
Some BaaS providers also provide custom cloud code deployment which enables app developers to write their own API without the need to buy and maintain servers. Custom Code on the cloud can help them to write their own API which is not supported by the BaaS provider or mash APIs at the backend so that they don’t have to make too many calls on the backend.
2. Savings in Time and Cost
Developing, buying cloud resources, managing and monitoring, all of this make working on the backend as an expensive proposition. Let’s try to dig a little deeper into each of these sections, though some of the points here qualify for a separate section but I’ll try to cover them here itself because of their strong inter-dependency.
Development: Resources have to be hired that have the requisite skill set to develop scalable server side code. The sheer time which it takes to develop even small features increases the development cost, for example, let’s take User Management, which is a pretty straightforward module. One needs to support authentication, authorization, role management, duplicate, expiration, locking of a user, ACL – Access Control List, User Analytics etc. Such a straightforward requirement takes a lot of time and money to develop. Not to forget the challenges to manage scale if your app suddenly becomes an overnight success.
Cloud Resources: Cloud Resources are expensive. Other than the development cost, the infrastructure cost is another area where lots of money gets spent at a monthly recurring level. Even before the App has been launched, during development and testing, i.e. pre-revenue … pre-beta stage one has to shell out hundreds of dollars, which can easily be reduced by using a BaaS provider.
Managing Cloud Resources: Managing Cloud resources require a lot of experience and niche skills. Good cloud administrators are endangered species and pretty costly. In fact, it’s a running joke in the industry that a Linux administrator just by adding cloud on his resume increases his demand of the salary hike manyfold. Setting up the App Servers for Load Balancing, Clustering, Geographical redundancy, Backup and Replication, Security, High Availability etc. is pretty challenging.
BaaS Providers offload this activity from the app developers so that the app developer can focus more on the app’s functional features, UI and let the server side non-functional requirements be taken care by the BaaS Provider.
Monitoring: The app & database servers along with async message servers & virtual machines have to be continuously monitored for unexpected, unplanned and planned downtime, resource utilization, disk space etc. The backend architecture has to be robust to keep all the services live. If there is an incident and if some or all the services are down, corrective action has to be taken immediately by qualified support staff and services plus data have to be recovered to a stable state in the shortest possible time. Setting up the standard procedures and resources to handle this process is also a lot of work and costs money.
3. Supporting multiple devices and access channels
There are plethora of examples where a web app has been ported into a mobile app and vice versa in many cases. Within the mobile app itself, one needs to support multiple devices. Supporting each new native device means that one has to write native code on respective platforms to interface with the backend. Most often the preferred message format is JSON. The marshaling and de-marshaling of JSON messages from and into Native Objects itself is a very tedious, error prone and time taking action. Most BaaS providers offer native SDKs on various platforms. Also some of them provide JS libraries and server-side language support if the app developer is taking the HTML5 route.
4. Feature Upgrade
BaaS providers keep on adding new features and enhancing existing ones. It’s like a partner who is taking care of the road map for your backend functionality. Most BaaS providers also provide an execution environment i.e. Custom Cloud Code, which allows one to extend the functionality of the existing API or add a new one.
5. Scalability and Performance
One Tweet or a comment from an industry influencer can drastically drive traffic toward your app. Setting up auto scaling on your cloud resources is not a trivial task. Stories about apps doing well in a very short time are spread across on the Internet. Re-Architecting your backend might not be a luxury which one might have. To have a scalable, high performance and reliable architecture requires a lot of time, effort, skill and cost.
6. Domain Knowledge
Every app developer is balancing and redrawing their product map continuously since the market and competition are changing at breakneck speed. One needs to be super agile to pivot in the direction of the market and customer’s demand. Sometimes very important features keep on getting postponed to further increments even when these are crucial for the app’s success. It’s a very difficult decision which an app developer has to make i.e. which features to be taken in the next release and which have to be postponed.
Apart from the sheer time to develop, sometimes the domain knowledge might not exist in the company. BaaS Service Providers provide out of the box functionality, which the developers can integrate directly with a few lines of device side native code. And even if the app developer decides to hire a domain expert, the feasibility of the domain expert for being full time on board might not be there, especially for the start-ups.
7. My Data
Most often app developers have concerns about what happens if they need to change the BaaS Service Provider. Most BaaS Providers provide the ability to export data through their Management Console thereby giving the freedom of vendor portability to the app developer.
This is another most frequently asked question or concern. Is your data secured? BaaS services are accessible through APIs which are called through set of keys, signatures, timestamp etc. similar to the widely used AWS APIs. No user has direct access to the servers and most of the BaaS Providers also provide ACLs (Access Control List) to protect the data from unauthorized usage.
9. Flexible Pricing Plans
Most IaaS providers offer free plans based on which it is very difficult to launch a non-trivial app. The VMs are so small that developers can just do trivial tasks on the server or just run the app server for testing. If one wants a higher configuration one has to still forecast and reserve larger instances in advance for a defined period which is in conflict with the whole concept of cloud computing where one can scale and descale as the business requires.
Almost all BaaS providers provide enough free services that the app developers can use before they become successful and launch their app on the free account and later on upgrade to a higher package as they scale both in traffic and revenue.
This list is by no means a complete list of issues or features which BaaS Providers cater to. But one can use them as a guiding compass when they are taking a decision objectively, whether to use a BaaS provider for their backend needs or DIY (Do It Yourself).
It would be great to hear the views from the readers of this blog. In case you have any more questions, constraints, shortcomings that you think one might encounter when they are considering using BaaS please write to us at firstname.lastname@example.org