What kind of web applications are Firebase not ideal for?

This answer made it to React Speed Coding book.

Understanding how Firebase stores files and data will help answer the first part of your question.

How Firebase Stores Files and Data

JSON documents: Firebase is built on top of one of the most mature and powerful NoSQL databases around, MongoDB. So Firebase data store is tree-like, JavaScript Object Notation (JSON) documents.

Real-time API: Firebase value adds on top of MongoDB with its real-time publish/subscribe API. What this means is you could have microservice A write to your Firebase data store and microservice B picks up the changes as these

This answer made it to React Speed Coding book.

Understanding how Firebase stores files and data will help answer the first part of your question.

How Firebase Stores Files and Data

JSON documents: Firebase is built on top of one of the most mature and powerful NoSQL databases around, MongoDB. So Firebase data store is tree-like, JavaScript Object Notation (JSON) documents.

Real-time API: Firebase value adds on top of MongoDB with its real-time publish/subscribe API. What this means is you could have microservice A write to your Firebase data store and microservice B picks up the changes as these happen in near real-time. A and B microservices do not need to be on the same server or developed by the same entity. This makes Firebase really powerful for applications like chatting servers, streaming services, location intelligence, among others.

Static Hosting and CDN: Firebase also stores and serves front-end files (HTML, CSS, JS) using a Content Delivery Network (CDN) as a world class hosting platform. You could dynamically generate these files from a Node.js backed development server, use modern web application frameworks like React and Angular to deliver very capable mobile-web apps wired to a real-time database.

Geo-spatial data: Firebase has basic capabilities to store and retrieve Latitude/Longitude information along with JSON documents. This makes it ideal for many location aware apps, combined with its real-time data API, and performant front-end hosting for mapping embeds.

User Profiles: Firebase also stores basic user profiles and registration data. That is one less worry and an important aspect of any multi-tenant SaaS app.

What Firebase Is Not Ideal For

Server side continuous processes: Firebase is not ideal, if your app requires continuous server side processing, like receiving streaming data from a source like Twitter, analyzing this in some way, before consuming the analytics results in your app in real-time.

Full-stack or universal app frameworks: You cannot run Meteor or Universal Angular on a platform like Firebase as these frameworks require server-side scripting.

Large binary file processing: If you are creating an image processing app, or a an online video post-processing tool, Firebase does not have much to offer in terms of shifting large binary files or processing these on the server side.

I would not use Firebase for any system that would make use of complicated SQL logic for relational queries (like joins and unions), or any kind of single query that would require two indexed fields (like a SQL "where" with an "and") against a large set of data. It seems to handle the case of a single indexed field OK.

I believe, in Firebase, you are (currently) asked to store arbitrary chunks of data encoded as base-64, which is now essentially a string. This makes the data larger, but does put it in a type that Firebase can deal with.

Here are probably list of use cases where Firebase will not be suited for :

Relational Data : Firebase stores your data in a document format with no relationships in between them. If your app has a lot of relational data and you need to perform joins, etc. Firebase is not for you.

Transactions : Firebase does not support transactions. If you're building an app that relies heavily on it. Firebase might not be a good fit.

Search : Firebase cannot do full text search / advanced search. (I'm NOT talking about queries here)

Did you check out CloudBoost (https://www.cloudboost.io). It has a lot of f

Here are probably list of use cases where Firebase will not be suited for :

Relational Data : Firebase stores your data in a document format with no relationships in between them. If your app has a lot of relational data and you need to perform joins, etc. Firebase is not for you.

Transactions : Firebase does not support transactions. If you're building an app that relies heavily on it. Firebase might not be a good fit.

Search : Firebase cannot do full text search / advanced search. (I'm NOT talking about queries here)

Did you check out CloudBoost (https://www.cloudboost.io). It has a lot of features which firebase does not offer like BLOB Storage, Search and more.

You must have read all the answers so I won’t tell you about the kind of applications that firebase isn’t ideal for; instead I will tell you about the applications that can be developed with Firebase.

If you are looking to develop applications with firebase, your best bet would be to invest in GIS technology. Firebase is best suitable for geospatial intelligence applications and can give you the best results. Companies like Esri, OneClout, Hexagon, Technavio, and Supermaps are the companies that are using geospatial technologies around with firebase technology to make the deployment more adapti

You must have read all the answers so I won’t tell you about the kind of applications that firebase isn’t ideal for; instead I will tell you about the applications that can be developed with Firebase.

If you are looking to develop applications with firebase, your best bet would be to invest in GIS technology. Firebase is best suitable for geospatial intelligence applications and can give you the best results. Companies like Esri, OneClout, Hexagon, Technavio, and Supermaps are the companies that are using geospatial technologies around with firebase technology to make the deployment more adaptive.

First, when talking about databases in the Firebase suite, I’m only going to talk about Firestore, and not RTDB (Realtime Database, which was traditionally known as just Firebase). Firebase now refers to an entire suite of services, which includes Firestore, RTDB, file storage, authentication, etc. RTDB is most likely going to be phased out and Google is clearly putting their effort behind Firestore.

Second, there is no manual sharding in Firestore, like there was in RTDB. Sharding is handled automatically by Firestore, so ignore the other answers about that.

Third, you, the customer, own the da

First, when talking about databases in the Firebase suite, I’m only going to talk about Firestore, and not RTDB (Realtime Database, which was traditionally known as just Firebase). Firebase now refers to an entire suite of services, which includes Firestore, RTDB, file storage, authentication, etc. RTDB is most likely going to be phased out and Google is clearly putting their effort behind Firestore.

Second, there is no manual sharding in Firestore, like there was in RTDB. Sharding is handled automatically by Firestore, so ignore the other answers about that.

Third, you, the customer, own the data in your Firestore database, not Google, so ignore the other answers about that also. If Google, and not the customer, owned that data, Firebase would have virtually no users. And, also contrary to the other answers, you can export data from Firestore. If customers weren’t allowed to export their data, who would ever use it?

Fourth, the suggestion to use SQL technology on your own physical servers (ones that you physically own) is not something that I think belongs in an answer to this question. SQL vs NoSQL and cloud vs in-house are decisions that you should have already made if you’re asking about a specific serverless provider. Clearly (at least apparently), you’ve decided on serverless NoSQL, which is definitely the most popular choice today. And between the two most popular providers, AWS and Firebase, they are designed to handle virtually any workload you throw at it. The most highly-trafficked applications in the world run on NoSQL serverless, like the Amazon marketplace, for example (AWS, obviously). If AWS can handle it, Firebase can handle it too. Google would never design its NoSQL serverless to max out at a certain number of users or level of traffic; it’s designed to scale virtually infinitely.

The only caveat to Firestore (and NoSQL serverless in general, really) is dollar cost—right now in 2019, anyway. Firestore was considerably more expensive only a year ago than it is today, think about that. I think NoSQL serverless will undoubtedly continue to become cheaper, including Firestore. But, right now, with a relatively large userbase, NoSQL serverless, like Firestore, can get expensive. But so can doing it all in-house. An in-house solution still comes with bandwidth cost, in addition to hardware and human cost. Hiring qualified backend engineers to build and maintain an in-house setup is not cheap (hundreds of thousands of dollars a year). Firestore (and DynamoDB) have excellent price calculators to help you predict your costs and you may be surprised to see how cheap it is with a modestly-sized userbase, even with 100k users.

This is a question I get from a lot of clients as many of our products rely heavily on Firebase. The answer is very dependant on your application but in almost all cases this will never be a problem.

Where do the costs occur?

If you look at the Firebase pricing plan you can see that data is the main constraint for the pricing brackets. When you move up a tier you get various increases in data allowances as well as more database operations. This means you need to look at what your app does to see the impact of more users.

What does my app do?

This is the next question you need to ask yourself. Many

This is a question I get from a lot of clients as many of our products rely heavily on Firebase. The answer is very dependant on your application but in almost all cases this will never be a problem.

Where do the costs occur?

If you look at the Firebase pricing plan you can see that data is the main constraint for the pricing brackets. When you move up a tier you get various increases in data allowances as well as more database operations. This means you need to look at what your app does to see the impact of more users.

What does my app do?

This is the next question you need to ask yourself. Many apps will be dealing only in text strings meaning the data amount is very small. Images would be a step up from this and videos another jump in data usage. You need to think about how often your app stores this data. It might be that you only upload a single image for each user or it could be that you send multiple images while using. In both these cases the data usage will vary hugely.

Before worrying about how you will cope with 1M users think about how the app will fare with 1–10k users. In Firebase’s case you will probably be on the free tier (as long as you are not guzzling data) up to 100k users.

Think about this for a moment. You will have 100k users on your app. Even if you only add advertising you should be able to make the $25 a month to cover the Firebase FLAME costs.

The motto I use with my clients is this:

By the time you need to start worrying about backend costs for your app you can stop worrying about backend costs for your app

Once you reach the amount of users to requiring you to start payment you will have a successful app with a big user base which can be leveraged to start paying you back.

Should I use Firebase?

This is the final question you should ask yourself. Up until now this question could have been about one of the many different backends on offer.

If you are unsure I would be inclined to say: YES use Firebase!!

They are a great company and offer a fantastic product. Being owned by Google and having recently updated all their code they are unlikely to close down (RIP Parse). They also provide extensive and clear documentation and great support. There is a huge online community meaning sites like this and Stackoverflow have a huge number of questions to help you.

It is worth looking at your app though. Firebase does have some disadvantages:

  1. There is no easy way of querying data
  2. There is no way of executing code on the server

This is what should be researched when looking at whether Firebase is the right backend for you and even these can be mainly mitigated by using a separate server to control these tasks.

Conclusion: Unless your app is very data intensive then you won’t meet any of the data caps. Firebase will help you get your app online quickly and cheaply before scaling excellently once the users start pushing the upper limits.

NOTE: I would never recommend someone building their own backend when starting a new app. It might be that you have the skills to do it but in the long run it will cost you more (in your valuable time) than using another provider. Once your app is a great success and you are paying monthly fees to a backend then you can invest the money in creating a custom backend which suits your data type. Creating it yourself also requires a huge amount of invested time. If your app fails then this time is completely wasted.

Yes. Next question?

Firebase

Just kidding. Seriously, though, I can tell you from 5 years of using Firebase at both GetHuman and Swish, it is awesome. However, I should stress that Firebase (i.e. the realtime database from Google’s Firebase Cloud offering) should NOT be used for any and all situations. It is not built to be a system of record. Rather, it is built to enable pushing data to clients in realtime.

At Swish, we use MongoDB for our system of record, but then we replicate a small subset of our data to Firebase so that clients can listen for that data and then take appropriate actions whe

Yes. Next question?

Firebase

Just kidding. Seriously, though, I can tell you from 5 years of using Firebase at both GetHuman and Swish, it is awesome. However, I should stress that Firebase (i.e. the realtime database from Google’s Firebase Cloud offering) should NOT be used for any and all situations. It is not built to be a system of record. Rather, it is built to enable pushing data to clients in realtime.

At Swish, we use MongoDB for our system of record, but then we replicate a small subset of our data to Firebase so that clients can listen for that data and then take appropriate actions when it is updated. It is possible to use Firebase for other use cases, but this is its sweet spot in my opinion.

Firestore

A more recent offering from Google, however, is the Cloud Firestore database. This is an attempt from Google to get the best of both worlds by keeping many of the realtime features of the traditional Firebase database combined with more robust and secure features of a normal system of record database like MongoDB.

We just started to play around with Firestore at Swish and it is pretty awesome.

Please don’t listen to the “proprietary blabla”. This is bs.

Imho MBaaS is the biggest failure ever made. No one ever will make money (long term) out of it. Their biggest failure, as you see in this post is, they don’t understand people like you. They think you will be a paying customer at some time. (This is never going to happen)

Now, let’s solve your problem. You’ve got that great idea and want to get going quickly. You seem like passionate about it. You want to focus on front end, not backend, means you focus and know your weaknesses. Very good point to start at!

So, why is Firebase your perf

Please don’t listen to the “proprietary blabla”. This is bs.

Imho MBaaS is the biggest failure ever made. No one ever will make money (long term) out of it. Their biggest failure, as you see in this post is, they don’t understand people like you. They think you will be a paying customer at some time. (This is never going to happen)

Now, let’s solve your problem. You’ve got that great idea and want to get going quickly. You seem like passionate about it. You want to focus on front end, not backend, means you focus and know your weaknesses. Very good point to start at!

So, why is Firebase your perfect solution? It’s supported by google. It’s super super easy to use. It’s well documented. Any more questions?

You can build whatever app (prototype) with Firebase in no time. It might not scale, but this is not what’s it about. You just want to master front-end stuff, don’t you? Right.

Eventually your MVP might get traction. What are you going to do? Well, if it’s going to get “a lot” of traction, you can pay someone to build a scalable backend for you. If not, scalability will never be an issue. You just don’t have to care about it!

Build whatever you like. Focus on the things you love to do. Firebase let’s you do exactly this. Keep it going, cheers.

Hi,

I would like to answer this by sharing a real life experience. We created an IoT platform in my company named 700 Dollar Startups. It allows users to control home appliances using their smartphone. The platform also collects temperature and air parameters at your home.

We settled to use the following stack:

  • Firebase - for backend
  • Angular JS - FrontEnd
  • NodeJS - to run IoT code in raspberry
  • Ionic - for the mobile app

Below is our platform architecture.

Here are the advantages based on our experience:

  1. Three way binding - Firebase API solves the problem of raise condition in database. A client browser,

Hi,

I would like to answer this by sharing a real life experience. We created an IoT platform in my company named 700 Dollar Startups. It allows users to control home appliances using their smartphone. The platform also collects temperature and air parameters at your home.

We settled to use the following stack:

  • Firebase - for backend
  • Angular JS - FrontEnd
  • NodeJS - to run IoT code in raspberry
  • Ionic - for the mobile app

Below is our platform architecture.

Here are the advantages based on our experience:

  1. Three way binding - Firebase API solves the problem of raise condition in database. A client browser, back-office, and mobile consumer can update a data simultaneously without the problem of synchronization. As soon as data is updated, added, inserted, or deleted all update are automatically pushed to the client via API.
  2. Speed of Development - Google Firebase Database is NoSQL database with out of the box API connectors and wrappers for query purposes. As a result, rather than building REST API just like the traditional way of connecting thin client to database, with Firebase, a company can simply use their SDK to do the same purpose. As a result, business would be able to cut their development time by removing the API development component. Less scope, means less development cost as well.
  3. Realtime update - The old ways of doing things is that a client connected to database need batch update to get new sets of data. It is an inefficient architecture, imagine a program has to read 1 million records every fifteen (15) minutes with or without update. With Google Firebase Database, a client can be automatically triggered for refresh via Callback as soon as an update is made in the database. With thus technology, developers are assured to only get a new sets of data as needed basis. Here is the actual demo of realtime database update (See video below). As soon as data is changed in database, the LED’s state connected to Raspberry devices instantaneously changes status.
  4. Free- Developers and business owners can create two projects in Firebase for free. This means organization need not to buy premium license during R&D stage. It gives developers and decision makers enough time to learn and evaluate the technology.
  5. Authentication - It comes with a builtin authentication module. Supports gmail, Facebook, Twitter, and basic username and password login support. Integrating this module in your app is easy through their SDK.
  6. Rich API Document - The Firebase SDK is well documented and has lots of example over the web. On our case, we were able to try the SDK for NodeJS. Other Platform supported are IOS, Android, Java, and JS.

As for the Disadvantage

  1. No Data Explorer - This issue is more for developers. The Firebase Database does not provide an online tool to allow developers search for a data inside a node. It has a manual tree like data explorer but becomes complicated or difficult to traverse as dataset goes bigger.
  2. No built-in Authorization - One of Firebase strong point is it’s authentication module. However; it could had been better if it is shipped with a pre-created framework for authorization. To date, developers has to secure data and forms by manually coding the roles for a specific users.

Firebase is a NoSQL cloud database. A NoSQL database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases.

The Firebase Realtime Database is a cloud-hosted database. Data is stored as JSON and synchronized in realtime to every connected client.

Since you particularly asked for Firebase Database, I would be focusing on that only from many features of the Firebase.

Key Features of Firebase Database

  • Real-time

Instead of typical HTTP requests, the Firebase Realtime Database uses data synchronization—every time data

Firebase is a NoSQL cloud database. A NoSQL database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases.

The Firebase Realtime Database is a cloud-hosted database. Data is stored as JSON and synchronized in realtime to every connected client.

Since you particularly asked for Firebase Database, I would be focusing on that only from many features of the Firebase.

Key Features of Firebase Database

  • Real-time

Instead of typical HTTP requests, the Firebase Realtime Database uses data synchronization—every time data changes, any connected device receives that update within milliseconds. Provide collaborative and immersive experiences without thinking about networking code.

  • Offline

Firebase apps remain responsive even when offline because the Firebase Realtime Database SDK persists your data to disk. Once connectivity is reestablished, the client device receives any changes it missed, synchronizing it with the current server state.

  • Accessible from Client Devices

The Firebase Realtime Database can be accessed directly from a mobile device or web browser; there’s no need for an application server. Security and data validation are available through the Firebase Realtime Database Security Rules, expression-based rules that are executed when data is read or written.

  • Scale across multiple databases

With Firebase Realtime Database on the Blaze pricing plan, you can support your app's data needs at scale by splitting your data across multiple database instances in the same Firebase project. Streamline authentication with Firebase Authentication on your project and authenticate users across your database instances. Control access to the data in each database with custom Firebase Realtime Database Rules for each database instance.

Real World Usage

I've personally used Firebase in number of applications and it is very fluid in its working. It is highly efficient if you want a real-time database that is synced across every client.

Other useful features of Firebase includes -

  1. Cloud Messaging (FCM)
  2. Authentication
  3. Cloud Firestore
  4. Storage
  5. Hosting
  6. Cloud Functions
  7. Crashalytics
  8. Performance Monitoring
  9. Test Lab
  10. Crash Reporting
  11. Predictions
  12. Remote Config
  13. Dynamic Links
  14. App Indexing
  15. AdWords
  16. AdMob

The “mainstream” (if you can call it that) use for Firebase is to use is as a realtime database - that is, to use it as a database for applications where changes to your data need to be reflected across all of your users’ devices, and need to happen fast. For example, a cloud messaging app, or a social network of some kind.

However, Firebase is so much more than that. It provides solutions to many irritating problems that make it very useful to pretty much any web project that has some sort of user management system.

For instance, Firebase makes authentication in your web project relatively pain

The “mainstream” (if you can call it that) use for Firebase is to use is as a realtime database - that is, to use it as a database for applications where changes to your data need to be reflected across all of your users’ devices, and need to happen fast. For example, a cloud messaging app, or a social network of some kind.

However, Firebase is so much more than that. It provides solutions to many irritating problems that make it very useful to pretty much any web project that has some sort of user management system.

For instance, Firebase makes authentication in your web project relatively painless. You don’t have to deal with passwords, OAuth, API keys, password hashing and security, anything; Firebase simply works its magic, and allows you to seamlessly integrate dozens of different authentication providers (e.g Google, Facebook, Github, etc.) with your app, or provide a simple email/password authentication scheme.

Firebase also makes database security extremely easy in your web project, using a system called user-based security, where a call to read from the Firebase Realtime Database is allowed based on the logged in user’s permissions (for example, if he is authenticated, or if he belongs to the ‘admins’ group). This allows you to build a robust database without stressing out about implementing all the security features and configuration yourself.

Another benefit (although some may view it as a negative - it really depends on the specific needs of your project) is that Firebase is a serverless environment, which means you do not have to deal with server configuration - and, believe me, that can be a real pain. With Firebase, you simply code and deploy. That’s it. Both your front-end code and your backend logic (using Cloud Functions). It just works.

And, of course, since Firebase is now a Google product, it also seamlessly integrates with other Google services, like Google Analytics and Google Storage. Firebase provides out-of-the-box solutions for storing images or other kinds of media, which can also be very time-consuming if you were implementing them yourself from scratch on a server.

In summary, Firebase can essentially save you a lot of time when building a web project. This is invaluable for developers, especially if you are a small team, or working alone. You should probably use it if your web project requires some sort of user management system, as it allows you to implement essential features very easily. However, if your web project is something different (a website that requires a content management system, for example), then other solutions may be more appropriate.

Firebase is, essentially, a key-value store that you can use to quickly prototype and run a simple application, either native mobile or in-browser javascript.

They include all the authentication stuff and website hosting, so it takes away a lot of the pain of getting started and allows you to get something up and running really quickly. I haven’t played with it very much, but from what I’ve seen and heard it is a fantastic product!

What Firebase will not do for you, however, is any business logic on your stored data. You would have to incorporate that into the front-end application, which for co

Firebase is, essentially, a key-value store that you can use to quickly prototype and run a simple application, either native mobile or in-browser javascript.

They include all the authentication stuff and website hosting, so it takes away a lot of the pain of getting started and allows you to get something up and running really quickly. I haven’t played with it very much, but from what I’ve seen and heard it is a fantastic product!

What Firebase will not do for you, however, is any business logic on your stored data. You would have to incorporate that into the front-end application, which for complex stuff is simply not a viable option.

If you’re making something cool that just needs a fast, reliable database, user authentication and usage tracking, then Firebase is a great way to go. If you’re building something that has complex back-end business rules then you’re going to run into difficulties.

You can totally combine it with a custom application of course, store your data in Firebase and have a middleware layer that does the business logic, but for most business cases this isn’t really a good compromise.