StrongLoop, the company which previously launched an Enterprise-Ready Node.js distribution, is today launching a new open-source mobile backend-as-a-service product named LoopBack.
Mobile backends as a service raise the level of abstraction of backend development by offering a complete back-end solution as off-the-shelf components. Services that are typically included as part of a back-end-as-a-service include:
- User management (registration, login, authorization)
- Data storage
- Analytics
Whereas many existing backend-as-as-a-service services, such as Firebase and Parse, are hosted solutions and store your data in their data center. StrongLoop's LoopBack can be hosted on your own infrastructure (LoopBack from day one will support six clouds: Amazon, Heroku, Cloud Foundry, Red Hat’s OpenShift, Rackspace Cloud and Cloud9 IDE), thereby retaining access to all data, as well as supporting custom changes and additions.
In addition to announcing LoopBack, StrongLoop also announced that is has raised $8 million in venture capital from Shasta Ventures and Ignition Partners, and that Issac Roth, has joined the company as its CEO.
InfoQ spoke with Issac Roth, StrongLoop's new CEO.
Your introductory video mentions LinkedIn as example of using Node.js for building backends for mobile (as well as some other companies). Does StrongLoop collaborate with these companies directly, or does it do something similar to/inspired by them?
Issac Roth: StrongLoop has the StrongLoop Technical Advisory Council which is a forum for us to be inspired by and learn from their specific implementations along with members who are running large scale complex Node deployments to be able to learn from each other and exchange ideas. Much of our product development from the certified modules in StrongNode to the architecture and specific functions in LoopBack have come out of this advisory council. Even our engagement with Node Inspector came from this, where all members were saying: "Hey you know there's no good debugger." We have some unfulfilled requests too, like the fact that npm compiles binary modules and most people don't have compilers on their production machines so they have to script up a kind of build-and-deploy process.
What makes JavaScript/Node.js a good platform for mobile back-end development? For webapps it is arguably sharing expertise/code between client and server. However, most native mobile apps are written in Java or Objective-C, so sharing knowledge/code doesn't apply, or are you primarily targeting the mobile web?
Issac Roth: As you point out, for mobile web and hybrid (i.e. PhoneGap) applications, sharing code between client and server is terrific.
But it also turns out that most developers know JavaScript and it's a great scripting language. It runs fast and its fast to develop in. When you're writing a mobile app, in order to optimize speed, bandwidth and battery, you really need fine grained APIs on the backed to push and pull only the data needed for the specific interaction the user is having at that moment. It wastes people's mobile plans if you pull in a whole customer record, so you just want to populate the few fields on screen and then when they move to the next screen by swiping or pushing buttons you load the next bit of data. This level of granularity means you're constantly creating backend APIs and customizing them. You also want to push as much computation and fetching/sorting/massaging data to the backend since it's more efficient to do it there.
So you want to program in a language that's efficient, that's fast to code in, that runs quickly, that scales well, and that you already know. JavaScript matches that description for most mobile developers, whether they're writing in Android Java, Objective-C, or JavaScript. The faster you can be writing backend code, the more time you can focus on the frontend interaction which is generally what your app gets judged by. What we hear from those who have chosen Node is that they just love it because it's fast (and by fast, they mean fast to run but mostly fast to code in.)
You could fairly say that Node is immature as a language or ecosystem, but that is rapidly changing, and we formed StrongLoop actually to mature Node. Many of the issues that have been a problem we are trying to address:
- Navigating the module ecosystem and not knowing which modules are good & reliable… we now certify modules and stand behind them
- tooling.. as we have done with Node Inspector we are investing in better tooling to make developers productive - deployments and scaling.. StrongNode has cluster APIs and cluster management and we're continuing along to create open tooling for these issues
- error tracking.. Bert last week presented his prototype for evolving Node so as to make errors easier to track down.
- Event-based flow control is hard.. we've embraced Q and Async for different styles of flow control, and Bert's Tasks proposal takes this one step further.
So Node is coming along to be a world-class programming environment leveraging the fact that JavaScript is known by millions of programmers and is easy to learn.
The idea of a mBaaS is that it's essentially one or more off-the-shelf components. It's essentially "done" software, i.e. you don't have to hack it yourself, ideally. What benefits do users of LoopBack get from the fact that it has been written using Node.js, as opposed to any other technology?
Issac Roth: You're right, it's generally off-the-shelf APIs. However, most mBaaS have created some way of extending their off-the-shelf functionality, in recognition of the fact that developers usually need to customize (for example, Parse calls this "cloud code"). Interestingly, almost every mBaaS allows this extension using JavaScript and JavaScript alone, suggesting even more that JavaScript is the de-facto language of mobile backends.
What's cool about LoopBack is that it takes this idea to another level. You get "done" software components, but you can extend this with the giant 40,000-strong ecosystem of community node modules. And we based LoopBack on community "standards" rather than writing our own stuff, so for example if you need to use a new authentication scheme for data access, we used Passport, so you can use any of the available plug-ins for Passport to get that scheme. If you want to add one of the Express plug-ins, that will work well with LoopBack.
An enterprise architect we talked to early in the development called this the ability to be "composable." He wanted to mix and match components, extend the core capabilities, and know that the software would grow with him not just get stuck as a "done" piece of software that could not be advanced.
Plus it's great insurance. If the vendor (StrongLoop in this case) goes away or charges too much, with another mBaaS you're stuck. With LoopBack, you can just hack the code yourself or find a consultant to move it in the direction you want.
LoopBack is open source and available for download from its website.