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?
Firebase is a software development platform launched in 2011 by Firebase inc, and acquired by Google in 2014. Started as a realtime database, now it has 18 services (4 of them currently in beta), and dedicated APIs. The whole platform is a Backend-as-a-Service solution both for mobile and web-based applications that includes services for building, testing, and managing apps.
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
Visiting the product page you will find, that Firebase has three categories of services available for the customer’s applications. Those are divided into services for app building, quality assurance, and instruments for business growth.
The core services are placed in the “Build your App” section. Let’s have a closer look at these products:
Firebase Realtime Database was the first product to occur under the flag of Firebase, so it’s the most established and stable service across the whole platform. Realtime Database is essentially a NoSQL cloud-storage that can be connected with the application to provide real time access to the data across different platforms. One of the advantages is that the database can work offline, caching the data in device memory, and after reconnecting to the internet, synchronizing it.
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
Firebase Authentication is a Google Authentication feature tailored for apps using Firebase. It allows you to use pre-built or create custom UI for user-authentication, and login users via custom credentials, emails, or social media.
Cloud Functions. Is another integration of the existing Google product into Firebase. It’s a tool for running back-end code from the cloud on the event-driven basis. The way Cloud Functions suggests running your app is what’s usually called a serverless architecture. This type of architecture means building applications as a set of separate functions, isolated in the cloud, and connected between each other via APIs. This type of application architecture became increasingly popular a few years ago, so you might see Google as one of the main serverless providers.
Machine learning capabilities
ML Kit. This product is currently in beta, but what it does is actually provides machine learning capabilities to your mobile applications (Android and iOS). As it’s product page suggests, ML Kit is tailored for most common use cases you may find in Google products (e.g. Google lens). Think of bar code scanning, face detection, image labeling/recognition, text recognition, barcode scanning, etc. ML Kit is provisioned both for cloud and on-device usage with dedicated APIs.
Firebase testing services
Test Lab is a service that provides virtual and physical device access to test your app in real-environment. It can be integrated into existing testing environment like Android Studio, or browser testing tools. Test Lab will provide you with crash reports, screenshots as test results. In case you don’t have tests, there is even a bot capable of crawling your application, find bugs, and provide reports. The downside is that Test Lab doesn’t integrate with iOS testing tools. But, hey, its Google.
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.
When your app is live, there is also a number of standard and specific Google services, that will help you manage how users interact with your app in a business aspect.
Configurations and improvements
Cloud Messaging is a messaging service that allows you to send notifications between the server and user-devices. You can customize the types of messages you send to specific groups of people based subscriptions, behaviour patterns, profile settings, etc. Cloud messaging is integrated into Firebase Google Analytics, so you can instantly track mailing results, as well as configure messaging without coding.
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
In some cases, it’s pretty good to stick with big companies, as they have less chances to go bankrupt and leave you with nothing. Partially true, but even giants fail. In 2017, Facebook shut down its BaaS platform called Parse, which forced its users to seek for replacement. While it’s not the case with Firebase (at least now), let’s abstract from Google’s name, and concentrate on technical advantages of the platform.
While it always depends on your budget, Google suggests pretty robust databases to use with your apps. Both Realtime and Firestore can be scaled in terms of the size, suggesting a fully secure managed solution, that still provides you easy access to your data via Firebase console. Data updates and offline access make databases usable for real time application, as well as keeping multiple DBs in sync.
Wide number of services
Firebase suggest a lot of products to make your application work. You can choose between two databases (Realtime database and Firestore), store media in the cloud, and even build serverless applications with the help of integrated Cloud Functions.
As you begin, Firebase will require no payments for most of its services, and would be totally free as you start with it. This will allow you to understand whether it fits your application, and understand all the peculiarities. Once you reach a certain amount of database memory or need a specific service, you can always choose between the plans. The pricing page contains a price calculator, that can be regulated by different parameters, as it’s a usual practice for cloud services.
The whole platform is documented with diligence. Good technical documentation, API documentation, SDK references, all that makes any product easier to use and accessible for the user. Exploring Firebase product page you will find that it contains all the required information concerning integrations, available platforms, guidances, and lists of supported technologies. Moreover you can check Firebase YouTube channel that seems pretty active in terms of releasing new videos and news.
Accessible UI and ease of integration
In most cases, Firebase requires minimal programming language knowledge, and suggests integrations via its user interface. While somebody can call it a downside for flexibility, on the other hand it eliminates the need for complex configurations, so nearly anyone can set up the application.
Static hosting capabilities
Firebase hosting comes with a Content Delivery Network (CDN) in-built with Google Cloud platform. Basically, a CDN is a network of distributed servers, that guarantee fast content delivery across the globe. In the case of Firebase, using its static hosting makes it easy to build one-pagers or web-apps with ease.
But of course, as any technology (or set of technologies), firebase has its weaknesses.
The cons of Firebase
Firebase Realtime Database limitations
For the most part, you will use Realtime Database as your main storage, which has its cons. One of the main problems with it, is limited querying capabilities. Realtime database provides no way to filter capabilities, because the whole DB is a huge JSON file, which makes it pretty difficult to make complex queries.
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.
The problem with the vendor lock-in doesn’t correlate with Firebase as a platform. In most cases, that is the problem with using BaaS solutions in general. However, as long as Firebase doesn’t provide any migration tools to transfer your data to another platform that can be considered a con.
Less support for iOS apps
While we talk a lot about its cross-platform nature, you might still notice that Firebase concentrates more on Android mobile platform (of course). Test Lab can be easily integrated with Android studio and supports a wide range of Android devices for testing. As for the iOS, only in 2018, Test Lab team announced closed beta support launch for iOS devices; that includes basic UI and some test devices available.
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?
To understand how you can interact with the Firebase and use it for your app, we’ll provide essential links to the main tools, documentation, and API references:
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.
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.
A few years earlier the best fit for Firebase was considered a small application, that doesn’t require complex data queries and relies on real-time updates. While it’s still the main focus of Firebase Realtime Database, with the release of Firestore, it became available for enterprise applications. Moreover, since its SDK became open-source, there is no real difference between what has been considered as Parse advantage over Firebase.
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”