DEV Community

Pacharapol Withayasakpunt
Pacharapol Withayasakpunt

Posted on

What is your deal-breaker for a web server framework?

First of all, I should say that, at least for me, choosing a framework should not bind you to a programming language, nor stop you from using one.

That also means, advanced language features (in JavaScript) don't really matter.

As for me, I usually use (fastify JS/TS), (FastAPI Python), (Javalin Kotlin), (Gin Golang), and the factors affecting consideration are

  1. Minimal learning curve
  2. Simplicity / minimalism to create decent security (e.g. validation, rate limit, CSRF protection, response headers)
  3. Integration with frontend frameworks
    • I actually care very little about different components of backend's integration. Never really tried Django, Spring, Rails, Grails, Nest.js.
    • Not all calls are HTTP(S). I do have to use WebSockets sometimes. Never tried gRPC or SOAP. Not yet a GraphQL frequentist.
  4. Non-frontend multi-language connection
    • So far, I usually use HTTP. But I will tried to use interprocess communication (in Electron / Node.js) if possible. I have heard things about ZeroMQ and RabbitMQ, but I have not tried.
    • I am very worried about security, despite standing only on localhost; port blocked from external (e.g. via ufw).
  5. I am considering learning testability, e.g. different types, coverage, dependency inversion.

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

The best way to debug slow web pages cover image

The best way to debug slow web pages

Tools like Page Speed Insights and Google Lighthouse are great for providing advice for front end performance issues. But what these tools can’t do, is evaluate performance across your entire stack of distributed services and applications.

Watch video

πŸ‘‹ Kindness is contagious

Please leave a ❀️ or a friendly comment on this post if you found it helpful!

Okay