Preparing your website technical infrastructure so it’s built to scale
We’ve all heard the saying: failing to plan is planning to fail. Believe it or not, it’s no different with your website infrastructure and one of the most important aspects to keep in mind from the start of your website is scalability. Your website’s ability to handle traffic in a manner proportional to its growth is of the utmost importance in keeping your site effective and functional. Just think of a website like Google or Facebook – failure to scale would quickly turn into a catastrophe and loss of interest worldwide as users are unable to load pages, browse or buy products online.
These days, we do everything online and as the accessibility of the internet becomes more readily available, more and more people will start relying on online products and services on a daily basis. This means that websites should be well-prepared for the mass influx of website traffic that will only increase in the future. There’s nothing quite as bad as having your website fall over simply because you weren’t ready for full-scale site visits during your biggest sale of the year.
In a nutshell, web-scale IT is the capacity of your website infrastructure to maintain performance, speed and delivery regardless of increased website traffic. It does not necessarily relate to using a specific operating system or software technology but rather includes aspects such as the extent to which response times remain fast and reliable while reducing errors and lags in the system. It’s easy to see why this is important – but how can you go about building your website infrastructure to scale?
Prioritize!
Firstly, it’s important to keep in mind the priorities of a service- or product-oriented website. Although this will differ from site to site, the basics of availability, concurrency and site responsiveness remain the cornerstones of successfully built-to-scale websites. Availability includes the provision of prolonged uptime in which users can receive the correct feedback from a site, while concurrency points to the volume of traffic active on a website at any given time. Don’t forget these building blocks when preparing your website technical infrastructure.
The basics
There are a few basic requirements of any web-scaled infrastructure proponent including the ability to run multiple applications at once and isolate mistakes for faster solutions as problems arise throughout the IT system. Data, services and processes should be distributed to allow for faster responses and servers should have integrated computational and storage abilities.
More of a good thing
As your website begins to grow, a single database will probably serve insufficient for your end-goal of handling a larger amount of users with consistently high response rates. As this occurs, make peace with the fact that your primary database might not be enough to handle the load and start preparing to handle multiple databases. Consider moving content that’s recurrently visited to a content delivery network or CDN which functions more reliably while also increasing speed. In the case of more users, more database options will mean more capacity… and less trouble.
Maintenance is key
Website maintenance is crucial to identifying issues early on and seeing where changes deployed aren’t working correctly. When testing, use concurrent virtual users to see what your website’s load is. Try to use a virtual load larger than the realistic amount of real-time users to achieve more accurate results about your website capacity. For static websites with relatively low processing and database responses, rather test for throughput which will reflect a realistic amount of page views per hour that can be handled with minimal response time and errors.
Divide and conquer!
The simple action of splitting script will allow you to distribute processes across several components for faster and more accurate responses. For example, a bootstrap script for user settings with a separate script for primary code will make it easier to monitor and maintain your website infrastructure as problems arise. Similarly, splitting system features into separate databases will ensure that a failure in one part of the system won’t pull your whole site down.
User preferences
Consider who your user base will be and fine-tune responses to cater specifically for the user’s needs. For websites where transactions hinge on time restriction during a time such as sales, your website would be better off with quicker processing of payment than with loading a page once the transaction has been completed. Furthermore, consider the user load – does your site allow users to create multiple accounts or projects? How will this affect the need for responsiveness of applications?
Be sure to insert progress indicators for page loads throughout your website. This allows the website to appear more responsive and will lessen the extent to which users are frustrated with slow processing times. This will allow your website to grow despite the challenges of constantly shifting user demands for speed and responsive pages.
A last few things
Be wary of bottlenecks in the system that could plug up important features. This can be done by reviewing your website infrastructure according to user feedback and making changes where necessary. Look for storage and caching options for large data sets and move data that isn’t accessed often to remote cloud storage providers.
Optimize your code as the need arises – if your script isn’t performing well, it might just be worth the time, effort and money to switch over to a script more suitable to the task you have in mind. Reach a consensus between response time and the costs of maintaining several databases. Although the ultimate goal is faster response time for larger scalability in terms of user traffic, your website still needs to be cost-effective and maintainable.
Employ good practices of being thorough and diligent in building your website infrastructure. Build the website to scale progressively and always be aware of what the next step for growing to scale will be – and when you should expect to implement it! Research the topic to find out more as there are great guidelines available online that cater specifically for certain measures of growth. For example, http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html gives a fantastic listed guide for varying user bases that is easy to understand and gets straight to the point.
Always follow a proper testing method that gives accurate results and feedback – understanding your system’s capabilities is indispensable to realizing the need for scalability and your specific website infrastructure needs. We know you can do it – just prioritize, maintain, divide and keep the user in mind when building your website’s technical infrastructure to scale.
References
https://www.hotjar.com/blog/9-lessons-we-learned-while-scaling-hotjars-tech-architecture
https://blog.twitch.tv/twitch-engineering-an-introduction-and-overview-a23917b71a25#.9ukebnese
http://www.webopedia.com/TERM/W/web-scale-it.html