covers-pexels-markus-winkler-4057663.jpg

Why we added Node.js to our tech stack

Written by Madis

August 05, 2020 | 4 min read

We’ve expanded our tech stack to include Node.js. Prior to this change, we were building our backend in Python and Django, while using React for front end development. In the recent months, we had internal team discussions about our competencies and how we have a lot of experience as a team in JavaScript. Since Node.js is a framework that is built on JavaScript, we found ourselves naturally inclined towards including it in our tech stack as the next step.

Before I list the many reasons we saw Node.js as a good fit for us, I would like to mention that we have worked with Node.js for some of our digital products. One such example is our partner Eziil’s software to manage big autonomous robots, which is built with Node.js in the backend. 

Here are a few detailed reasons on why we chose Node.js:

1. It is very fast

Node.js use V8 engines by Google that have the ability to compile and execute JavaScript at a rapid pace. This engine used in Node.js implementation was originally developed by Google for the Chrome browser. Written in C++, Chrome’s V8 is used to compile functions written in JavaScript into machine code, and it does the job at an impressive speed. 

Moreover, Node.JS has the magical event loop, which is the single thread performing all the I/O operations in an asynchronized manner. Non-blocking Input/Output and asynchronous request handling makes Node.js capable of processing requests without any delays. While on the backend, synchronous processing assumes that code is executed in a sequence. Therefore, each request blocks a thread, making other requests wait for it to be finished. Asynchronous processing allows requests to be processed without blocking (non-blocking I/O) the thread. So after a request is processed, it can push out a callback and continue serving requests. That helps Node.js make the most of single threading, resulting in short response time and concurrent processing.

Node.js helps enterprises build fast, flexible network applications that can handle parallel connections with high throughput. Many leading companies switched technologies to develop Node.js applications and noticed significant improvements – PayPal, for instance, noticed a 35 percent decrease in response time since migrating from Java.

2. It is simple

With Node.js, we really enjoy easy sharing one language both on server and client sides, and no necessity to switch between back-end and front-end. Applications written in Node.js require fewer files and less code compared to those with different languages for front-end and back-end. You can also reuse and share the code between the front-end and back-end parts of your application, which speed up the development process. It requires one code, one deployment, and everything in one place.

This is especially helpful when we are helping initial stage startups with product development, as we can have a team of full-stack developers for both sides, and cut costs on the developer/hour delivering high value at a lower price.

Moreover, Node.js is very easy to maintain and modify. With Node.JS, we develop a bunch of small applications instead of building a small sized web application. This allows web developers to add or change functionality with a lot of ease, without any need to make any changes in the source code.

3. Scalability is at its core

Most of our clients choose to develop lightweight and fast systems with good real-time response that can be scaled up later. Since we use this lean approach of development, we benefit greatly from Node’s scalability that is achieved by the load balancing and the capability to handle a huge number of concurrent connections. Node.js apps support both vertical and horizontal scaling.

In addition, Node.js is well-suited for microservices architecture, which is really beneficial for the projects that will scale and grow in the future. This architectural style is best described by Martin Fowler and James Lewis as “an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.” With each microservice communicating with the database directly through streams, such architecture also allows for better performance and speed of application. 

4. Great for MVP development and faster time-to-market

Time for delivery is an extremely important factor for us as we want to help most of our clients reduce time-to-market. Since Node.js is a lightweight technology it can massively reduce application development time. Also simple deployments help us get feedback immediately from the production environment. 

All the Node.JS applications use a basic event-based architecture. This means everything executed on it is a series of asynchronous callbacks. This allows Node.JS to run single threaded applications easily unlike other web technologies where a new thread is spawned according to the request of the client. This not only makes the application lightweight, but also creates the foundation for non-blocking I/O features in Node.JS.

Most of our projects begin with MVP development. Since an MVP is the rudimentary stage on the way to a full-fledged application, Node.js enables us to develop a product that can be created in a short budget and time-span simply to validate the marketability of the idea. 

Conclusion

Thorgate is a product development company proud of its tech stack. We have excelled in delivering Python-based digital products over the last 8+ years. Adding Node.js to our tech stack at this stage is exciting yet a very natural evolution. Quality, fast delivery and optimized costs remain our priority for our clients at Thorgate, and we are glad that Node.js enables us in that. 

If you have any questions, or would like to discuss an idea please email me at madis@thorgate.eu

Read related articles:

What is a Lean Requirements Workshop?

How can a startup get faster product development?

Considering going digital? Start with a Minimum Viable Product!