Startup companies typically begin with a small server configuration. In time – with website success and increased visibility – a growing company may analyze its needs to ensure its server is sufficient. Such an analysis can help sidestep a server crash.
Where to start?
Startups will find that the least-expensive option often is the best option for server needs. In other words, “do things that don’t scale,” said Paul Graham, the Y Combinator founder. Use a simple hosting server or a shared hosting service and see how many users you’ll get.
Small is OK, but faster is better
So, you want your website to charge quickly. There are tools out there that can help, such as CloudFlare. Each time you load your Website, you might have about 90% of static data and less than 10% of dynamic data. Why not provide static data from somewhere else, somewhere close, geographically speaking, to your visitor? That’s what CloudFlare and other sites that use CDN proxy technology provide, and with an easy configuration process.
Almost every minimal configuration should be able to answer one request per second, which is more that 2 million requests per month. That can translate to about 20,000 unique visitors a month, with more than 100 requests per visit.
If you do not expect to receive many visitors to your site, focus on your business, not on your architecture. Ask yourself:
- Do I have regular backups?
- How much time would it take to migrate to a better server or to build a new one?
- Do I really remember everything I did on my current server?
If the server crashes, how much time would it take to restore the entire service? Why not build a test server to check it out?
I want to be ready for unexpected growth
Did you do a proof of concept? If so, well done! Proof of concept is the most difficult part of getting traffic. Now, you are ready to increase your visibility, perhaps through a radio or TV spot.
What if 1 million people watch a televised report on your startup? The publicity could increase your website traffic from 1 user per second to maybe 10,000 per minute, which translates to about 166 people per second. Such an increase in traffic could tax a basic server, so there are a couple of things to keep in mind:
- Database ability to accept increased traffic, which is dependent on the way your app has been coded
- The ability for your app server(s) to handle heavy traffic.
In any case, you have a few options:
- Build a stronger server, which will be far more expensive than required but might be a good idea for a emergency situation
- Optimize your app, enabling some cache plugins
- Deploy adaptive architecture to scale up or scale down, depending on the traffic.
The last two options work for me, but it takes a lot of work to adapt the software to allow load balancing without losing sessions on specific files, like uploads.
What you should do
“Actions speak louder than words,” and action comes from measurement, so stress your app. Well, not exactly. Stress your test environment that is built on the same architecture as your real app. If you don’t have it and cannot afford to deploy it, that’s the sign that you should consider building it or getting a script to deploy automatically. In any case, run a stress test, even at 4 a.m., determine what your current architecture can support.
Test your app
There are many tools out there that allow you to test your website. If you are not a test specialist, use an online tool such as one of the following:
http://loader.io: Quite easy to configure. If you want to know at what point your architecture will fail, you may need to run a number of tests.
http://loadimpact.com: In my opinion, this is the best tool for an amateur tester.
When you stress an application with a simple tool, the test will not generate a transaction on the database end. To make it right, you need to simulate some backend work with a more specific request.
- What you take away from this articleWhether your current project generates enough traffic to be worried or not.CDN proxy tools such as CloudFlare can significantly increase the power of your current hosting solution.There are three ways to improve server capacity: change the server, optimize code, or adapt your app to scalable architecture.
- Stress test your website to determine its failing point.
Any more questions?
As usual, this is an introductory article to let you know how things work and how to know if you need a specialist or not. As soon as your service produces significant traffic, you should seek out an IT architecture specialist.
Feel free to leave your questions or comments. Let me know if this article helped you.