Node, microservices and IOLmobile: Meetup Review

Yesterday (23 Feb, 2015) I attended the second Node.js Cape Town meetup of the year hosted and presented by Evan Summers (@evanxsummers). It was one of the most informative and comprehensive meetups that I have ever attended.

Evan Summers is a Software Engineer at IOLMobile.co.za, one of the most popular news websites in South Africa. The presentation was an in-depth look into how Evan and his team moved from a Java stack to a microservices architecture using Node.js. He used their company website as a case study for his presentation.

The biggest highlight for me was how Evan was able to demystify some of the common misconceptions about using Node.js(and JavaScript) as a serious platform for building enterprise applications.

Slides for the presentation

Below is a summary of some of the topics that Evan spoke about:

Node.js

The presentation started with absolute Node.js basics - definition, how it works, best practises, pros and cons.

  • Node.js is an open source, cross-platform runtime environment for server-side and networking applications. It is V8 (Chrome JS engine) + libuv + JS libs.
  • What makes Node.js a good fit for server apps? non-blocking, event-driven I/O.
  • It is good for single purpose stand alone apps that fit perfectly into the microservices architecture.
  • Run CPU intensive tasks in separate processes and use message queues to manage
  • Node.js has resulted in more developer happiness and satisfaction

JavaScript

Evan touched a bit about the history of JavaScript, its present state, and the future. JavaScript is language that was initially designed in 10 days and shipped with a lot of quacks that we still deal with today. However, beyond these quacks it turns out that JavaScript has some very good parts and it is worth learning.

  • Learn about the bad parts and how to avoid them (use a tools like JSLint and JSHint)
  • Use promises and control flow libraries to write better JavaScript/Node.js apps
  • Use JavaScript frameworks for building large apps
  • Use compile-to-JavaScript languages like CoffeeScript and TypeScript
  • JavaScript is evolving, learn about ES6 and ES7 features - use Google Traceur to start using future features today

Micro Services

Tech evolution is moving towards a microservices architecture.

  • Use the principles of the 12Factor App to write stateless stand alone apps that do one thing and one only.
  • Services maintain individual versions and should be deployed individually
  • Node is a perfect fit for the microservices architecture
  • Use something like Redis or messages queues to share state
  • Microservices architecture - Docker, Raik, Redis, NoSQL, nginx, e.t.c..
  • Benefits of micro services architecture - decentralised teams, faster deployments, easier for new team members to start contributing, supports use of multiple languages

IOLMobile

The IOLMobile.co.za website uses express on the back-end and Angular on the the front-end.

  • Stack - Express, Angular, Redis, elastic search, nginx, Cloudflare
  • Internal microservices - Weather app, Matric results, Search
  • Faster development cycle, improved performance, faster response times
  • Future Plans - phasing out Java in favour of Node.js.

Conclusion

Evan says that he hopes he doesn't have to write Java again because of the joy he has found in Node.js. Great event, great presentation - the future of Node.js surely looks bright in South Africa.

Thank you Evan!

Qawelesizwe

Qawelesizwe

Software Developer who loves making and breaking things. Creator and maintainer of NodeZA.