Creating Nobackend Applications with Firebase

Nobackend does not mean there is no back-end but rather the back-end infrastructure is hidden from the developer, all the functionality being provided by a framework, a library or a service.

Firebase provides a transparent back-end for web and mobile applications that is meant to relieve the developer from the hassles related to data transfer, storage and synchronization across devices. The application needs to reference a 20KB JavaScript library and it can obtain a handle to a JSON tree of data. Upon adding or updating data into the tree, the library automatically synchronizes the data with the Firebase back-end servers and updates all related devices with the new values. Depending on network’s speed, propagating changes from one device to others can take around 100ms or less. When the network is down, Firebase stores data changes locally and synchronizes them when the connection is back. We asked Andrew Lee, Co-founder and CTO, what infrastructure they are using for their servers, but he did not want to comment on that.

Firebase supports all major browsers on the desktop including IE7+, Firefox 3+, Chrome, Safari, and Opera, mobile browsers for iOS and Android, but it can also run on a server setup using Node.js or Java. The library comes with a REST API and accompanying libraries for Java, Python, PHP, Ruby and Clojure.

Firebase currently can handle strings, numbers, booleans and objects, which in turn can include more strings, numbers, booleans and other objects. We wanted to know how data is kept internally, but Lee did not disclose details. He did answer other questions for our readers:

Dropbox' Datastore API allows one to query the storage while Firebase has limited query capabilities. Do you intend to improve on that?

Yes we do! We have some features for this already (you can window and limit based on a single "priority", which is essentially an index). Firebase has two big advantages over the Datastore API: (1) It can be used to share data between multiple users. (2) It can scale to very large sizes. The datastore API is only useful for sharing data between devices with yourself and only for a very small data set (up to 10 MB).

Can you tell us a bit about using Firebase on the server side?

We support both Node.js and Java on the server. The API works the same as it does on the clients -- you can synchronize and modify shared JSON objects. Many of our larger customers use a server-side JS client in production.

Is Firebase licensable to an enterprise that wants to run it on their own servers?

We're happy to discuss this on a customer-by-customer roadmap.

What is on your roadmap?

Lots of things! More platform support (C# is likely next), faster sync speeds, improved Forge and other tools, better tutorials and documentation, and more powerful API features!

Data is secured via user authentication, security rules that establish how authenticated users can modify the data, and all transfers are done via SSL.

Applications built with Firebase can be integrated with other services running in the cloud or developers’ servers, covering additional data computation needs.

Firebase came out of beta last month. The pricing plans include a free Development edition, four production editions with various levels of data transfer and storage limits, and an enterprise edition that is negotiated for each case.