What resources should be reduced in the context of good software eco-design practices: Processing on the server-side or on the user side?
One of the first answers to the question “what resources” is: all! But it is necessary to have a more specific answer because certain practices will favor an economy on the server-side, others on the memory side rather than the CPU. There are winning optimizations for all areas but unfortunately, the behavior of computer systems is more capricious!
The guiding principle is to extend the life of the hardware, whether for the terminal or for the servers. We will see that for environmental gains, reducing energy will also be an improvement axis.
In a previous article, we discussed the need for energy optimization in the case of mobile devices. Today we are trying to answer the question: what architecture to put in place, and in particular to put processing on the user side or on the server-side?
The answer is: server-side processing to be preferred …
The answer is quite simple: let’s load the servers! Indeed, when we take LCA and impact analyzes, we observe a much stronger impact on the user side (Example with our study on the impact of playing a video). The servers are shared and are optimized to absorb a load. The manager can also manage load fluctuations with Power Capping (peak load absorption while maintaining controlled energy consumption). The lifespan of the servers can also be managed (hardware that can last up to 10 years). Compliance with a Green IT policy can also be better monitored and shared.
Terminals, on the other hand, despite having powerful processors, do not have these advantages. Very little control of the lifespan, no management of the health of the system, fragmentation of powers and therefore of behavior …
… but watch out for resources and scalability
While it is better to put the computations on the server-side, this is no excuse for not maximizing the impact on the server-side. Scalability is possible but must be monitored. Because adding a virtual instance will have an impact on the future need to add a physical machine and therefore will increase the environmental impact.
In addition, limiting power consumption will be necessary because a high demand for power will transfer into an increase in the power consumed on the server rack and higher cooling needs.
And the cost of the round trips of the network round trips in this case?
The question appears on network exchanges if we move calculations to the server-side. This is currently a false problem because there is too much exchange. The network resource and servers being seen as “free” and the architectures going more and more towards the service/microservice, the processing on the user side calls too much the data centers. It will be necessary rather control the number of network exchanges, whatever the choice of architecture.
Is this currently the case in architectural practices?
This has not been the trend in recent years. Indeed, the arrival of powerful user platforms, i.e. with multicore processors and high-performance network connections, have pushed a lot of processing to the user side. Development Frameworks, especially JavaScript Frameworks, made this possible.
However, the trend is starting to reverse. We can notably mention Server-Side Rendering (SSR) with for example next.js or the generation of static blogs with Hugo. We can also see techniques maximizing the use of elements already present on the user’s terminal such as the web browser engine by using CSS rather than JS.
We will try to answer in the next articles: which resources (CPU, memory …) should we optimize as a priority?