Building apps has become tremendously simple these days. To begin with, your SDK comes laden with a tonne of pre-built modules which you can simply drag and drop to create a functional prototype of your app within a matter of hours. However, that's just the application on your mobile which counts as the front end. Building a proper app with active services requires a backend as well and those don't come cheap. You can certainly build a backend just as easily but when you think of the level of reliability and uptime that's required to ensure that your users get the best possible experience, then you'd want to rely on professionals. Here's the deal breaker, good professionals don't come cheap either. By the time you're done building your backend, have all the communication subroutines in place and proceed to build the frontend,
While most popular apps have a custom backend solution that is best optimized for that app, they don't all start that way. Most folks tend to go with a backend-as-a-service or mobile-backend-as-a-service (Baas or mBaaS) which provides a cloud backend that's easy to get started with and to manage. This way, you can be rid of all worries about the backend of your app and focus just on the frontend. Since most backends for applications run on some of the most popular services out there, it's very easy for folks to switch from one service to another and port all their information without breaking a sweat. Obviously, there are quite a few caveats to this approach but we're hoping that you're getting the message.
Aside from the convenience factor from a developer perspective there’s also the business side of things that you should consider. When you have a standardised backend environment, you can easily get developers who are comfortable using the services that are found with most BaaS. You no longer have to spend ridiculous man-hours and resources in training talent when talent already exists. Getting a developer to build your custom backend can cost anywhere from INR 10-15 lakhs for a small operation to over INR 1 Crore for applications with ample amount of traction. Then there’s the cost of running a BaaS, which works out to be much cheaper than building everything from scratch.
Think of it in this manner, if you wanted to go at this from the ground up, then you’d buy an instance from a Cloud Service Provider such as AWS or Azure or Google Cloud. Then you’ll have to figure out what platform you want to build your backend on and then handle all the modules that will help you deploy and scale as per your needs. Each step that we’ve mentioned thus far requires human resources to actively manage them. On top of all that, you’d want to install your database, your authentication service, social integration, notifications, analytics and all the software that are associated with the features that you wish to include in your app. There are services for each situation we’ve described here. The bare essentials i.e. the server hardware would be obtained from an IaaS (Infrastructure-as-a-Service) provider. If the platform is installed and scalability is taken care of, then that IaaS becomes a PaaS (Platform-as-a-Service). And if you have a bevy of modules such as the database, user authentication and social integration, to choose from, then that PaaS becomes a BaaS. As you go up the chain, you lose flexibility but the costs go down since we’re sharing the resources with other customers of the vendor(A server has multiple instances which could be sold to multiple customers).
As you scale, you might want to streamline your application and get rid of unwanted services to lower cost. That’s quite simple with a BaaS. And if you can’t, then your app has scaled to the level where you’d want to have a custom backend solution. It’s also an OpEx rather than a CapEx, and you know how that’s loved by CFOs.
To summarise, you’d want to use a BaaS or mBaaS when you want to:
Get your prototype ready as early as possible
Reduce spending on custom backend
Focus all your energies on the frontend
Have fewer human resources manning the backend services
Have a standard coding environment
Outsource your cloud infrastructure costs
Have better security from the get go
We can go on and on but it seems pretty self-explanatory from this point onward. Now let’s look at the other side of the coin.
If you’re hoping to have a streamlined product from the very beginning then you’d want to exercise a granular level of control on all aspects of your product, be it the frontend, middleware or the backend. An mBaaS or BaaS will simply not allow you to do this. The manner in which you make a service simple is by taking away all the complex controls and making it a simple one-button installation. You can call this “dumbing down” but that’s what it is. Since granular control and simple control are two opposite ends of the spectrum, there’s no way you can be given a granular level of control. Also, any BaaS will have certain SLAs (Service Level Agreements) which are focused on giving you a standard interface and level of security among other things. If the user decides to play around with everything, what’s to say that they wouldn’t end up switching off a module that ensures authentication? One silly move and your entire database could be open to the entire public. Aside from that, a lot of vendors prefer to lock the user into the service by, let’s say, having software or services which are only available with that one particular vendor. Not every vendor is gung-ho about using open source software and services to build their BaaS. And lastly, if there is a zero-day vulnerability that was discovered to affect an BaaS, then practically every single app built on that BaaS could be at risk.
To summarise, you wouldn’t use a BaaS or mBaaS if you wish to:
Not be locked in with a particular vendor
Not be at risk of vulnerabilities affecting the BaaS
Have more granular control over every single aspect of the backend
Now that you’ve learnt the pros and cons of BaaS, let’s take a look at the most popular vendors in the segment.
Firebase is Google’s cross-platform BaaS that’s simple to use and hence, enormously popular with a lot of users. You can get started with Firebase right out of the box and you don’t need any additional code to perform simple authentication tasks which might be required to link to social media services of Google, Facebook, Twitter, Github, etc. You are not required to have the user signed into a service in order to access data storage, so there’s the added flexibility. A lot of Firebase’s functions are similar to Parse which was also a very popular BaaS. Setting up services that require authentication or access to a database in real time is a breeze. Then there’s the analytics part which is quite flexible on its own and allows you to monitor a lot of user metrics.
Like all BaaS, Firebase starts off with a free tier that allows 100 simultaneous connections, 10 GB of data transfer per month, 5 GB of asset storage, 1 GB of realtime database storage and 125K requests/month. Firebase’s pricing structure is transparent and upfront with email alerts if you’re about to hit your free usage caps. This way, you’re never going to be in for a shock. If this seems to be not enough, then there’s the Flame plan which starts at $25/month and increases your limits by a factor of 5-10 on most metrics. Asset storage space goes to 50 GB, realtime database storage to 2.5GB and you get 2 million requests/month.
Integrations: Google Ads, AdMob, Google Marketing Platform, Play Store, Data Studio, BigQuery, Slack, Jira,PagerDuty
Ecosystems supported: Android, iOS and Web
Used by: Shazam, New York Times, Duolingo, Lyft, Venmo, Trivago, Alibaba, Wattpad
Cloudkit is Apple’s BaaS which is primarily focused on the Apple Ecosystem, as is the case with practically everything that Apple makes. Cloudkit makes use of Apple’s identity authentication and has a very seamless integration with all Apple services. It’s the service that you’d want to go with if iOS is the only ecosystem you’re going to be concerned with. It requires the users to be signed in with iCloud and then you can allow persistent data storage for the user and even allow them to share content between users. In a way, by forcing users to sign into the iCloud service, Apple does make this secure but you lose some flexibility for defining your own rules.
Cloudkit’s pricing is also a bit different in the sense that it “advertises” itself as a free service because all the data pertaining to the user comes from the individual user’s iCloud limit. It’s just that as your app scales, the data transfer limits, request limits, database storage and asset storage will start to vary. The more users you have, the less space each user is allotted for free. Exceeding the free limits will cost $0.03/GB for Asset Storage, $3/GB for Database storage, $0.10/GB for Data Transfer and $100 per 10 requests (over the req/sec limit). If your app has a million active users, then you’re allotted 100 requests per second. That translates to 10 requests per 100k users which is quite low at that scale, so your overage costs are going to rack up quite fast. So, no matter which tier you’re on, you’re always going to exceed the requests/sec metric and pay through your nose. No such thing as a free lunch.
Integrations: iCloud Drive, iCloud Photo Library, Authentication, private and public database
Ecosystems supported: iOS, Android (non-native, via Cloudkit JS)
Used by: iOS Native apps such as Apple Photos, iCloud Drive, Notes, News, Safari
Kinvey is one of the early companies to enter the BaaS segment and also boasts one of the broadest bouquet of services. If offers everything that you can possibly think of which count towards the bare essentials of building an app and on top of that you have access to a lot of code libraries to integrate third-party services. This makes it quite user-friendly.
Kinvey offers a free trial for startups with fewer than 25 employees and individuals. However, if you don’t meet either of these conditions, then Kinvey costs a lot. They aren’t transparent about the costs and estimates quoted by individuals can range upto USD 24,000 per app per year. For that it gives you about 50 GB of 1 TB, up to 10,000 B2C users or 1000 B2E users and supports 3 environments per application. So Kinvey does provide a lot of storage space and auto-scaling infrastructure backend but the cost is one of the highest in the market.
Ecosystems supported: iOS, Android, Web, Xamarin
Another early BaaS company that has a wide assortment of integrations and has plenty of flexible payment plans to work with. Backendless has a free tier that allows 1 Million API calls/month, lets you push 50,000 notifications and store 5 database tables. After which you can switch to a starter plan that costs $15/month that gives you 5 Million API calls/month, 20 tables and 100,000 push notifications. Then there’s a $25 plan, $99 plan and so on.
Ecosystems supported: iOS, Android, Web
Used by: Digital Copel, YTCount, Lifebook, BTC Market Ticker, Game with Me, Tacoma Japantown Walking tour
This is Amazon’s BaaS that’s tied in with a lot of the other AWS services. So if you’re already on AWS for your hosting needs, then AWS Amplify becomes a rather simple choice. It provides seamless integration with iOS, Android, React Natice and HTML5 and has functions such as notifications, ability to provide API endpoints, notifications, analytics, etc. which are helpful in building an app.
AWS pricing is on the basis of two metrics – hosting and build & deploy. It has a free tier that provides 1000 build minutes per month and for hosting you get 5GB of storage per month along with 15 GB of data transfer.
Exceeding this limit leads to the pay-as-you-go model which is characteristic of AWS pricing.
Ecosystems supported: iOS, Android, Web, React Native
Used by: Netflix, Tinder, Yelp, Airbnb, Periscope, Etsy, Easy Taxi, Hike