Le cloud, les frameworks : les couches d’abstraction ou la course à la puissance ?

Aujourd’hui, l’administration système subit la même évolution que le développement, et l’industrialisation de l’infrastructure est à l’administration système ce que les frameworks/EDI sont au développement : s’éloigner de plus en plus des ressources matérielles.

Cette analogie a ses limites mais met en évidence une chose : l’expertise est rare. Les meilleurs développeurs se trouvent souvent parmi les profils qui connaissent aussi bien les contraintes de développement que matérielles.

La dette technique explose

Rappelez-vous : un jeu comme Another World tournait sur une machine de 7,09 Mhz avec 512 ko de mémoire vive. Eric Chahi a su et a pu faire tourner son jeu sur 2 disquettes 880 ko sur un Amiga 500.
Aujourd’hui, il faut 210 Mo, un PC d’1,4 GHZ avec 512 Mo de mémoire vive. Hormis les améliorations graphiques et sonores, est-ce qu’un coefficient multiplicateur de 200 pour la puissance et 1024 pour la mémoire est-il vraiment justifié ? Programmer en assembleur n’est pas possible mais avoir ces ordres de coefficients multiplicateurs révèle une chose : les ressources sont considérées comme infinies.

Les ressources infinies : les frameworks et la loi de Moore

La tendance est la même pour des applications hébergées, les ressources sont souvent considérées, à tort, comme presque infinies surtout avec l’arrivée du Cloud. Oui, bien sûr, le prix de ces ressources a très largement chuté ce qui a rendu cette augmentation de consommation de ressources « supportables ». La loi de Moore et les commodités apportées par les frameworks ont permis de multiplier les développements d’applications, mais elles ont aussi inscrit « les ressources infinies » dans l’inconscient collectif.

« Aujourd’hui, on peut planter un clou avec une massue mais sans reconstruire le marteau »

Les frameworks sont des couches d’abstraction qui empilent les boîtes noires. Pour les nouvelles générations de développeurs, la compréhension et l’utilité des listes chainées, d’un pointeur, d’une table de hash ne paraissent plus si importantes. Grâce aux Framework, on peut faire très facilement des « Hello world », mais qui peuvent consommer jusqu’à 1000 fois plus de ressources qu’un « Hello world » d’il y a 10 ans.

Les frameworks facilitent la vie du développeur mais surconsomment des ressources

Tout administrateur qui a dû gérer des applications Zend connaît l’importante dette technique consommée sur l’infrastructure. Très pratique pour un développeur, les frameworks permettent de se concentrer sur les fonctionnalités à réaliser et se passent facilement des connaissances des couches basses logicielles et surtout matérielles. Le cloud en est le plus bel exemple : pas  besoin de savoir ce qui se cache derrière, il y a de la puissance brute à disponibilité. Cependant, la connaissance des mécaniques internes d’un « ordinateur » permet d’être plus efficace : c’est-à-dire d’adresser un besoin plus important avec moins de ressources. Le cloud est un ensemble d’ordinateurs et reste construit sur des équipements physiques qui ont leurs propres contraintes et limites.

Dans l’écosystème du développement, la connaissance des ressources matérielles est plus que nécessaire car les ressources ne sont pas infinies qu'elles soient matérielles ou budgétaires.

Les hautes performances : une expertise plus que nécessaire

Pour garantir avec succès des infrastructures « haute performance » pouvant supporter des trafics capables d’absorber 5 000 req/sec à plus de 40 000 req/sec, il est indispensable d’avoir une vision en profondeur de l’infrastructure : du matériel (type de CPU, vitesse de bus, cache, type de carte réseau, etc..) à l’application (cache, SQL, NoSQL, multi threading, etc.. ) en passant par le système (kernel, stack TCP/IP, FileSystem, etc..).

L’expérience nous montre qu’une optimisation d’un sysctl obscure peut décupler la puissance d’une application. Est-ce que nous faisons ça pour la beauté du geste ?

Oui, un peu parce que nous sommes des passionnés, mais aussi et surtout par souci d’efficacité. Nous souhaitons permettre à nos clients d’adresser une quantité de trafic toujours plus élevée avec autant voir, moins de serveurs. Mais alors, pourquoi le discours en vogue n’est pas celui de l’efficience, qui semble être plein de bon sens ? Tout simplement parce qu’il est simple de vendre de la VM ou du serveur à la pelle, alors qu’il est quasi impossible d’avoir un effet de levier industriel sur l’expertise. Ainsi, l’essentiel des acteurs du marché vend ce qu’il est facile de vendre en masse, c’est-à-dire du serveur et de la puissance !

En conclusion, l’industrialisation permet surtout d’automatiser des tâches à faible valeur ajoutée et répétitives. Elle permet aussi de garantir un niveau de qualité constant sur l’infrastructure, mais il ne faut pas se méprendre, elle ne remplacera jamais l’expertise et la vision d’un gros barbu =). L’industrialisation et le Cloud ne remplacent pas les connaissances et l’expertise des éléments sous-jacents à la couche d’abstraction et illustrent très bien le terme DevOps.