Faster Development and Better Performance with Nodal on Heroku
Nodal is a fairly new player in the world of open source. Being built upon an ideology of scalable architecture allows for efficient APIs. It is a highly-extensible full-service framework which makes it very compatible with Heroku and the 12 Factor App. With this framework I’ve been able to create effective products while saving time and minimizing technical debt.
Nodal is meant to be stateless and distributed. Here’s what that means:
A stateless approach allows you to achieve more predictable functionality for your end user experience. Any extra state an application has to consider introduces possible areas for bugs. Learn more about stateless here.
I like to think of state as being synonymous with commitments. The more commitments I have to consider, the less brain capacity I have to dedicate to each. Being mindful of my commitments (state) helps me focus.
There is also a point about building distributed systems that is great, but I take it less literally. My approach is simple — have a separate backend API server and front-end static server. If there is any more work to making the API distributed (aside from front-end/backend), I follow the Monolith First approach.
How We’ve Utilized Nodal
As a Consulting Parter of Heroku, we have many specialized tools to handle all of our business workflows. One could say, “we’ve got the right tool for the job”. While having the appropriate tools is definitely beneficial, it has also created a situation where our data is disparate.
With Nodal, we are able to normalize those disparate systems. Nodal can expose all of our data through a consistent API, that programmers and business report builders alike can easily consume. Go Nimbly can have real-time profitability reporting and accurate forecasts across sales & delivery.
Now when we add new tools, the data is exposed via Nodal APIs on Heroku. Normalizing the data makes it more fluid and scalable which is great for us as our business continues to grow.
Why I Love Nodal
1) Framework for decisions
Currently, my favorite part of Nodal is the framework in general, which comes with some free features. For example, request query parameters are mapped directly to the ORM.
- GET all the projects that are not archived — https://gonimbly-nodal-post-1.herokuapp.com/v1/projects?archived__is=false
- GET all the projects that have a “budget” for billing — https://gonimbly-nodal-post-1.herokuapp.com/v1/projects?billing__jsoncontains=budget
- GET all “projects” where the
due_dateis greater than or equal “2017–01–15” and
due_dateis less than or equal “2017–03–31” — https://gonimbly-nodal-post-1.herokuapp.com/v1/projects?due_date__gte=2017-01-15&due_date__lte=2017-03-31
This feature alone saves me a bunch of time in deciding how to handle my API’s parameters. There are plenty of other great features, check them out in the video below.
2) Deploy and Scale with Heroku
Since a Nodal API is Stateless by design, it is quite fast and scalable. Meaning that if the demand of your application exceeds your current computational capacity, you can easily boost power to your API by adding Heroku Dynos without worrying about your API sharing state across those Dynos.
3) ECMAScript 2015 (ES6)
Keith Horwood wrote a lot of functionality in the midst of the Node and iojs showdown, with a focus on ES6. So currently Nodal supports Node.js v6.x. It’s more future proof as Node continues to mature as an ecosystem. Arrow functions and all the goodness is yours!
It hasn’t always been rainbows and butterflies with this new tool. I’ve spent a lot of my time reading documentation, source code, and have gone through trial & error to figure out how to best use Nodal. I’m still learning and I hope to check out the GraphQL support next. Despite being relatively new, it is a powerful tool I’ll continue to leverage it in my business.
The tools we use should ultimately make life easier for us. Nodal does this for me by saving time and providing a strong foundation to build robust, fast, and scalable APIs.
Other Useful Links
- Some extra documentation
- Podcast with Keith Horwood on Nodal
- Polybit for Alternate Hosting
- Project repository for Heroku App
Go Nimbly is the premier marketing and sales consultancy for SaaS companies. Founded and headquartered in San Francisco, Go Nimbly provides customers with a customized team to manage everything from strategy to execution for their marketing and sales systems. To learn more, visit gonimbly.com.