Dans le cadre de cet ouvrage, Smile ne traite pas de l’optimisation des programmes, bases de données ou plus largement des composants unitaires, mais uniquement de l’optimisation générale de l’architecture, c’est à dire de l’agencement des composants et de leurs échanges.
"Une première précision à apporter, qui trace le périmètre de cet ouvrage, est une distinction entre les questions de performances et celles d’architecture.
Bien souvent, la performance observée sur un serveur peut être améliorée par différentes actions d’optimisation, des algorithmes, de la configuration d’une base de données, des index, voire même par le choix d’un langage plus rapide.
L’optimisation vise une économie de moyens, en cherchant à réduire le temps que met un programme à réaliser sa tâche, ou bien encore à réduire l’utilisation de ressources, en particulier CPU, dans cette exécution.
Certes, il est ridicule de commencer à monter un cluster et empiler les serveurs pour tenir la charge alors que de bons index dans la base de données feraient gagner un facteur 20, comme on le voit couramment.
Rien ne sert de s’attaquer à l’architecture avant d’avoir traité un niveau élémentaire d’optimisation. L’optimisation est un sujet évidemment primordial pour bâtir des plateformes hautes-performances, mais c’est un sujet différent.
Il est transverse : on peut travailler la performance par optimisation d’une part, et travailler à améliorer l’architecture d’autre part. Et bien sûr combiner les deux démarches, mais surtout mener une analyse de la valeur pour cibler ses efforts sur l’un ou l’autre de ces axes.
Mais les démarches d’optimisation ont toujours une limite – quand tout est optimal ! – tandis que les démarches portant sur l’architecture peuvent apporter une croissance sans limite, et c’est ce que nous rechercherons.
Dans le cadre de cet ouvrage, nous ne traiterons pas de l’optimisation des programmes, bases de données ou plus largement des composants unitaires, mais uniquement de l’optimisation générale de l’architecture, c’est à dire de l’agencement des composants et de leurs échanges."