cherezoff - Fotolia

JSON et XML dégradent-ils les performances ?

Les formats ASCII comme JSON peut avoir un effet négatif sur les performances du serveur d’applications. Des formats binaires émergent pour contrecarrer cela.

L’encodage ASCII, très répandu avec les formats JSON ou encore REST nuit aux performances serveurs. Ce constat, Martin Thompson, fondateur de Real Logic, un cabinet de conseil américain, l’a réalisé. Selon lui, il existe une grande variété de formats binaires qui améliorent de façon significative les performances du traitement des messages. Et cela peut être de la plus haute importance pour des applications gourmandes en ressources, comme le traitement de transactions, les analyses de données ou encore dans le domaine des services financiers.

« J’ai rencontré nombre d’applications qui passaient beaucoup de temps CPU à parser et transformer XML et JSON au lieu d’exécuter la logique de l’application », explique-t-il à nos confrères de The Server Side (groupe Techtarget, propriétaire du MagIT).

Des gains dans le parsing de messages

Cela est d’autant plus important dans l’industrie de la Finance, où les applications doivent avoir la capacité de traiter des flux de marchés pouvant atteindre plus de 10 millions de messages par secondes – et la tendance est à la hausse. La Finance a ratifié le format binaire SBE pour traiter les données et les transactions financières. Celui-ci a été conçu pour réduire radicalement la latence comparé aux formats alternatifs.

Martin Thompson, et son équipe, ont mis au point une implémentation de référence de SBE en Java, C++ et C#, capable de traiter jusqu’à 34 000 messages par seconde, soit entre 16 et 25 fois plus rapidement que Google Protocol Buffer (GPB) sur un hardware équivalent. Cela était aussi plus de 1 000 fois plus rapides qu’avec JSON.

Atteindre ce niveau d’efficacité n’est toutefois pas pour les âmes sensibles. Selon Martin Thompson, l’application a dû être débuguée avec l’analyseur de paquets Wireshark, plutôt qu’avec le débugueur inclus dans  les IDEs Java. Ce qui soulève la question suivante : faut-il mieux utiliser des formats plus efficaces qui réduisent les temps CPU et la bande passante du réseau au détriment d’un accroissement de bande passante du développeur et des cycles de développements d’applications plus longs ?

Emergence de nouveaux formats binaires

De nombreux formats binaires différents ont émergé ces dernières années, comme Fast Protocol dans la Finance, Google Protocol BuffersApache Avro, Thrift de Facebook, et Microsoft Bond. Tous ces différents formats font la promesse d’une efficacité accrue comparée aux formats ASCII comme XML ou JSON.

Cela peut améliorer le rendu de presque toutes les applications liées au traitement de messages. Ils font aussi la promesse de réduire la consommation énergétique des terminaux IoT, assure Martin Thompson. Sans oublier celle d’ingérer les données de ces mêmes terminaux.

Alors pourquoi ces formats binaires n’explosent-ils pas ?

Ces formats n’ont pas été adoptés massivement par la communauté mondiale des développeurs, en dehors du monde de la Finance. Une partie de la réponse pourrait être que JSON correspond bien au développement Java. Il se peut également qu’il soit plus compliqué de documenter une API et de le rendre accessible à des développeurs tiers. Et cela pourrait bien marquer une rupture pour les entreprises qui dépendent d’une grande communauté de développeurs pour intégrer leurs propres APIs au sein d’applications.

Un autre facteur pourrait être que les gains en matière de performances ne sont pas aussi significatifs par rapport aux autres, réalisés sur d’autres composants d’une application. Dans le cas, par exemple, d’une application limitée en matière de puissance de calcul et de mémoire, un protocole plus efficace n’est pas si important. Notons également que les entreprises devront aussi adapter leur outillage et former leurs développeurs à ces nouveaux protocoles.

Si, d’une certaine façon, il est surprenant de voir des entreprises basculer vers des langages réputés moins performants, comme Javascript ou Python, cela devient pertinent quand le développeur est une denrée rare. Le futurologue George Gilder a déclaré que les meilleurs modèles reposent sur le gaspillage des ressources les moins chères pour conserver les ressources les plus coûteuses. Les entreprises souhaitent-elles peut-être attendre que le coût de ces formats binaires baisse pour les intégrer finalement dans leurs applications modernes…

 

Pour approfondir sur Langages