Au-delà des bases de données en mémoire
La plupart des buzzwords IT vieillissent mal, et pour cause : la plupart des technologies qui offraient jadis un avantage compétitif se font supplanter par des alternatives supérieures en moins d’une décennie ou moins. Ainsi, si un fournisseur de logiciels continue à utiliser un buzzword bien après sa date d’expiration (1), alors l’explication la plus simple est que son équipe R&D n’a même pas réalisé que le monde avait évolué.
De manière anecdotique, plusieurs capital-risqueurs m’ont également confié qu’ils en avaient assez d’investir dans une entreprise de logiciels âgée de quelques années seulement, car la plupart des entreprises ne parviennent jamais à découpler leur propre technologie du paysage technologique qui les a définies à leurs débuts.
(1) Le marché technologique lui-même détermine quand une technologie “expire”. Lorsqu’on examine une technologie donnée, au mieux, on ne peut qu’estimer approximativement combien de temps elle restera raisonnablement proche de l’état de l’art.
Les bases de données en mémoire étaient autrefois un buzzword IT, et cela n’a pas bien vieilli : toute entreprise de logiciels qui se positionne de nos jours comme fournissant du calcul en mémoire ou en mémoire pousse sur le marché des technologies obsolètes (2). Ne vous méprenez pas toutefois : tirer le meilleur parti de la “mémoire” - nous en reparlerons plus tard - n’a jamais été aussi important ; cependant, le paysage informatique est désormais plus complexe qu’il ne l’était autrefois.
(2) En théorie, il se pourrait simplement que l’équipe marketing accuse un retard, alors que l’équipe technique a déjà pris de l’avance. Cependant, je n’ai jamais rencontré d’entreprise de logiciels qui souffrait de ce problème. Vous pouvez être sûr que le marketing est toujours en avance sur la technique.
À la fin des années 90 et au début des années 00, un type spécifique de mémoire volatile, communément appelée la RAM, était devenue suffisamment abordable pour que des ensembles de données de plus en plus intéressants et précieux puissent tenir en mémoire. À l’époque, la plupart des logiciels étaient conçus autour de l’idée que la RAM était si coûteuse et limitée qu’il valait la peine de se compliquer la vie, uniquement dans le but de réduire autant que possible la pression sur la RAM. En revisitant simplement la plupart des problèmes avec une approche nouvelle et sans contraintes, c’est-à-dire le calcul en mémoire, de nombreux fournisseurs de logiciels ont réalisé des accélérations considérables par rapport aux anciens produits, qui se fiaient exclusivement aux disques durs rotatifs.
Passons à 2018, les bases de données en mémoire représentent une perspective dépassée, et cela fait déjà des années. Il existe de nombreux types de stockage de données :
- Cache CPU L1
- Cache CPU L2/L3
- RAM locale
- RAM locale du GPU
- SSD local
- HDD local
- RAM distante
- SSD distant
- HDD distant
- Stockage sur bande ou optique
Je ne liste même pas les technologies de stockage plus récentes comme l’Intel Optane qui représente presque une catégorie d’appareils à part entière.
Les fournisseurs promouvant le calcul en mémoire laissent entendre que leur technologie logicielle est principalement orientée vers l’exploitation de deux types de mémoire : la RAM locale et la RAM distante. Bien que tirer le meilleur parti de la RAM, qu’elle soit locale ou distante, soit certainement une bonne chose, cela présente également des approches d’ingénierie qui sous-exploitent les alternatives.
Par exemple, au cours des deux dernières décennies, le cache CPU est passé de 512 Ko à plus de 60 Mo pour les CPU haut de gamme. Avec autant de cache CPU, il est maintenant possible de réaliser du « calcul en cache », apportant des accélérations massives par rapport au simple « calcul en mémoire ». Cependant, exploiter le cache requiert de minimiser de nombreuses structures de données ou d’adopter des stratégies encore plus intelligentes, bien au-delà de ce qui est considéré comme nécessaire voire souhaitable du point de vue de la RAM.
Cependant, se contenter de signaler que le cache CPU est plus rapide que la RAM locale passerait à côté de l’essentiel. De nos jours, une bonne ingénierie logicielle consiste à exploiter au maximum les capacités respectives de toutes ces catégories de stockage de données. Grâce au cloud computing, assembler une combinaison ad hoc de ressources informatiques n’a jamais été aussi facile.
Ainsi, Lokad ne fournit pas une technologie logicielle de calcul en mémoire, car cela nous empêcherait de tirer parti des autres options actuellement disponibles. Par exemple, bien que nous puissions louer des machines disposant jusqu’à 2 To de RAM, ce serait inutilement coûteux pour nos clients. De nombreux algorithmes peuvent être entièrement traités en flux continu ; ainsi, le traitement de téraoctets de données ne nécessite pas des téraoctets de RAM, et compte tenu qu'1 Go de RAM est environ 1000 fois plus cher qu'1 Go de HDD, ce n’est pas un détail d’implémentation.
Notre objectif n’est pas de s’en tenir à une perspective rigide de l’ingénierie logicielle, mais de rester fidèle à une perspective d’ingénierie plus large, qui consiste à tirer le maximum de ce que vous pouvez avec le budget dont vous disposez. En d’autres termes, nous sommes enclins à utiliser le traitement en mémoire chaque fois qu’il surpasse les alternatives, mais pas davantage.
Ensuite, comme les ressources informatiques ne sont pas entièrement ajustables à la demande - par exemple, vous ne pouvez pas louer réalistement une machine sans cache CPU - chez Lokad, nous nous efforçons de tirer le meilleur parti de toutes les ressources pour lesquelles nous payons, même si ces ressources n’étaient pas strictement demandées au départ.