Problem No. 2: Choosing a Node MVC framework
After AnyPresence decided on Node.js, we faced the question of which MVC framework to select. The top five we considered included Express.js, Meteor.js, Sail.js, Derby, and SocketStream. Ultimately, we chose Sails.js for its permissive license, robust community, flexibility, and readiness out of the box.
AnyPresence is architected with separation between design and runtime environments. The platform provides developers with full access to the source code across the entire application stack. Therefore, an ideal framework for us would have a permissive open source license based on MIT or BSD, enabling modification and distribution without sacrificing confidentiality of proprietary components. Sails.js comes with the MIT license.
Sails.js boasts a large and active community on GitHub, with thousands of people who either follow the repository or who have forked it. Such a large following indicates solid adoption from the community, which ensures a more mature and robust product.
While being very full-featured out of the box, Sails.js is based on Express.js, perhaps the most pervasive Node.js application framework in existence. As a benefit, any Express-based middleware can be plugged into Sails.js and utilized, giving Sails developers access to hundreds of open source packages that run on the Express.js platform.
Finally, because Sails.js comes with so many basic features out of the box, we immediately got many capabilities we wanted without having to reinvent anything. These included the following features:
- Waterline ORM. Waterline was the perfect ORM for us, as the team could write a pluggable database adapter to connect to many different systems. Some frameworks only allow for relational databases or specific NoSQL databases such as MongoDB. If you wanted one for SOAP, you had to use a different solution. Having one layer to connect to different data sources was key for AnyPresence.
- A plethora of database adapters. Adapters are available in the Sails.js community for MySQL, MongoDB, PostgreSQL, Redis, and Microsoft SQL Server. This was important for the AnyPresence platform because being able to use a single framework regardless of the back-end data store makes life much simpler.
- Rapid and agile development. With Sails.js, it's very quick and easy to get stuff up and running using prototyping. You can iterate more quickly. It’s easy to view and test changes, which is not the case if you are developing with Java or .Net. Enterprise Java development, for example, is very bloated and cumbersome compared to development with Sails.js. Using Sails.js, developers are more productive due to the shorter code/test cycle.
There are many factors to consider when choosing a platform for your enterprise applications or customers. When AnyPresence debated the adoption of Java, .Net, or Node.js for our enterprise development platform, the decision wasn’t obvious or made overnight. In the end, the scalability, speed, enterprise readiness, and community support of Node.js swayed our engineers.
Sign up for CIO Asia eNewsletters.