12.08.2012

The bottom line: avoid bootlenecks!



After a decade of experience working with fine tuning of web systems, I can say without a doubt that the phrase that titles this first blog post perfectly encapsulates the idea of which is the optimization of systems that require high availability and performance.

It happens that, like any service made available to a wide audience with finite channels, there is a tendency to formation of bottlenecks, which are the biggest enemy of the uninterrupted flow of the process.
 
During the 2012 London Olympic games, organizers took advantage of a philosophy known as "go with the flow", in which eventually gave up the collection in a train station, for example, if the process of buying tickets could cause a congestion at the station exits (worth clarifying that in London you inset a ticket to exit from the station). They prioritized (occasionally) the uninterrupted flow of passengers at the expense of revenue, but the idea was to avoid risky situations that would arise if it were a bottleneck been installed.

The same principles can (and should) be applied in web systems that need a high uptime.

Importantly, like the possible decrease in revenues in the train stations of London during the games of the general public, there will be situations where you need to choose what shall relinquish the process, rather than something of similar importance, considering the main goal the success of the process as a whole.

As the father of modern chemistry, Antoine Lavoisier, once said "in nature, nothing is created, nothing is lost, everything is transformed." In computer would be no different. So the question really is, ultimately, an art adjustment cost / benefit.

In future posts I will show various concepts and techniques that can be applied to any computer system that requires high availability, regardless of programming language (and that's the beauty of it).

Information that are worth gold.

Stay tuned!