I want to create a video sharing service like Youtube, which users can use to upload and watch videos. I prefer to use Vue.js for front-end. What do you suggest for the back-end? Node.js or Laravel ( PHP ) I need a good performance with high speed, and the most important thing is the ability to handle user's requests if the site's traffic increases. I want to create an algorithm that users who watch others videos earn points (randomly but in clear context) If you have anything else to improve, please let me know. For eg: If you prefer React to Vue.js. Thanks in advance
Hey Mohammad,
In your case I would definitely recommend Node.js as you already seem familiar with JavaScript and that experience will give definitely help you accomplish things faster in the backend side. The best advice I've always seen is to use what you already know, or something you enjoy using, and your passion will do the rest. As some folks have mentioned, Node.js is single-threaded by default but there's a lot of resources available on how to overcome that. Both Node.js and PHP have scaled for many companies, the examples are endless. If something gets heavy you offload it to a background job, if your reads and writes are getting heavy you can do some database optimizations, use an in-memory database and/or caching layers. Most scaling problems are related to how you read/write/process data and infrastructure more than they are to frameworks and programming languages. If you do indeed hit a wall with either of those programming languages being a bottleneck then in you could rewrite that one component only in a more performant language (e.g. Go/Rust/C/C++/Crystal and so on) but that's most likely something you won't have to think about for quite a while. Focus on the stack that you know so you can acquire more users and get to launch your product, scaling problems are nice to have and can be solved if they happen.
Good luck!
Node is light and scalable and has been used widely for enterprise solutions that need faster response, reliability and better performance. But at the end of the day, for me, when I start a project, I don't shoot for the stars. I build a small application with the possibility to scale in the future that will test my business idea. If the idea is getting volume then I really start thinking about how am I going to build this aiming a specific volume.