Here you go, Building microservices with Node.js in detail. When you’re working on a JavaScript project, it will grow in size and encounter several challenges: maintaining the code, fixing bugs, implementing new features, and accommodating more developers with different ideas.
Normally, the project begins with a monolithic architecture to put everything in a single unit that includes all the components of the application, which includes APIs, services, databases, etc. Monolithic applications are designed to be self-contained and to be the traditional way to build software.
But we have another way to build software: the Microservices architecture.
What is Microservices Architecture?
We can define it as an architecture and organization for software development which implies creating small, independent code-piece-like services. Microservices architectures are a contrast to the Monolithic architectures of the past and emerged as a solution to the old approach to web application development.
Frameworks for microservices
Node JS has a lot of frameworks in its environment, but here we will see the most popular microservices to implement.
- Nest JS is a framework for building efficient, scalable Node.js server-side applications. It uses modern JavaScript, is built with TypeScript (which preserves compatibility with pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).
- Fastify is a web framework highly focused on providing the best developer experience with the least overhead and powerful plugin architecture and is inspired by Hapi and Express.
- Seneca: is a toolkit for writing microservices and organizing the business logic of your app. You can break down your app into “stuff that happens”, rather than focusing on data models or managing dependencies.
- Molecular: is a fast, modern, and powerful microservices framework for Node.js. It helps to build efficient, reliable & scalable services and provides many features for building and managing your microservices.
Product microservice example
We will use the Fatisfy framework for this easy example. Take a look at the following steps to take on your console.
Install fastify-cli with NPM
npm install — global fastify-cli
The next command scaffolds the project:
fastify generate productMicroservice
Now we need Axios library to implement HTTP requests onto our project, and install Axios with NPM:
npm install axios — save
Inside the new project, we need to find and open the next file in your code editor:
productmicroservice\routes\example\index.js
Add a few code lines to implement an Axios HTTP call to one endpoint. This endpoint will return dummy data to respond to our microservice with the route “products”:
“use strict”;
const axios = require(“axios”);
module.exports = async function (fastify, opts) {
fastify.get(“/products”, async function (request, reply) {
const response = await axios.get(“https://hub.dummyapis.com/products");
const { data } = response;
reply.code(200).send(data);
});
};
Now it is the time to run our project:
npm run start
The easy way to test your microservice endpoint is by using the web browser, opening a new tap on your browser, and typing the next URL:
http://localhost:3000/example/products
You should see a big return of information coming from the product microservices endpoint. If you want to create another microservice (e.g., for clients), you should select one framework or the same (Fastify), and that one will return all the client’s information.
Also Read: Essential JavaScript for ReactJS Journey
Final Thoughts
To conclude, Node JS has popular frameworks to create your own microservices, or if you like, create one from scratch. You could create many microservices architecture and connect between them to share information. All of this data you can display on a webpage, and this will consume microservices endpoints.