9 Points to Consider for an App Developer Deciding on Backend as a Service
9 Points to Consider for an App Developer Deciding on Backend as a Service
Join the DZone community and get the full member experience.Join For Free
Backend as a Service - BaaS has become a preferred way for many App developers. It’s not only indie developers or start-ups who are using BaaS Service Providers for their server side needs, but even bigger App companies have started using their services.
To stay ahead of the competition, developers want to focus more on their App functionality and User experience than to spend time, money and effort on the Backend functionality . Most App companies are also developing more than one App or release new feature updates frequently and adding support for multiple devices with shorter release cycles.
For those App developers/companies who are still considering using BaaS, there are many questions and decision data points which they might have to consider before deciding on whether to go the BaaS way or not. Listed below are some of the points, which might help the App developer to decide objectively. These points might also help him/her to decide on which BaaS Service Provider is right for his/her needs.
1. Time to Market
The rate at which new Apps are coming in to the market is phenomenal. If one tries to depict the number of Apps coming out in the market in the last three 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 one has released the App and has got the first mover advantage, new updates have to be released in the shortest possible time to keep ahead of the competition. New Apps are mushrooming from all over the world on a daily basis. If one just searches for Chess on any of the App Stores/Marketplace one will find 100s of Chess Apps. You think of an App idea and it is most likely there will be an App in that space.
If somehow the App development and deployment time, cost of IaaS resources can be reduced, it will have a huge impact on the Time To Market and cost 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 out of the box features which a BaaS Service Provider offers.
Most BaaS providers also provide Custom code deployment on the cloud 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 them is 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 it here itself because of their strong inter-dependency.
Development: Resources have to be hired who have got requisite skill set to develop scalable server side code. The sheer time which it takes to develop even small features, increases the development cost e.g. 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 also takes time and money to develop. Not to forget to 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 Servers, Database servers, 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 your 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 has 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 there also a lot of examples, if not equal, where Mobile Apps have been ported to Web Apps. 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 activity. Most BaaS Providers offer Native SDKs on various platforms. Also some of them provide JS libraries and serverside 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 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 or a TechCrunch Author can drastically drive traffic on your App. Setting up autoscaling 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 his Product Map continuously, since the market and competition is 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 to develop it might not exist in the company. BaaS Service Providers provide out of the box functionality, which the App developer 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 on 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 our 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).
Author of this article is Siddhartha Chandurkar, Founder and CEO of ShepHertz Technologies . He writes articles on the new trends in Backend as a service and various other cloud technologies.
The Original Article is via http://blogs.shephertz.com/
Opinions expressed by DZone contributors are their own.