With web having grown this huge and still growing, when writing a web scale application aimed to reach uncountable end-users it would be a good idea to consider seriously writing of such an application that will be able to handle and work smoothly under the challenging workloads the web most routinely produces. With the computing hardware getting cheaper and faster every day it becomes urgent to reshape the traditional software development concepts and make them more appropriate for the new era of web scale application environment. Today, whilst storage being very cheap, high-speed interconnects and I/O capacity are pretty expensive, which provides for the fact that today we are generating more data than before. Under such circumstances it becomes vital to think of new ways to build outstanding data analysis systems and interactive software solutions in general. Here are some tips for starting moving in that direction. Keeping resource requirements low will reduce the processing time per unit of work. And the simplest way to lessen scalability problems is raising the efficiency of software procedures. Your application will run the faster the less data is transmitted, the less memory gets occupies and the faster one can get off and on the CPU. Running in parallel will mitigate bottlenecks, since locks simply kill concurrency. To do so you should divide up your workload into small sections and prepare them to be processed on separate SPU cores, as well as on separate servers, networks and storage devices - in parallel. Decentralizing your data will help to get rid of I/O bottlenecks of central databases for good. To do so, just distribute your data over several different servers, putting a part of your data into each one of them. This will allow you to spread the writing load over several systems. Such distributed data store system as Cassandra will be of tremendous help in this process. It will implement all the data partitioning for you as well as make the process of adding servers for increasing your capacity very easy. Thus, this kind of change of gears to new concepts is crucial in order to start thinking web-scale. Keeping system designs as simple as possible may be also of great help, though servicing millions of users is a circumstance that strongly complicates this task. Yet, even with these few tips you can generate an exceptionally scalable system.
