Skip to content

Comparing backend technologies

Published: at 04:18 PM

In this post I will go through the positive and negatives of my favourite backend technologies.

Table of contents

Open Table of contents

Node.js

Node.js

Node.js has many different frameworks that are built on top of it such as express, nest.js and fastify- these all provide different ways of creating API’s. Some are more popular than others - express has been around a very long time with limited amount of updates but it’s still considered the most used framework due to how easy it is to use and its massive ecosystem.

Then we have nest.js which is typescript-based that takes inspiration from Angular’s architecture and follows the MVC (model, view, controller) pattern which can make it harder to learn.

The framework fastify is known for being a competitor and very similar to express and has been stated that it performs 4x faster than express, it also supports typescript.

Benefits

The main benefit when I use node.js as a backend is the fact I will be using the same programming language on the frontend and backend - this makes the development process much smoother and easier to understand. Also it has a huge ecosystem which means there are many npm packages available which again will save development time. It is event-driven so this would be perfect for building real-time (websockets) applications such as chats, live updates, online gaming etc. Also in my experience they’re much easier to deploy on AWS or any PaaS (platform-as-a-service) compared to others.

Negatives

It’s single-threaded which means it handles requests asynchronously using an event loop - this means it will struggle with CPU intensive tasks such as complex computations. Callback hell can be an issue but luckily async await kindof solves this issue but it can still be a challenge. Not opinionated and doesn’t follow any pattern like MVC - this could create chaos in a codebase.

C# ASP.NET

C# .NET

A very powerful web-based framework which was developer by Microsoft, it can be used to develop web applications, RESTful APIs and services. This uses the MVC design pattern similarly to nest.js and has been considered one of the fastest and most performant framework. There are many packages that can be downloaded using NuGet which is the package manager.

Benefits

It uses the MVC design pattern which creates a good structure for the project, high performance and can handle many applications without any issues due to its compiled nature. Built-in security features out of the box such that prevents common vulnerabilities like SQL injection, XSS and CSRF. Has a well-supported package system called NuGet. Scales very well due to its support for load balancing. Easily interact with a database using EF (entity framework).

Negatives

Can be a steep learning curve as most developers prefer functional v OOP. Limited tooling - most people use IDE’s such as Visual Studio Code but the preferred IDE would be Visual Studio as it already has the features ready. Limited hosting options - some PaaS support it otherwise it will be Azure only. More boilerplate needed compared to other frameworks.

Supabase

Supabase

This is a BaaS (backend-as-a-service) and is used for developers that want to save development time. It has built-in auth, websockets, cron jobs and more. It also has built-in auto-generated endpoints which again saves the developer a lot of time.

Benefits

Saves a massive amount of development time due to having auth, websockets, cron jobs out of the box. Email templates ready-to-go for different scenarios. Easily connect to any endpoint which saves a good amount of time. Easy-to-use with everything in a nice UI.

Negatives

When using SSR auth RLS can be hard to setup as the docs are more focused on client-side auth. Vendor lock-in could be a problem later down the line if the company decides to hike prices.

Conclusion

Overall I feel each technology has a good amount of benefits and negatives - I feel there is no clear-cut reason as to why someone should choose a specific technology as each one is suited to specific projects. For example if you need a small CRUD application that you want up and running in a few weeks then I feel supabase would be the best choice.

If you need a small to medium project that requires flexibility, a vast ecosystem of libraries, and a shared language across frontend and backend, then Node.js would be a strong choice. Its non-blocking, event-driven architecture makes it particularly well-suited for applications that require real-time capabilities, such as chat applications or live notifications.

On the other hand, if you’re building an enterprise-level application that demands robust security, scalability, and structured development, then ASP.NET would be a great option. It excels in handling complex business logic, integrates seamlessly with Microsoft technologies, and provides strong type safety through C#.


Previous Post
Useful snippets
Next Post
Project - Studentiser