Firebase is a Google platform, designed for mobile developers who need a simple database for their project.
That’s all Firebase is, it is just another database essentially, like you would build with SQL and it just makes it easier by implementing lots of features and functionality essential for mobile apps. Firebase gives you many tools. It can handle Authentication, notifications, database, storage and even machine learning. It costs almost nothing and the performance is great even with many users accessing it at the same time.
You could do the same thing with a lot more work and develop your own system for handling files, database, authentication, security and a lot more on your server. That way you would be able to expand based on your needs in no time. But Firebase promises the same thing. If you have more customers/users, Firebase will handle it and charge you for what bandwidth you used at the end of each month.
It is really a great option for beginners. I am not an advanced Java programmer. It is my hobby and i wanted to make an app. Firebase was the best option for me because i just focused on coding Java. No other languages, no servers, no port forwarding nonsense. With the database, i stored some values and lists and later retrieved them in arrays and handled everything on the device. I used authentication with google and email, which was also surprisingly easy. Setting up notifications not so much. It requires some additional configuration with cloud functions, otherwise you can’t send notifications while the user is not using your app (which i think is the whole point).
Then you try and do a query. Let’s say you have pictures, and a user can access them. So far Firebase is fast and easy to use. But then a user likes a picture. You can easily store a “Likes” attribute under that specific picture and then under it store the user IDs of the people who like it. Sounds simple, and if you have some experience with databases it really is. So you want to find the pictures that you liked as a user. Searching, (querying) in the database “pictures” with your user ID, to retrieve a list of pictures that under “Likes” have your ID, is impossible.
Actually, it is possible. I managed to do this. But… i had to make the user download the whole database “pictures” (not the actual files, just the database. Still lots of junk data) and then do the search/query in the device. So i waste the users bandwidth and processing power, so that Google doesn’t have to waste their power on their servers. And let’s say you are fine with this. If your app becomes huge, and you want to improve performance go to AWS and setup a more serious backend solution, you need to do the whole thing from scratch and just abandon all the Firebase progress you had made.
It is not all bad though. The problem in my case was that i had a “social network” part in my app. Something that Firebase isn’t designed for. On the other hand, people with apps that require a simpler backend in terms of queries will have a great experience with the Firebase platform.