Intégrer le langage Rust dans notre écosystème (Partie 1)

Author Avatar
centoria décembre 20, 2024 · 1 mois ago · playListen
  • likedin
  • facebook
  • img-link

Développeur Rust offshore

 
De façon à étoffer notre offre et proposer de nouvelles solutions techniques pour nos clients, nous avons évalué divers langages pour venir épauler ou remplacer un jour ceux que nous utilisons dans le développement backend. Les candidats étaient les langages Go, Kotlin et Rust. Au sujet de Kotlin, vu qu’il utilise la JVM, son écosystème est le même que pour Java. De facto, il est interchangeable avec ce dernier. Nous l’avons donc adopté. Mais un langage très différent de ce que nous connaissons a retenu notre attention, et c’est le langage Rust. Ainsi nous avons put faire émerger notre premier développeur Rust.

 

Pourquoi intégrer le langage Rust ?

 
Outre le fait de proposer des développeurs Rust offshore, nous listons ci-dessous les raisons techniques qui ont validé le choix de Rust parmi les langages candidats.

Ratio performance/matériel

 
La responsabilité écologique est un domaine qui prend de l’importance, même en IT. Quel rapport avec un langage de programmation ? Tous les langages, en fonction de la manière dont ils ont été conçus, ont une empreinte mémoire et CPU différente. Bien que ce sujet soit complexe, il ressort que Rust offre un bon compromis à ce niveau-là, notamment pour des architectures micro-services. En effet, des tests nous ont montré que la mémoire consommée « au repos » par un exécutable serveur Rust est beaucoup plus faible, à fonctionnalité égale, que celle des autres langages que nous utilisons.
Rust est compilé en langage machine : pas d’interpréteur de code source ou de bytecode, donc moins « d’overhead ». Sur ce point-là, il se rapproche des langages comme le C ou le C++. Avec ces qualités, on peut s’attendre à ce qu’un microservice codé en Rust fasse autant qu’un microservice codé en PHP, par exemple, avec moins de ressources matérielles. Moins de ressources matérielles signifie également moins d’énergie et de mémoire consommées.

 

La cybersécurité

 
Beaucoup de failles exploitées dans les applicatifs sont dues à des problèmes de gestion de la mémoire. Rust, avec son principe novateur de « borrowing » et « ownership », et grâce aux contrôles effectués au moment de la compilation, améliore grandement ce point, vis-à-vis des langages interprétés et même de certains langages compilés. En outre, Rust respecte des standards de sécurité tels que ISO/IEC 27001 et OWASP.

 

La qualité des livrables

 

Rust renforce de bonnes pratiques dès la compilation. Nous en parlerons plus en détail dans la seconde partie. Parmi ces pratiques, on trouve notamment :

  • Le principe d' »ownership » et de « borrowing »
  • L’immutabilité des variables par défaut
  • La détection des courses critiques pour le multithreading
  • Un typage statique et strict

 
Ces vérifications et contrôles stricts rendent les premiers pas dans le langage assez difficiles pour le développeur Rust junior. Cependant, les avantages nous semblent largement compenser la courbe d’apprentissage. C’est ce point qui a le plus convaincu les managers.

 

Engagement des collaborateurs

 
Il est également important d’apporter des challenges et d’enthousiasmer nos collaborateurs avec de nouvelles technologies. Le développement informatique étant notre cœur de métier, il est essentiel d’étoffer notre offre IT, mais surtout de garantir l’adhésion de nos développeurs offshore. Et Rust a suscité un large et vif intérêt au sein de l’équipe.

 

Où trouver de la documentation technique ?

 
Alors, comment commencer et que faire pour monter en compétence ? Première chose à savoir : il existe une source d’information incontournable sur le site officiel du langage, le « Rust Book ».
De nombreuses ressources en ligne sont également disponibles, témoignant de la maturité croissante de cet écosystème. De plus, des frameworks sont proposés pour répondre à presque tous les besoins.

 

Par quoi commencer et comment le tester en production ?

 
L’idée a été simple : nous avons choisi une fonctionnalité déjà développée et l’avons traduite en Rust. Ce prototype fera l’objet de la seconde partie de l’article.
Pour l’intégrer en production, cependant, nous avons sélectionné une fonctionnalité très secondaire dans un projet de microservices. Avec cette approche, nous favorisons une intégration progressive et sans risques. Si vous avez un projet utilisant cette technologie ou souhaitez l’intégrer, n’hésitez pas à nous contacter.

Top Posts :