Bandwidth requirement for a dedicated server
It is quite good if you have your own server equipment and technical team and/or you have enough time and technical knowledge to manage the server. I would suggest to go with professional hosting providers. Hosting on your own server will be quite expensive so rent a good VPS or Dedicated server for your purpose.
You can go with the DigitalOcean because their plans are so cheap and also provide server in India. If you are targeting only Indian clients then hosting your server in India will be the best choice as you will get good network speed in India as compare to US based servers. I am also using their service for long time. You can choose their self managed server because it is cost effective where maintenance or management, and the VPSs will be managed entirely by you. Self managed servers are only for those who have at least intermediate level of technical knowledge of server and software management tools. You will feel that you have your own server running in remote location. If you still want your own server at your home or office you can setup a mirror, sync or backup server.
Hardware requirements:
Hardware requirements highly depend on the nature of your application. Load Balancer and Middleware can solve your problem. The platform just imposes some common rules on predicting requirements:
- Database load does not directly depend on the number of users, it depends on the number of requests per second and complexity of queries.
- Middleware is stateless, so its memory consumption is relatively low and does not directly depend on the number of users. CPU load depends on the number of requests from clients and background processes.
- Web Client requires memory in direct proportion to the number of concurrent users and complexity of screens. I recommend at least 5MB of heap per user.
Middleware and Web Client servers can be scaled horizontally.
As a starting point, I can provide the hardware configuration 500 concurrent users:
Load Balancer: 1 server with 1xCore CPU, 1GB RAM, SATA
Web Client: 1 servers, each with 2xCore CPU, 6GB RAM, SATA
Middleware: 1 server with 1xCore CPU, 6GB RAM, SATA
Database (MySQL): 1 server with 3xCore CPU, 18GB RAM, SSD
Bandwidth requirements:
For any server upload or uplink speed is important rather than download speed. So please keep this point in mind. So generally when network providers claim their network speed is 100Mbps without mentioning it is up-link or down-link then they probably means downlink is 100Mbps.
We can calculate the number of simultaneous hits (visitors) according to the link speed. If you want to dedicate a decent bandwidth to each visitor, for example 50KBytes/visitor, a 100Mbps link can handle 256 simultaneous connections per second (100Mbps / 8 = 12.5MBps; 12.5MBps * 1024 = 12800KBps; 12800KBps / 50KBps = 256).
I hope now you have some rough idea which configuration and network option will be the best for a dedicated server.