Need advice about which tool to choose?Ask the StackShare community!
ExpressJS vs Flask vs Node.js: What are the differences?
Introduction
Node.js, ExpressJs, and Flask are popular web application frameworks that are widely used for developing server-side applications. In this Markdown code, we will explore the key differences between ExpressJS and Flask with Node.js.
Language: ExpressJs is a framework for Node.js, which uses JavaScript as its main programming language. On the other hand, Flask is a micro-framework for Python, which uses Python as its main programming language.
Architecture: ExpressJS is based on the Model-View-Controller (MVC) architecture, which separates the application into three main components. Flask, being a micro-framework, follows a more minimalistic approach and allows developers to choose the architecture that best fits their project.
Community and Ecosystem: Node.js has a larger and more active community compared to Flask. This results in a wider range of libraries, plugins, and resources available for Node.js. ExpressJS, being built on top of Node.js, inherits this strong community support.
Performance: Node.js, with its non-blocking I/O model, is known for its high performance and scalability. ExpressJS, being a Node.js framework, also benefits from this performance advantage. Flask, although efficient, may not match the same level of performance in high-traffic applications.
Learning Curve: ExpressJS, being a more feature-rich and complex framework, may have a steeper learning curve for beginners compared to Flask, which is considered to be more straightforward and easy to grasp, making it a popular choice for newcomers to web development.
Flexibility and Extensibility: ExpressJS provides a high level of flexibility and allows developers to customize their applications according to their requirements. Flask, being a micro-framework, is designed to be lightweight and simple, which may limit its extensibility compared to ExpressJS.
In Summary, the key differences between ExpressJS, Flask, and Node.js lie in their programming languages, architectures, community support, performance, learning curve, and flexibility.
My journey to developing REST APIs started with Flask Restful, and I've found it to be enough for the needs of my project back then. Now that I've started investing more time on personal projects, I've yet to decide if I should move to use Django for writing REST APIs. I often see job posts looking for Python+Django developers, but it's usually for full-stack developers. I'm primarily interested in Data Engineering, so most of my web projects are back end.
Should I continue with what I know (Flask) or move on to Django?
If you want to be a Web developer with knowledge in another frontend and NoSql technology, maybe continue with Flask. However, if you want to create very fast solutions to grow up with a new business and merge these with data analysis and other tools, Django is the answer. Basically read more about the service architecture where you feel more comfortable, Microservice or Monolithic, but please will not married with any because they solve issues to different contexts.
Currently, I am a university student, and it is my second last semester with a major in Computer science. I want to start my career in full-stack web development. I know Python with Django + PHP with Laravel, and my focus is on learning MERN stack. I am a little bit confused as to which technology I should choose: Django or Magento or MERN stack.
#newbie
I suggest you to go with MERN Stack (Mongo,express,react,Node). As you know python and django which is a plus point because you can use python and node as your backend and for front-end use react(easy to learn) and database of your choice.(Mongo or SQL)
Currently working on my company's new saas, the main goal is to manage content and user. I'm familiar with the rails framework and how it is easy to code and deploy. The thing is I'm the only dev on the project, and in terms of the tech stack, there is no preference. However, because Node.js is everywhere and there is enough dev on the market, I am stuck between choosing Rails or Node.js. I don't mind implementing Vue.js or React on the frontend, but I need a solid argument to explain to people that aren't necessarily tech-savvy as to why we should choose Rails over Nodejs.
You are probably referring to ruby on rails for web development and nodejs for building the backend. Nodejs has frameworks such as express and next which not only provides a minimal code to build a backend but also gives the flexibility to try and experiment with the framework choices. For example you can have express framework + Passport for OAuth .... etc. The flexibility and the constant improvement of the language provides a good reason to opt for nodejs. Nodejs uses javascript which makes your code uniform when you are working full stack i.e react in front end and nodejs in backend.
I'd use the following metaphor to non-technical people. Rails is like a prepackaged toolkit, which can get most of the common tasks done fairly with ease. Whereas, node.js with whatever backend framekwork of choice, is like a DIY toolkit assembled by mix-and-match different tools in a large tool shop. Of course, at times DIY toolkit can do better on specific tasks. Given that you are the only dev on the project, I'd assume that the resource is fairly limited. And looks like you are not building some next-gen super duper fast smart application. So Just go with the prepackaged toolkit then. Rails is a very opinionated framework, there're pros and cons to it. But thanks to that, many of the gems are coded with it in mind. For example, they are all designed with same naming convention. Many will work well together out-of-box, for example devise and cancancan. Besides, many stuff are built in the framework. For example, logging utility, csrf protection, session encryption, etc. Yes, many of those stuff may not be useful or necessary at the beginning of the project life-cycle. However, down the road, there is a good chance you will need some of those. And the moment you realize that you already have it, it's so delightful. In addition, it's usually easier to debug a rails app than a node app in my experience. Personally, the cases where I would pick node.js over rails would be projects either require a) high-performance, or b) certain core functionality that has been implemented by some node packages but not by any ruby gems. In term of performance, node has a clear advantage over any other major web frameworks, except the ones built with go. It's simply a language feature. Node allows developer to easily write code that runs db query, external api calls, or other stuff of that nature in parallel. And that is THE MOST COMMON performance bottleneck of web applications.
I hate to admit it, because I loved my time with Rails (and I still love the framework), I have a hard time justifying new Rails applications these days. Core team has made some tragic design decisions, and developers just don't perceive it as being "cool" any more. The latter is a terrible metric for which to base a technology decision, but I think you'll find it more difficult to recruit additional engineers if you choose Ruby on Rails.
Without knowing too much of the details, Node/Express (ideally with Typescript) seems like a better solution here, given you'll be building out the front-end in Vue or React. It might be worth looking at NestJS, as it's the closest I've seen to a well-formed opinionated framework on the Node side of things. We're also fans of Objection ORM.
I hope that's helpful!
Rails is currently a very mature and feature complete framework.
It's the ideal one if you're the only dev for your project because you get so many things already baked-in the framework that you'd only need to deeply care about specific stuff.
I won't say any NodeJS framework isn't good enough but in my experience with NodeJS frameworks you have to code a lot of the things Rails already provides. There's many people in Twitter and IRL asking for a "Rails for JavaScript" framework.
And you know? In the early stages of any project we have to validate it first with real users/customers. With Rails you can get to production real quick and fast.
I'm going to mention some of the features you get from day 1 when you run rails new app_name
:
- File uploading with Active Storage
- Rich text editor with Action Text
- Emailing with Action Mailer
- ORM, migrations, validations with Active Record
- Web sockets with Action Cable
- Internationalization
- Modern frontend stuff with Webpacker
and more.
The JavaScript community is on its moment, growing and gathering more people everyday but the Rails community is also a big one and there's always going to be a Rails developer to hire whenever you're ready to hire someone.
I suggest you to go with Rails because is a good choice, gives you less things to worry about and it's a very good and mature framework.
I need a solid argument to explain to people that aren't necessarily tech-savvy as to why we should choose Rails over Nodejs
Hi Max, it sounds like that you are proficient in both stacks and probably have a higher expertise in Rails (correct me if I am wrong) and since you are the only dev on a project, a good argument that comes to mind is probably the velocity and maturity (enterprise grade, battle tested in production) that Rails provide with proven success stories in the tech industry such as Airbnb, Stripes, Shopify to name a few. You can also make the argument that Rails is great to run the backend and React+Vue (and nodejs for tooling) is ideal for the front-end development (see or find companies example that use both). You can also build and show a prototype using both and share your experience which could help you find and forge the selling points to those non tech savvy folks, why not.
Eventually, are you going to have other developers on your project? if yes then you will need to take in account, onboarding and ramp up to contribution time when they are hired.
IMHO, I am not a fan of the debate Rails vs Nodejs, they are just tools at the disposal of the developer it's just a matter of figuring out what makes the most sense.
Let me know if you wanna discuss further, happy to help out!
ps: markdown preview on stack share... no good.
Rails has advantages over node.js (specifically express) when working a more complicated backend. While Express has some speed advantages to Rails, this is mitigated if your software is more CPU intensive.
I have learned both Python and JavaScript. I also tried my hand at Django. But i found it difficult to work with Django, on frontend its Jinja format is very confusing and limited. I have not tried Node.js yet and unsure which tool to go ahead with. I want an internship as soon as possible so please answer keeping that in mind.
If you are currently not working my first suggestion is to study both the frameworks and get a good grasp of those. If you didn't get confident with Django in the first place you should reconsider going back and study more. Get a video course with some code-along and produce some simple application you can showcase on your interviews. If you already took a course take a different one. Another trainer could be more effective and you could experience something new with different excercises. There are lots of both free and paid courses out there. When you will get confident with Django get your feet wet with Node.js because it surely worth it. Node is very different from Django from some perspective, it looks more like an asynchronous version of Flask to me. Be sure to have a good knowledge of ES6 first, because it will be really useful to understand the Node best practices. Study as much as you can now if you are not working. It will supercharge you for the future...
From my experience of the early startup world, a majority of companies these days use Node.js. Python and Go are the next biggest languages, but significantly smaller than Node.
However, if you're having trouble with the front end aspect of Django, using Node probably won't make that easier for you. You'll have a lot more options between front end frameworks (React, Vue.js, Angular 2) , but they'll definitely take more time to learn than Django's templating system.
Think about whether you want to focus on front end or back end for now, and make a decision from there.
I would suggest to go with js, it's the craze now when you enter into the stack it has variety of options and tools that you can adopt , and more than that the demand for js engineers is exponentially increasing and js can do magic in any type of application or architecture.
I had the same question myself a few months ago. I finally chose Node.js, and it was one of the best options I did back then. From when I started programming, I always believed that Python was for me the best language, secure and stable. However, it is not flexible for web development, there are more packages & libraries that are built and work only with JavaScript / TypeScript, and the community, resources & support is much bigger. I was also fascinated by the Django ORM, which I still am, & the admin interface. But those are things, that can be replaces by other tools, such as TypeORM, and the admin interface was not needed at all finally for my case. I know understand that Python is not the language that I should use everywhere and every time, but I can say that it is really good for algorithms, computer science, maths, statistics, analytics & AI. To be honest, I chose TypeScript (TS) with Node.js & Express, because it has auto-completion and "strict" code checking. I hope this helps you, and let you take a look at various aspects of choosing a programming language to work with.
Jinja is a template rendering engine and you will encounter some sort of template rendering engine in each language. Jinja is a pretty standard tool and almost every language has some sort of Jinja equivalent. Ruby has Liquid, Node has Nunjucks, Java has Jinjava, Go's default templating engine is easy to pick up if you know Jinja, Helm charts are easier to pick if know Jinja . So learning Jinja is a good thing.
If you already know some django stuff you should keep that learning path. And for the job if you really want an internship you should learn to make rest APIs using django or nodejs, and a front end that consumes those APIs using some framework
Actually, you could get very good solution with implementing BE and admin panel with Django and FE with React.js or Vue.js. it will provide you a pretty flexible and powerful environment.
I'm planning with a small team to create an application which is a platform for restaurants. I'm on the backend almost alone currently. I'm going to use Node.js for that, and I'm very fond of TypeScript, and I worked before mostly with ExpressJS. The team may get bigger as the application becomes bigger and more successful, so I have the Scalability concern in mind now, and I was considering these options: 1) Use Node+Express+Typescript 2) Use Node+NestJs (which utilizes Typescript by default)
Option 2 is enticing to me because recently I came to love NestJS and it provides more scalability for the project and uses Typescript in the best way and uses Express under the hood. Also I come from an Angular 2 background, which I think is the best frontend framework (my opinion, and I know React quite well), which makes Nest feel familiar to me because of the similarity between Nest and Angular. Option 1 on the other hand uses Express which is a minimalist framework, very popular one, but it doesn't provide the same scalability and brings decision fatigue about what to combine with it and may not utilize Typescript in the best way. Yet, on the other hand, it is flexible and it may be easier to manipulate things in different ways with it. Another very important thing is that it would be easier in my view to hire Node developers with skills in Express than NestJs. The majority of Node developers are much more familiar with JavaScript and Express.
What is your advice and why? I would love to hear especially from developers who worked on both Express and Nest
I highly recommend NestJS because:
- It's a framework you already like;
- Typescript is growing fast, being increasingly adopted in the community;
- All layers are well defined, not needing to think much about the organization;
- Great documentation;
- Nest CLI increases the development speed and keep the pattern;
Only using express and knowing that project can grow, you'ill need to define the structure well so that it doesn't get out of control.
Hi Louai,
I am quite sure that you know the answer to your problem. And I am here to help you to follow your arrow. I have worked with the most popular Nodejs frameworks and I can sure you that there's no stack better than NestJS (at all). Typescript is the best thing that happened with Javascript, this is a fact. Ans NestJS make a such wonderful job using all the best Typescript tools. NestJS is the most mature and organized API manager. Its modular dependence injection, the use of DDD, the solid idea of single responsibility, it's unit a and e2e testing support, its documentation is the most incredible work in the world of Nodejs. You won't regret choosing this framework, even if your application grows a lot. If you follow the documentation tips you will be able to create an amazing and organized application.
ps: I am not part of the NestJS team, I am just a guy tired of wasting time with dumb and bad Frameworks and its bad documentations. I find relief in NestJS with all the time it's saved to me, it helped me to improve my job and let me create great things with Nodejs.
I would definitely suggest NestJs over other options because NestJs gives a lot of tooling. it would definitely suggest NestJs over other options because NestJs gives a lot of tooling & it gives a lot of functionality out of the box. If your team worked with angular 2+ then it will really easy to learn.
Hi, I'm in a similar position, but related to personal projects. After falling in love with few frameworks in the first day and rejecting them in day 2, I started learning nestJS last week. I currently develop personal side projects using cakephp, and I intend to migrate to nest + vue. This week I'm taking a nestJS course in order to be sure that this is what I want by praticing a little. If you didn't do it yet, I suggest you try to code a todo app or a similar example API using nest, so you can "feel" if this is indeed what you want to use in this larger-scale project.
Some of the characteristics that got my attention to nestJS are typescript, a lot of annotations/decorations, an oppinionated approach to organizing the project, nice documentation and discord, and it's evolution at npm trends shows me it's probably not going to vanish or get buggy anytime soon.
First of all, my experience using either Node.js with Express or NestJS is not wide. I liked NestJS due to it's similarity to Angular, so when you know Angluar and like TypeScript you are going to love NestJS, it will be instantly very familiar and easy to use, it's adds a good structure to the project out of the box and well, it uses TypeScript, which is a more structured language - it's good for scalability. As for performance concern s - NestJS is based on Node, it just brings Angular's modular structure to it, so the question is more about how is the additional layer influences the performance - I cannot answer that.
Have you checked out Hapi as an alternative? I'ts not Typescript by default though. If that doesn't seem too interesting, it sounds like you want to go with NestJS :)
Hi, I am looking to select tech stack for front end and back end development. Considering Spring Boot vs Node.js for developing microservices. Front end tech stack is selected as React framework. Both of them are equally good for me, long term perspective most of services will be more based on I/O vs heavy computing. Leaning toward node.js, but will require team to learn this tech stack, so little hesitant.
It's probably worth investing some time for your team to learn Node.js. There's very little overhead, especially with a framework like ExpressJS, so if your team is familiar with JavaScript it should be a quick process.
It handles I/O really well out of the box, and has a strong community with great open source libraries. Since you're using React on the front end, there's also some benefit to being able to use JavaScript throughout your stack.
I'm about to begin working on an API, for which I plan to add GraphQL connectivity for processing data. The data processed will mainly be audio files being downloaded/uploaded with some user messaging & authentication.
I don't mind the difficulty in any service since I've used C++ (for data structures & algorithms at least) and would also say I am patient and can learn fairly quickly. My main concerns would be their performance, libraries/community, and job marketability.
Why I'm stuck between these three...
Symfony: I've programmed in PHP for back-end in a previous internship and may do so again in a few months.
Node.js: It's newer than PHP, and it's JavaScript where my front-end stack will be React and (likely) React Native.
Go: It's newer than PHP, I've heard of its good performance, and it would be nice to learn a new (growing) language.
Go with Node.js. There's something really satisfying about being able to use a single language across your entire tech stack. Especially once you integrate GraphQL, which is effectively JSON.
Your second best option is Go, but the ecosystem around Node.js is quite a bit stronger. This will play a big factor when you start building functionality like file management, messaging (especially in real-time), and authentication. The libraries and documentation are just stronger for Node.
I have just started LEARNING BACKEND so which framework do you think is best to learn first(among flask, node.js and PHP) and use, and which backend programming language should I earn or is important? I have some prior knowledge in python and javascript.it would be nice if someone could point out the advantages of using one framework over the other.
Rule out PHP since you aren't familiar with it, and learning it would take much time since PHP has turned out to be complex lately.
Node.js vs. Flask
Node.js is your go-to solution for developing speed-intensive websites and applications (eCommerce stores, chatbots, etc.). Flask isn't the ideal solution. Django (another Python-based web framework) is better than Flask.
Hi Adithya! Actually, the honest thing is that we all try to follow the hot fashion of the day but that's kind of where people get confused because there are a lot of hot fashions around at the same time as well. If you ask a php expert, he would suggest just go for the php and if you ask someone from ruby language, they would say ruby is fantastic. And same is for python as well. Now Let's have a look at your first question about learning among flask, node and php and thing is php is not framework it is language. Flask is python based and Node is Javascript based runtime environment on server and is not a complete framework. So what I would say in this context is that one should not just jump into a framework directly. Rather playing with a language for couple of months is best thing. Second Question :"which backend programming language should I earn or is important". Answer is No Programming Language is Perfect.Some programming languages are good at one thing but they can be bad at doing something other. Like Speed, Performance, Integration with other tools, Security are the features some Programming languages handle out of the box but each has its trade offs. My advice would be Just pick any of these languages and you should be good with it until unless you stick with good programming style and keep improving yourself. And never switch too much between languages as you learn them, programming needs consistency. Some people try to learn everything at once and that makes people "Jack Of All Trade but Experienced in None". PHP has huge Internet Market Shares, Python is growing and fast, Node is more dynamic but its not framework (Node is JS runtime environment) so all these are good and bad at one or other thing.
Third Advice: " I have some prior knowledge in python and javascript." That's great then. If you already know Python and JS you can learn Any of between Flask and Node but what I have seen is that Learning curve of Node seemed bit steeper to me and it should not be case for you if it seemed to me. But for python I would rather say go with Django rather than flask.
Final Thoughts: Node isn't Framework so if you learn it, you will still have some further framework tools to learn to make a good rapid backend running Like Express or KOA or ADONIS etc. If you go with Flask or Django, they are sort of sufficient to make backend. If you got with PHP, You must go for Laravel because its huge and rapidly growing community now. And yes another options is Rails that is a culture and very mature framework. But kinda slow just my opinion. Moreover you can also look around a bit for what framework can give you more or rapid job if you are looking for a job in your area.
Node.js is the most popular of the three among modern tech stacks, and for good reason: it's simple, lightweight, and fast. Plus, being popular has its advantages: better documentation, libraries, and support when you get stuck (which you undoubtedly will as a beginner).
Pair it with ExpressJS for the best experience.
Learn JavaScript and master the programming concepts. Once you are familiar with the programming concepts such loops, variables, functions, OOP, etc.. you can easily pickup any programming language just by looking at their respective syntax. You can learn a new programming lanuage in just a few minutes. Getting to know the frameworks and libraries though is another story. Although, if you know what you want to build and its functional part, it helps speed things up developing PoC.
NodeJS with Typescript and Express/fastify is best to go for. Flask is really good framework and very easy to learn. But python has peroformance issues. For starters it should be fine but once you have to scale it will be difficult. NodeJS has really good performance and package ecosystem is really good. With typescript you can do static checking which will help reduce errors.
On language, such that both the frontend and backend developers in sync. Node is a performant,easy to learn and good community support.
Hello... I hope everyone is ok amid today's global situation.
I'm trying to choose the perfect stack for a new mobile app project that resembles the super apps like GoJek & Grab.
I have gone to BUILTWITH and seen what their stack on all fronts.....however, and even though, they both differ from one another, I'm still looking for the perfect stack that will give us PERFORMANCE & SCALABILITY for years to come.
Your comments & suggestions are very important to us, so please share your thoughts.
We recommend Laravel over Ruby on Rails (Ruby) and Express.js (JavaScript/Node.js). We chose Laravel ourselves for our own internal software project, recently after comparing these same 3 software frameworks. In selecting Laravel, we chose to build our app using the software language PHP. PHP has the largest market share of all the web-based software languages (close to 80% of all websites use PHP). Also, Laravel is the fastest-growing software framework based on PHP making it a wise choice.
We also plan to integrate WordPress and WooCommerce later with our Laravel web-app. WordPress and WooCommerce like Laravel are all built using PHP. WordPress is the most popular Content Management System in the world. This will allow us to build out the front-end marketing website in WordPress. Also, we plan to offer subscriptions and sell products. For this, we will use WooCommerce. WooCommerce is the most used e-commerce platform in the world. We’ll be able to use our same Laravel developers to extend our app to WordPress and WooCommerce. By standardizing on PHP, we’ll be able to use the same software developers on all 3 platforms. PHP’s large market share will be an asset to us as we start recruiting talented software developers.
Lastly, we are gaining access to a fast-growing and awesome community that supports Laravel. Before we made our decision, I personally met Laravel’s founder Taylor Otwell along with several of his team members. After meeting with the Laravel team at Laracon US in New York City and learning more about the direction they are going with the framework, we’re confident we made the right decision.
To read the longer version of this answer where we go into more detail behind our recommendation, visit https://rackless.com/laravel-rails-expressjs
Before I recommend a tool, I think it is important to look at your requirements and capabilities - as you have looked at 3 very different tools: different programming languages, different implementation strategies and different target audience. It sounds like you don't already have a set of dedicated developers, so it is likely that your choice should be mainly driven by how easy it is to get developers that are familiar with the tools - so I'm going to list some considerations that I think you should review, starting with what I believe would be the most important for your bootstrap process:
Mindshare: how easy it is to get developers that are familiar with the technology and can immediately start working on your project. This is definitely where Node.js shines - Javascript is one of the fastest growing languages and Node.js played a huge part in this. I would bet that wherever you are located, Javascript developers would be the easiest to come by.
Fit for purpose: from your description we can understand that you are looking at a backend technology to implement some sort of REST API for a mobile app. The 3 different options you offered each fit on a different place on such a stack: Ruby is a programming language and not even a service framework - if you choose it, you then have to choose a server implementation and REST framework (and there are a lot, mostly as Ruby has a standard API for connecting a web server and application frameworks, and so this space has blown up) it used to be that Rails was the most popular, so you may choose that, but the interest in it has waned a bit in recent years; Node.js is a server framework, but it also has a dominant application framework called Express, that is geared well to your usage, so you'd likely work with that; Laravel is an application framework - it uses the PHP programming language, whose use has declined a bit in recent years, and was originally built for MVC type applications - though it has workflows for REST APIs and would probably work well for you as well.
Scalability: while this is probably the least significant issue at the moment (when it gets to a point where the backend service is your bottleneck, you'd likely have enough resources for a rewrite), and also the most dependent on factors that you didn't specify and are hard to estimate (such as: session complexity; amounts of data; sensitivity to locality; sensitivity to latency), it is still worthy to address it. Unfortunately, I don't have any good news: Ruby is notoriously bad at getting the best performance (the current BKM for milking performance from a Ruby codebase is to run the app on the Java virtual machine); Node.js has severe memory limitations that will make it very hard to scale if your backend needs to do a lot of work (I have a very personal and troubling experience with this issue); and PHP has as many scalability optimization strategies as there are PHP developers (this is not a good thing).
My suggestion to you as to how to proceed can be summarized to this prioritized list of options: 1. Get a good head developer with a lot of experience and let them choose the best tool - they'd likely go with what they know, which is likely to be a good choice - and if not, when scalability will become an issue, you could rewrite. 2. Choose something (likely Node.js) and don't worry about scalability - see (1) above. 3. Use Vert.x: it is a highly scalable application and service framework that offers great performance as well as a lot of tools to solve data scalability, locality and latency, and it works with multiple programming languages, such as Javascript and Ruby.
Node.js would be the best choice among all, you can compare all 3 of them on Stackshare and you will find that Node.js is on the top on almost every aspect, and since your focus is primarily on Performance and Scalability you won't regret after choosing Node.js. Also, the JavaScript open-source community has made a lot of effort and created numerous packages that will give you the speed and smooth execution of your project you need. Though your question was regarding backend, but if you choose JavaScript(Node.js) at your backend, then you can have a cross-functional team that can work on both, frontend as well as backend because JavaScript is everywhere, React Native for Android and iOS apps, React.js for single page web apps and Node.js ofcourse for your backend. And I don't have to tell you how much easier it would be to code and manage in a single language to build your complete system end-to-end. I hope it helps.
That's a really ambitious project. So you're going to want to move as quickly as possible. That means choosing a software stack that will allow you to move the most quickly. Of the ones you've listed, Ruby (Ruby on Rails, more precisely) will give you that. There are probably other options that would allow you to move even more quickly than Rails, but developers for those more advanced stacks are much more expensive, and hard to find.
Rails can and does scale to millions of users. It's not necessarily easy, but if you're running a successful app, you'll be able to afford people to help you scale out when you reach that point. But if you choose a slower framework (or have bad developers) you won't even reach the point of needing scalability.
Which is the best Python framework for microservices?
We are using Nameko for building microservices in Python. The things we really like are dependency injection and the ease with which one can expose endpoints via RPC over RabbitMQ. We are planning to try a tool that helps us write polyglot microservices and nameko is not super compatible with it. Also, we are a bit worried about the not so good community support from nameko and looking for a python alternate to write microservices.
Bottle is much less bloated and fast. Its built-in templating system is one of the fastest as it compiles the templates in bytecode. Also Bottle has no depenencies, preventing dependency bloat.
We actually initially wrote a lot of networking code in Kotlin but the complexities involved prompted us to try and compile NodeJS for Android and port over all the networking logic to Node and communicate with node over the Java Native Interface.
This turned out to be a great decision considering our battery usage fell by 40% and rate of development increased by a factor of 2.
As a small team, we wanted to pick the framework which allowed us to move quickly. There's no option better than Rails. Not having to solve the fundamentals means we can more quickly build our feature set. No other framework can beat ActiveRecord in terms of integration & ease-of use. To top it all of, there's a lot of attention paid to security in the framework, making almost everything safe-by-default.
Honestly, we used Flask when we first started up as I was personally had a background in Python and wanted to understand the tools we made technically.
Also, as a bootsrapped startup, we needed to build an MVP as quickly as possible and this left few other options. Luckily, it had all the functionality and scalability we need.
Hey guys,
My backend set up is Prisma / GraphQL-Yoga at the moment, and I love it. It's so intuitive to learn and is really neat on the frontend too, however, there were a few gotchas when I was learning! Especially around understanding how it all pieces together (the stack). There isn't a great deal of information out there on exactly how to put into production my set up, which is a backend set up on a Digital Ocean droplet with Prisma/GraphQL Yoga in a Docker Container using Next & Apollo Client on the frontend somewhere else. It's such a niche subject, so I bet only a few hundred people have got a website with this stack in production. Anyway, I wrote a blog post to help those who might need help understanding it. Here it is, hope it helps!
(1/2) In terms of Application & Data we chose a full JS web stack with React
as the frontend framework and 'Node
for the backend with Express
. In this setup, we'll be using MongoDB
as our database and will utilize Mongoose
as the ODM for extensibility.
React
: React, the frontend framework originally developed by Facebook is currently the most popular front-end framework amongst web developers. This well-maintained and robust framework has been getting popularity amongst web developers thanks to the flexibilities it offers to the developers to manage appstates
and eliminates the need to create any raw HTML code with its JSX language. React is popular, well–maintained and the go-to for web development in the current era and there exists lots of frontend UI libraries that we can utilize (e.g. Material UI, Bootstrap)Node
: As we have chosenReact
for our frontend framework, it makes sense to keep JS for our backend as it's easier for web-developers to "context switch" to a Node backend. Node Package Manager (NPM), the open-source library for libraries provides a vast number of external libraries we can use in our applications to get things get started quickly. Another consideration we had for the backend was Python since not all our members are fully proficient with Node, especially that our Machine Learning would all be written in Python. Though after more considerations we still thought it'd be a better idea to keep the web application written solely in JavaScript as it won't be a huge overhead and it will cause it more reusable code as we this is how we see the future of our stack to look like eventually. We will be usingYarn
as the package manager of our choice since it provides a slightly better package versioning overnpm
and shorter commands, though there are no huge differences!Express JS
: ExpressJS is the web framework for setting up servers and thanks to its open-source community, it has established itself as a robust a comprehensive server framework that pairs nicely with Node.JS. Wikipedia explains Express as the "de facto standard server framework for Node.js". Pretty much all the web applications I've seen that use Node as their backend use express to provide APIs and hook the backend to the frontend.MongoDB
*: MongoDB is another great resource to use especially in the early stages of a startup, as we need to make sure we can get going fast while making sure we can still stick to a well-behaving and scalable database. Thanks to its schema-less design, it gives us the opportunity to keep playing around with our datatypes without having to constraint ourselves on a certain schema. In our current plans, the data we're are JSON-like documents anyways, and will give us a leverage in making sure in making a working MVP. Although MongoDB is still a great choice for many production applications as it's highly scalable, we still need we need to bring a relational DB such as Postgres to our stack in order to provide fast queries for our lead-generation application, though MongoDB should give us exactly what we need at this stage. PairingMongoDB
withMongoose
will make development even much faster and readable as it will provideschemas/Models
for this schema-less database.
For the backend of the app, Flask is chosen as it is written in Python and easily integratable with machine learning applications, as many ML frameworks are written in python. As well, Flask is quick and easy to setup, with many options for scaling it out to production. For the data, PostgreSQL will be used as it is integratabtle with Heroku since Heroku offers it as an add-on. It is also flexible and supports different data types such as JSON.
This basically came down to two things: performance on compute-heavy tasks and a need for good tooling. We used to have a Meteor based Node.js application which worked great for RAD and getting a working prototype in a short time, but we felt pains trying to scale it, especially when doing anything involving crunching data, which Node sucks at. We also had bad experience with tooling support for doing large scale refactorings in Javascript compared to the best-in-class tools available for Java (IntelliJ). Given the heavy domain and very involved logic we wanted good tooling support to be able to do great refactorings that are just not possible in Javascript. Java is an old warhorse, but it performs fantastically and we have not regretted going down this route, avoiding "enterprise" smells and going as lightweight as we can, using Jdbi instead of Persistence API, a homegrown Actor Model library for massive concurrency, etc ...
I was researching multiple high performance, concurent//parallel languages for the needs of authentication and authorization server, to be built on microservice architecture and Linux OS. Node.js with its asynchronous behavior and event loop suits the case best. Python Django & Flash turns to be slower and .NET Core & Framework wasn't the best choice for the Linux environment at the time (summer 2018).
I also tested Go lang and Rust, although they didn't meet the quick prototyping criteria as both languages are young and lacking libraries or battle-tested ORM.
A boilerplate for Node.js apps / API server / Authentication from scratch - express, graphql - (graphql compose), mongodb - (mongoose).
https://github.com/watscho/express-graphql-mongodb-boilerplate
Sign In, Sign Up, Reset Password, Change Password, Update User E-mail verification, Multi language, Redis for token blacklisting





We builded Duomly with: BE: Node.JS & Nest.JS & TypeScript & PostgreSQL and FE: React & Sass & Javascript.
The whole of the stack is JS related what helps us to keep development on a track. When building backend we decided to go go for TS & Nest.js because we had experience with Javascript and still wanted to have control over types.
Pros of ExpressJS
- Simple381
- Node.js336
- Javascript244
- High performance193
- Robust routing152
- Middlewares73
- Open source72
- Great community59
- Hybrid web applications37
- Well documented16
- Sinatra inspired9
- Rapid development9
- Isomorphic js.. superfast and easy7
- Socket connection7
- Light weight5
- Npm4
- Resource available for learning4
- Callbacks3
- Event loop3
- Data stream2
- Easy to use1
Pros of Flask
- For it flexibility10
- Flexibilty and easy to use9
- User friendly7
- Secured6
- Unopinionated5
- Secure2
- Customizable2
- Simple to use1
- Powerful1
- Rapid development1
- Flask1
- Easy to get started1
- Easy to develop and maintain applications1
- Easy to setup and get it going1
- Easy to use1
- Documentation1
- Beautiful code1
- Orm1
- Not JS1
- Perfect for small to large projects with superb docs.1
- Easy to integrate1
- Speed1
- Get started quickly1
- Python1
- Minimal1
- Lightweight1
- Flexibilty0
- Well designed0
- Productive0
- Awesome0
- Open source0
- Expressive0
- Love it0
Pros of Node.js
- Npm1.4K
- Javascript1.3K
- Great libraries1.1K
- High-performance1K
- Open source805
- Great for apis487
- Asynchronous477
- Great community425
- Great for realtime apps390
- Great for command line utilities296
- Websockets86
- Node Modules84
- Uber Simple69
- Great modularity59
- Allows us to reuse code in the frontend58
- Easy to start42
- Great for Data Streaming35
- Realtime32
- Awesome28
- Non blocking IO25
- Can be used as a proxy18
- High performance, open source, scalable17
- Non-blocking and modular16
- Easy and Fun15
- Easy and powerful14
- Future of BackEnd13
- Same lang as AngularJS13
- Fullstack12
- Fast11
- Scalability10
- Cross platform10
- Simple9
- Mean Stack8
- Great for webapps7
- Easy concurrency7
- Typescript6
- Fast, simple code and async6
- React6
- Friendly6
- Control everything5
- Its amazingly fast and scalable5
- Easy to use and fast and goes well with JSONdb's5
- Scalable5
- Great speed5
- Fast development5
- It's fast4
- Easy to use4
- Isomorphic coolness4
- Great community3
- Not Python3
- Sooper easy for the Backend connectivity3
- TypeScript Support3
- Blazing fast3
- Performant and fast prototyping3
- Easy to learn3
- Easy3
- Scales, fast, simple, great community, npm, express3
- One language, end-to-end3
- Less boilerplate code3
- Npm i ape-updating2
- Event Driven2
- Lovely2
- Creat for apis1
- Node0
Sign up to add or upvote prosMake informed product decisions
Cons of ExpressJS
- Not python27
- Overrated17
- No multithreading14
- Javascript9
- Not fast5
- Easily Insecure for Novices3
Cons of Flask
- Not JS10
- Context7
- Not fast5
- Don't has many module as in spring1
Cons of Node.js
- Bound to a single CPU46
- New framework every day45
- Lots of terrible examples on the internet40
- Asynchronous programming is the worst33
- Callback24
- Javascript19
- Dependency hell11
- Dependency based on GitHub11
- Low computational power10
- Very very Slow7
- Can block whole server easily7
- Callback functions may not fire on expected sequence7
- Breaking updates4
- Unstable4
- Unneeded over complication3
- No standard approach3
- Bad transitive dependency management1
- Can't read server session1