Software Architectural Pearls: 002 (en-us)
Non-functional Requirements - Application Performance - Part 1
Returning to the analogy we made in the previous articles, where I compare the construction and evolution of an application with the generation and evolution of the human being, the computational system that aims at high performance, being able to meet thousands of requests per minute, is very similar to with a high-performance athlete. Since childhood, the high-performance athlete is prepared to acquire a nutritional, psychological, and muscular balance that, combined with solid resilience, discipline, and focus, make this individual achieve marks that are absolutely unattainable to other individuals who were not cut out to this end.
The same occurs with high-performance systems, where all these fundamental characteristics for the athlete are present, similarly, in our computer systems covering, for example, the following topics:
领英推荐
These four topics are examples within several others that we can cite and evaluate. But as software architects, we have to meet a whole set of requirements. And many times, we will have to sacrifice one side to serve the other, which we commonly refer to as a trade-off. For example, I can mention that if there is a vital security requirement where all data must travel internally and externally encrypted, the network performance will be affected by the overhead created by this requirement. Which is perfectly normal and acceptable. In this particular case, security takes precedence over performance. From here, we can draw some crucial points, and I advise you to faithfully follow these teachings, regardless of the non-functional requirement analyzed: