The Good and the Bad of Firebase Backend Services

Building an app is like sending a letter: we put a lot of effort into designing the envelope, but it’s always the writing inside that really matters. But in contrast, writing backend code, managing hardware, and dealing with hosting is not that fun as writing letters. And many would appreciate someone takes care of it for them.

Backend-as-a-Service (BaaS) became a popular cloud-computing solution for tech-enthusiasts and businesses that don’t have costs to build their own or maintain an existing backend infrastructure. As in many other tech-spheres, one of the leading positions on BaaS market is held by Google’s product, Firebase.

In this article we’ll review Firebase platform, its main services, and features. We will also show the pros and cons of of the platform as a whole, and look at alternative vendors.

What is Firebase?

BaaS solutions allow you to eliminate the need in managing backend databases and obtaining corresponding hardware. Instead, you can plug them into your app via dedicated APIs for each separate service. In the case of Firebase, there are 7 of them that cover all the spectrum of back-end technologies for an app. The list of platforms Firebase integrates with includes Android, iOS, Web, and Unity.

But, there is a lot more to learn about the platform, as it includes various services to work with a managed backend. In the next section we’ll provide a general look on each service available on Firebase platform.

Firebase services review

The core services are placed in the “Build your App” section. Let’s have a closer look at these products:

Building blocks of Firebase

Databases

The data is stored in JSON and can be queried by users. In terms of security, Realtime Database provides permission-based data access. This can be done with the help of Firebase Authentication, and giving permissions by user-identity or security rules.

Cloud Firestore is another cloud-hosted real-time NoSQL database. Unlike Firebase Realtime Database, Cloud Firestore is designed for enterprise use, which entails scalability, complex data models, and advanced querying options. Firebase console can be used to view data in both databases. Another mutual point is that there are SDKs for working with server-side code of both databases. These are available for Python, Node.js, Golang, Ruby, PHP, Java, .NET, and C#.

Cloud Storage. Okay Google, another database? Not exactly. Cloud Storage is basically a Google Cloud for in-app user generated content, like photo, audio, or video files.

Authentication and hosting

Hosting service. If you are building a web-app, progressive web app, or mobile landing page, you would definitely need hosting. Firebase offers static web hosting for applications built with HTML, CSS, and JavaScript. In terms of security, it uses standard HTTPS and SSL protocols to deliver files and other types of data.

Serverless applications

Machine learning capabilities

Firebase testing services

Crashlytics is a realtime crash-reporting tool for quick and painless troubleshooting of your app stability. Crash-reports will be formed into structured and prioritized lists of issues that correspond to the root of the problem, so it’s easy to organize fixing process.

Performance monitoring brings automation to performance tracking of your app in real-time. This tool provides performance insights based on the root cause, tracing not only the app performance, but also server connection quality and response time across different network types.

App Distribution. This tool is a beta-testing distribution service, that is currently in beta. Symbolic. App Distribution helps to create a single hub for two versions of the application (iOS and Android), and manage pre-release builds using CLI.

Firebase analytics

Configurations and improvements

Dynamic links. It’s pretty hard to predict where a user will look for a certain content, when you have your product on multiple platforms. Let’s say a user is browsing your web app, and searches for a certain item. After a few clicks, he leaves a bit of personal data, but next time decides to use your mobile application. Here you might experience bounce rate, because a newly installed app will require starting from scratch. Dynamic links can help you transition users between the platforms, saving personal data and showing users exactly what they were browsing before.

Remote Config. This tool suggests a handy option to update your application, without republishing it. E.g. this can be a change of color scheme, or content updates across the app.

In-app messaging. This tool will help you to conduct targeted and personalized messaging to the users that use your app often. Basically it’s a targeting instrument, that helps you incline users to complete required actions within the app. In-app messaging is also in beta-phase, but it can already be used in pair with Google Analytics and Firebase Predictions to conduct smart targeting.

As you can see, Firebase is a really huge platform that suggests services for any purpose. For a long time, it was considered pretty limited and not capable to replace the whole backend. But with the last releases, Firebase made it possible to build serverless applications, and opened the source code of its SDKs. But still it has its downsides.

The pros of Firebase

Database capabilities

Wide number of services

Free start

Concise documentation

Accessible UI and ease of integration

Static hosting capabilities

But of course, as any technology (or set of technologies), firebase has its weaknesses.

The cons of Firebase

Firebase Realtime Database limitations

Another point to consider also relates to Firebase Realtime DB and its data modeling. Because of “database as a single file” structure, you can’t implement relations between data items.

But, to be objective, both points are not valid when we talk about Firestore DB, as long as it focuses on more complex data models and makes querying more advanced. So you might prefer switching to it.

Vendor lock-in

Less support for iOS apps

Considering Firebase features, you can understand whether its a good fit for your application. The choice of a vendor is always a 50 percent technological decision, while the other half falls on vendor reputation and trust. So, if you feel like Firebase has nothing to offer for your exact project, you can look at the alternative vendors on the market.

How to get started with Firebase?

Firebase Console. All the Firebase projects can be managed from one place, a Firebase Console. This is a unified management panel where you can see all your apps connected with Firebase services. Projects act as a virtual containers for the app code and server settings, that duplicates to Google Cloud Platform.

Firebase CLI. Using Firebase Command Line Interface, you can interact with data stored in databases, reach server configurations, and deploy Firebase projects.

Firebase Documentation. This is a general reference for all the services the platform provides, its API documentations, platform availability, and libraries.

Pricing page. The information you might be interested about is gently put on the pricing page. The pricing is divided into 3 plans that go Spark (free/small apps), Flame (fixed price/middle size), and Blaze (pay as you go/interprise size). Keep in mind, that pricing details are individual for each separate service, so you’ll find this information in dedicated block on the pricing page.

Firebase alternatives

Taking into account all the factors, you can look at what other vendors can offer. The main competitors on the market are:

AWS Aurora. This is another enterprise giant; the main advantage of AWS service in BaaS over Firebase is that it utilizes relational database that guarantees better data structure and querying. It’s tailored more for enterprise applications and has support for data migration from platform to platform. So this point might outweigh tech specific features, as there will be no vendor lock-in.

Parse Server. While Parse Platform as we knew it has gone in 2017, there is still an open-source version of it available. Among its pros, there are tons of pre-build features, total customization, hosting environment choice. On the other side, its command line interface is pretty unstable, and its supported by a community of developers, rather than a big corporation.

Back4App. Is an implementation of Parse Server, which basically took its downsides and fixed it. Back4App offers similar features to what Firebase does, with the only exception it’s more flexible in case of data modeling and customization of your database querying.

At the end of the day, there are a lot of features to be explored and modified, as all the vendors customization options. The biggest plus of Firebase is that, if you rely heavily on Google services, and make use of its Cloud Platform, integration capabilities can be a determining factor.

Originally published at AltexSoft tech blog “The Good and the Bad of Firebase Backend Services

Being a Technology & Solution Consulting company, AltexSoft co-builds technology products to help companies accelerate growth.