La plupart des mots à la mode dans le domaine de l’informatique vieillissent mal, et pour une bonne raison : la plupart des technologies qui avaient autrefois un avantage concurrentiel sont remplacées par des alternatives supérieures en une décennie ou moins. Ainsi, si un éditeur de logiciels continue de mettre en avant un mot à la mode après sa date d’expiration (1), la raison la plus simple est que son équipe de R&D n’a même pas réalisé que le monde a évolué.

De manière anecdotique, plusieurs investisseurs en capital-risque m’ont également dit qu’ils étaient réticents à investir dans une entreprise de logiciels de plus de quelques années, car la plupart des entreprises ne parviennent jamais à dissocier leur propre technologie du paysage technologique qui les a définies lors de leur création.

(1) Le marché technologique lui-même définit quand une technologie “expire”. Lorsque vous examinez une technologie donnée, au mieux vous ne pouvez que deviner combien de temps elle restera raisonnablement proche de l’état de l’art.

Les bases de données en mémoire étaient autrefois un mot à la mode, et cela n’a pas bien vieilli : toute entreprise de logiciels qui se présente de nos jours comme fournissant une informatique en mémoire ou une mémoire en mémoire propose des technologies dépassées sur le marché (2). Ne vous méprenez pas : tirer le meilleur parti de la “mémoire” - nous y reviendrons plus tard - n’a jamais été aussi important ; cependant, le paysage informatique est maintenant plus complexe qu’il ne l’était autrefois.

(2) En théorie, cela pourrait simplement être l’équipe marketing qui est en retard, tandis que l’équipe technique a déjà fait un bond en avant. Cependant, je n’ai jamais rencontré d’entreprise de logiciels qui souffrait de ce problème. Vous pouvez donc supposer en toute sécurité que le marketing est toujours en avance sur la technologie.

À la fin des années 90 et au début des années 2000, un type spécifique de mémoire volatile, appelé familièrement RAM, était devenu 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 chère et limitée que s’efforcer de compliquer autant que possible la pression sur la RAM, rien que pour restreindre au maximum cette pression, était une approche valable. En revisitant simplement la plupart des problèmes avec une approche fraîche et sans contraintes, c’est-à-dire l’informatique “en mémoire”, de nombreux éditeurs de logiciels ont obtenu des accélérations considérables par rapport aux anciens produits, qui reposaient exclusivement sur des disques durs.

En avançant rapidement jusqu’en 2018, les bases de données en mémoire sont une perspective dépassée, et cela fait déjà plusieurs années. Il existe de nombreux types de stockage de données :

  • Cache CPU L1
  • Cache CPU L2/L3
  • RAM locale
  • RAM GPU locale
  • SSD local
  • HDD local
  • RAM distante
  • SSD distant
  • HDD distant
  • Stockage sur bande ou optique

Je ne mentionne même pas les nouvelles technologies de stockage telles que l’Intel Optane, qui représentent presque une classe de dispositifs à part entière.

Les fournisseurs qui font la promotion de l’informatique “en mémoire” laissent entendre que leur technologie logicielle est principalement axée sur l’exploitation de deux types de mémoire : la RAM locale et la RAM distante. Bien qu’il soit certainement bon de tirer le meilleur parti de la RAM, qu’elle soit locale ou distante, cela met également en évidence des approches d’ingénierie qui sous-utilisent 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 faire du “calcul en cache”, ce qui permet d’obtenir des accélérations massives par rapport au simple “calcul en mémoire”. Cependant, exploiter le cache nécessite la minification de nombreuses structures de données ou même des stratégies plus intelligentes, bien au-delà de ce qui est considéré comme nécessaire ou même souhaitable du point de vue de la RAM.

Cependant, se contenter de dire que le cache CPU est plus rapide que la RAM locale serait manquer le point. De nos jours, une bonne ingénierie logicielle consiste à exploiter au maximum les capacités respectives de toutes ces classes de stockage de données. Grâce au cloud computing, assembler un mélange ad hoc de ressources informatiques n’a jamais été aussi facile.

Ainsi, Lokad ne propose pas de technologie logicielle “en mémoire”, car cela nous empêcherait de tirer parti des autres options qui nous sont actuellement disponibles. Par exemple, bien que nous puissions louer des machines avec jusqu’à 2 To de RAM, cela serait inutilement coûteux pour nos clients. Il existe de nombreux algorithmes qui peuvent être entièrement diffusés en continu ; ainsi, le traitement de téraoctets de données ne nécessite pas de téraoctets de RAM, et étant donné qu'1 Go de RAM coûte 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 d’adhérer à une perspective rigide de l’ingénierie logicielle, mais de nous en tenir à une perspective d’ingénierie plus large, qui consiste à faire le maximum avec le budget dont nous disposons. En d’autres termes, nous sommes enclins à utiliser le traitement en mémoire chaque fois qu’il surpasse les alternatives, mais pas plus.

Ensuite, comme les ressources informatiques ne sont pas entièrement ajustables à la demande - par exemple, vous ne pouvez pas réaliste louer une machine sans cache CPU - chez Lokad, nous nous efforçons de tirer le meilleur parti de toutes les ressources qui sont payées, même si ces ressources n’ont pas été strictement demandées au départ.