DEV Community

Cover image for 10 Best Web Development Stacks
Snevy1
Snevy1

Posted on

10 Best Web Development Stacks

A Web development stack or tech stack consists of a set of web frameworks, programming languages, servers, and databases that when combined help in producing seamless, fully-fledged web applications. Choosing the right stack is crucial because this determines the speed, security, scalability, and overall efficiency of your app.

Here are the best and most popular tech stacks:

1. MERN STACK

####mern stack photo

This stack consists of:

  • MongoDB: NoSQL database
  • ExpressJs: A nodeJs backend framework
  • React: A frontend Javascript library
  • NodeJs: Javascript runtime-environment

2. MEAN STACK

####Mean stack

This stack is quite similar to MERN except that it uses Angular instead of React.
Technologies:

  • MongoDB: NoSQL database;
  • ExpressJs: A nodeJs backend framework
  • Angular: A frontend Javascript library
  • NodeJs: Javascript runtime-environment

3. LAMP STACK

####lamp stack

  • Linux: Open-source operating system
  • Apache: Free and open source HTTP web server
  • MySQL: Relational database Management System
  • PHP: Backend language

4. SERN STACK

####sern stack

  • SQL: Language of relational databases
  • ExpressJs
  • React
  • NodeJs

5. Vue.js STACK

####vuejs stack photo

  • Vuejs: A frontend javascript framework
  • NodeJs
  • MongoDB
  • ExpressJs

6. SERVERLESS STACK

######serverless stack photo

  • AWS lambda: According to Amazon, is an event-driven serverless computing platform provided by Amazon
  • API Gateway: As per Nginx, it receives and directs client API requests, effectively routing them to the relevant Microservice using techniques such as request routing, composition, and protocol translation.
  • DynamoDB: NoSQL database by Amazon designed to run high performance applications at any scale
  • React: Frontend library

7. ASP.NET STACK

######Asp.net stack

  • ASP.Net: Microsoft framework for building web apps with .NET and C#
  • C#: programming language
  • SQL Server: Relational database

8. JAVA STACK

######java stack

  • Java: Programming language
  • Spring boot: Java framework
  • MySQL/PostgreSQL: Relational Databases

9.Ruby on Rails

######Ruby on rails stack

  • Ruby: programming language
  • Rails: Ruby Framework
  • SQLite: C library that has a server and database

10. JAMstack

######jam stack photo

  • Javascript: programming language
  • API: Application Programming Interface
  • Markup: Generated by static site generators like Jekyll, Gatsby, etc

In conclusion
The choice of a tech stack really boils down to what you want to achieve. Some of the factors to consider are scalability, security, cost and availability of integration tools, and ease of solving a problem.

Top comments (36)

Collapse
 
sreno77 profile image
Scott Reno

Where's Django or Flask?

Collapse
 
muhyilmaz profile image
MUHAMMED YILMAZ

python? no need it .ç.

Collapse
 
dagnelies profile image
Arnaud Dagnelies

And fastapi!

Collapse
 
siy profile image
Sergiy Yevtushenko

Ohh, no, avoid Spring Boot as a plague. There are countless number of frameworks which will not be digging holes in your pocket for hosting or cloud services.

Collapse
 
dagnelies profile image
Arnaud Dagnelies • Edited

How is hosting price related to the stack you use? Java and Spring Boot are actually fairly efficient in resources consumption. You can serve many thousands of requests per minute on a cheap 5$ VM... What costs are you talking about?

Collapse
 
siy profile image
Sergiy Yevtushenko

Spring not even close to "fairly efficient" regarding resources. It requires much more memory and CPU than actually necessary. The vast majority of other frameworks consume much less memory and require much less CPU to handle the same load as Spring.
Besides these inefficiencies, Spring makes apps much harder to support, evolve and maintain.

Thread Thread
 
dagnelies profile image
Arnaud Dagnelies • Edited

I don't know what kind of experience you had with spring boot, but I had the opposite experience. I find it very productive and efficient. More so than the Python/JS ecosystem. Perhaps it's also because I'm more experienced with it. It is IMHO very mature and stable regarding long term support too.

Edit: it's also a question of size. Spring Boot is like a truck while Python/JS is more like a scooter. So depending on the complexity of the task at hand, one or the other might be more practical.

Thread Thread
 
siy profile image
Sergiy Yevtushenko

I've worked with Spring for about 15 years and decided that I just don't want to waste time on it anymore. It is prone to subtle, hard to nail down and fix issues. Simple adding of a dependency (not even using it!) can render an entire project unusable. Annotation abuse results in unreadable code. Bad practices are ubiquitous - from AOP expressions in strings to exception handlers and validation teared off from main business logic. Vast number of errors are shifted from compile time to run-time - maintainability killer "feature". Etc., etc., etc.
And no, Spring is not a truck. It's a 19th century bike. Any other Java web framework (even Spring-lookalike Micronaut) is a StarShip compared to Spring.

Thread Thread
 
dagnelies profile image
Arnaud Dagnelies • Edited

I got ~10 years boot and the code still feels well organized now. Whatever, let's agree to disagree. Out of curiosity, what's your go-to framework(s) ?

Thread Thread
 
dagnelies profile image
Arnaud Dagnelies

Actually, I'm doing some other stuff lately, using JS/TS edge for hobby stuff and some other non-spring J2EE stuff for work ...and I suffer. :( There is not a single week going by where I thing "OMG, this could be done so much easier in Spring instead". At the end of the day, it's just a big toolbox, with kind of everything in it. Heck, you aren't forced to use any of those tools, and I guess it can end up pretty bad if you use all the tools carelessly. But they are here, and used wisely, they are very handy. Perhpas I should do a small tutorial someday to show my appreciation for it ;P

Thread Thread
 
siy profile image
Sergiy Yevtushenko

"So much easier" usually means "I already know how to do it and used to that approach".

Thread Thread
 
siy profile image
Sergiy Yevtushenko

Heavily depends on the task - from Vert.x to Jooby or even bare undertow.

Thread Thread
 
dagnelies profile image
Arnaud Dagnelies

Vert.x and undertow are too bare bones for me. You're either hunting libs or reinventing the wheel. Jooby looked promising, but it's risky since it's a one-man team. For hobby purposes it may do, but otherwise I'd rather pass. I also thought you'd suggest non-java stuff since they're typically more on the lightweight side. Spring is rather heavyweight, I grant you that.

Thread Thread
 
siy profile image
Sergiy Yevtushenko

Vert.x is not even close to bare bones. But if even this is not enough, you can always use Quarkus.
Again, it heavily depends on the project. For example, none of the existing frameworks support functional style without falling into inconvenient reactive streams. So, any framework is "bare bones" in this regard because significant amount of gluing code is necessary. Spring here looking worse than others because its "features" require a lot of workarounds.
As for non-Java stuff: I see no need for them as Java has great combination of high performance and ergonomics. If you look at the Techempower benchmark, you'll see many Java frameworks at the top, along with C/C++ and Rust, but none of them are even close in regard to ergonomics and ecosystem to Java. And Spring is near the bottom, competing with interpreted languages. That's the price of Spring "magic".

Thread Thread
 
dagnelies profile image
Arnaud Dagnelies

You cite so many frameworks, but have you really built something large with them? Quarkus has no reflection, so it's a no-go. Dunno about vert.x. Techempowers benchmarks are also flawed and should be taken with a grain of salt. Some frameworks do simply more effort to game the system, like writing contrived code, disabling input validation, optimizing Linux settings and many other stuff. Lured by the promise of performance, I once used FastAPI for some small project. Out of the box, without heavily tweaking, the performance was abyssal. Way worse than the Spring counterpart, despite the benchmark promised otherwise.

Anyway, Spring Boot has everything I need, including enough performance, so I'm happy with it. Also, regarding your 15 years of experience with Spring Boot, I guess you rather mean the older Spring MVC, since Boot was released 9 years ago. Perhaps that's one of the reason the experience was less smooth for you.

Thread Thread
 
siy profile image
Sergiy Yevtushenko

Reflection is a platform feature, not a framework feature. If you mean dependency injection, then Quarkus has its own DI container based on Jakarta DI.

Vert.x, strictly speaking, not a framework but a toolkit. You can use any DI container with it, for example Google Guice.

Techempower benchmarks are open source. If you believe that they are flawed, you can easily propose your changes to it and fix the flaws, if any. Also, all test conditions are identical for all frameworks and described at Techempower website.

I've mentioned Spring, not Spring Boot. Spring Boot makes things only worse, not better. And no, this is not the reason why I don't like Spring. My main dissatisfaction comes from its poor design and how it transforms each application into a set of barely related to each other pieces. It substitutes lack of coupling with lack of cohesion. Most Spring "best practices" are antipatterns. Another source of dissatisfaction - reluctance to adopt modern approaches. When something like that finally happens, they adopt the worst possible option, to discourage its use. Spring WebFlux is a great example of this behavior. Reactive streams are known for their complex API and inconvenient artificial mental model, unusable for most use cases. Yet, Spring adopted exactly this model and WebFlux remains a niche solution, despite sensible performance benefits (even with Spring abuse of run-time reflection, WebFlux is much faster than standard Spring MVC).

Thread Thread
 
dagnelies profile image
Arnaud Dagnelies

I indeed meant reflection. Due to Quarkus compiling into "native images" (faster to start, slower to run btw) it breaks all libs relying on reflection. Nevermind.

I already thought about improving the benchmark, but it's time consuming and life is short. I just wanted to say they should be taken cautiously and a quick self test is recommended.

I'm also curious about what use case prompted you to use webflux. Somehow I never really needed it. I also wonder if the upcoming virtual threads in Java make it obsolete altogether. After all, it's main purpose was dealing with blocking IO.

Thread Thread
 
siy profile image
Sergiy Yevtushenko • Edited

I indeed meant reflection. Due to Quarkus compiling into "native images" (faster to start, slower to run btw) it breaks all libs relying on reflection. Nevermind.

Native image is not a requirement. And even for native image, there are workarounds which allow libraries which rely on reflection to work properly. Even Spring Boot apps can be compiled to native image, although Spring is entirely built on reflection.

I already thought about improving the benchmark, but it's time consuming and life is short. I just wanted to say they should be taken cautiously and a quick self test is recommended.

I think that Spring authors and enthusiasts already did their best to improve the benchmark as much as possible. Results remain disappointing. But at least it does not fail in the middle of the test, as it was in previous rounds.

I'm also curious about what use case prompted you to use webflux.

WebFlux is much better at handling load from highly interactive apps like, for example, chats. Such a load has random spikes and usually requires supporting a high number of connections. And, well, compared to regular Spring MVC it is blazingly fast. Performance still poor compared to, for example, Vert.x + Mutiny (for same API style) though. I really don't understand how they were able to screw performance so badly because Project Reactor uses Netty under the hood (just like Vert.x).

I also wonder if the upcoming virtual threads in Java make it obsolete altogether. After all, it's main purpose was dealing with blocking IO.

They are not "upcoming" anymore since Java 21 release. My experiments show, that while virtual threads allow the application to survive under peaks, but they do not improve performance.

Collapse
 
kirschd profile image
kirschd

Good info, thx. Check your lamp stack image though..

Collapse
 
jpkeisala profile image
Jukka-Pekka Keisala • Edited

Why these are "10 best"?

This .NET stack graph is 10+ years old. Meanwhile there has come all popular frontend frameworks (react, vue, angular, svelte...) and also on C# side Blazor, Razor Pages, ASP.NET WebAPI etc.
Also, among many more Django is not mentioned...

Collapse
 
aloisseckar profile image
Alois Sečkár

Vue.js is moving from Webpack to Vite.

Also Nuxt (not to be confused with Next.js) deserves to be mentioned here as it allows to incorporate both frontend and backend into one codebase with its own runtime server (Nitro).

Collapse
 
fatihkurtl profile image
Fatih Kurt

vue.js, vite, django, django rest framework and postgresql combination is powerfull

Collapse
 
snevy1 profile image
Snevy1

Sure

Collapse
 
roboticsandcloud profile image
Fei

Good ~

Collapse
 
thierrydeville22 profile image
thierrydeville22 • Edited

Missing the best stack ever
TALL stack
Tailwind Alpine Laravel Livewire

Collapse
 
scofieldidehen profile image
Scofield Idehen

Check your image again, they are not showing, nice article.

Collapse
 
snevy1 profile image
Snevy1

Okay, thanks for the feedback. Appreciated

Collapse
 
volodyslav profile image
Volodyslav

Fastapi, MySql, React?