Which server-side framework to choose from...

Team

2020 we are looking a huge trend in client-side rendering technologies. But arguably server-side frameworks are here to stay for a long long time. So which one should you use from. This was the year where I tried looking into all these frameworks which i previously used which I'm gonna talk about and give my take on that.

Highlights

  • Approach as per different requirements.
  • 🚀Listing mainstream serverside technologies used.
  • 📚Selection based on scenerio.
  • 📈Industry trends
  • 🎤My opinion and views.

Most the frameworks I'm gonna talk is about MVC frameworks. Bit cliche but go with technologies that your team is already famaliar with if it works fine.

The frameworks are

  • Java Spring
  • Django
  • Laravel
  • Ruby on Rails

Until and unless you want to have really high performant application with fluid client side applications you are good to go with traditional front-end stack like HTML, CSS and JS rather than jumpung on React/Vue/Angular.

Next thing is to assess the performance and scalability requirements for the product. For majority of case all frameworks would do the job. But when it comes to performance it comes down to language benchmarks in terms of execution speeds. For high-performance api java spring and some might say golang frameworks, this is required when you say 20000 requests/second, for example a trading platform.

Majority of times this won't be the case, so all other frameworks would work just fine.

Nowadays, we see a equiliberium between front-end and backed frameworks working together to get good of both worlds. So now we are predominantly witnessing the combination of both client-side, rendering and server-side rendering frameworks like Next.js for React and Nuxt.js for Vue js.

Choose based on given scenerio (Sequence matters!) -

Mocking or prototyping API Use Json Server from typicode. Get a full fake REST API with zero coding in less than 30 seconds (seriously) for free.

If the project is really really small and less complex logic. And you are making a API and does not require security and authentication.

-> Go with micro-frameworks like Flask (Python), Lumen(PHP) or simple golang(if famaliar) etc and many more as they are lightweight and does the job well.

Let's say your project is fairly big. Building API that may include authentication or other utilities for [rapid development] [descent performance]

-> Laravel, Rails, Django.

Let's say your project is fairly big. Building API that may include authentication or other utilities for [rapid development], [descent performance] [convention] [maintainable] [readable]

-> Rails, Laravel, Django[more verbose].

Your app is more focused on data visualization and machine learning stuff

-> Django, Java Spring (Spring-boot).

Let's say your project is fairly big and higly performant.[Highly performant] [Highly Scalable] [Stable]

-> Java Spring (Spring-boot), Golang.

Industry Standard

Most corporates use Java as the language has many rich feature built in like strong Object-oriented concepts, strongly typed, highly performant, scalablea and robust JVM etc. Startups are more likely to use Rails and Django or laravel for their rapid development needs. For those who know C and C++ mainly in application with huge scale use it like FANG companies.

Conclusion

If you do not know how much traffic you are dealing with on initial scale go with rapid development tools & frameworks to put into production as soon as possible and then switch to high performant frameworks if your application grows to handle big data and traffic. If you expect the application to process more requests go with java or golang, prefer java due to huge community, maturity and stability. Also can start using java's spring boot for rapid development as well.

So what do you think? What's your take on it? Which would you prefer. Lets discuss it on slack.