Meet The FIT StackJune 29, 2015
Our secret to building MVPs rapidly is what we like to call the FIT Stack.
This stands for:
- Flybase (for the backend)
- Interface (usually angular.js)
- Thin servers (reactors, usually built in node.js, when or if needed)
This lets us rapidly build MVPs, and since we’ve got a skeleton framework in place, we can build our MVPs with minimal coding or development time.
If you aren’t familiar with Flybase, it’s a powerful hosted real-time database. Basically it allows you to connect to a datastore using super-simple SDKs and synchronize your data as it changes, no matter how many clients are connected. Don’t be fooled: while Flybase can be used as a simple “Backend-as-a-Service” (with impressive results!), its strengths with real-time should make it a serious consideration even for complex applications.
Having a fully real-time data source means thinking differently about how your application works. Instead of using requests and responses to populate a local representation of data, you just work with the data directly and expect that other clients will react accordingly. When you first start building an app, you can accomplish this almost entirely through your front-end interface. I add a message to a chat room and other people connected to the chat room see it populate instantly. Using Flybase, you can build a surprisingly robust app without needing any back-end processing at all.
What happens, though, when you need that back-end processing? To send out emails, charge credit cards, or pull data from external sources? That’s where the reactor part comes into play.
Reactors are simple worker process (I’m writing them with Node.js, though you don’t have to) that act as a kind of microservice layer on top of your Flybase. By listening for internal and external events and updating the Flybase to reflect those events appropriately you can do powerful behind-the-scenes processing that “just works” like any other data in your database.
So now we have Flybase to store and coordinate data, a front-end web Interface for users to access the data, and Reactor processes to do out-of-band work.
Why it Rocks
This pattern is relatively simple, but it comes with some powerful advantages:
- Simple. Your front-ends (whether they’re web or native mobile) need to only know how to connect to and use Flybase. Everything else happens behind the scenes.
- Scalable. It’s usually your application servers that suffer the most as you start to scale up. With the FIT stack, you can deploy your web front-end to a CDN-backed hosting provider (like Github Pages, or Amazon S3) and your reactors don’t directly handle traffic and can process asynchronously.
- Composable. Because everything just talks to Flybase, it’s very easy to break your reactors down into tiny chunks. You can start with several reactors running in the same Node.js process, but if it makes sense to split some off or write others in other languages, no sweat.
- Real-Time. It’s no longer acceptable for modern applications to require a refresh, but building a real-time system from scratch is massively painful. By putting Flybase at the center of your app, all that pain disappears.
- Friendly. Because much of the standard CRUD functionality for an app can be managed using Flybase alone, the FIT stack is extremely accessible to developers. Front-end developers can often implement new functionality themselves without having to bottleneck on a back-end API being complete.
Using the FIT Stack, we can knock out MVPs quickly and easily and we’ll be using the FIT stack to build most of our MVPs in here.