Rust : Comment avoir un backend performant et résilient?
Tags: rust, webdev, tutorial
Published: 2022-08-30 10:31:00

## Les serveurs web
Les serveurs web sont partout de nos jours. Légion sont les sites ne reposant plus simplement sur du HTML et du CSS pour afficher du contenu à leurs utilisateurs mais aussi sur un serveur (un "backend") afin de pouvoir leur offrir plus (e.g. une authentification, de la persistance, etc…).

Ces serveurs sont à l'origine d'une grande partie des "actions" effectuées par une application (que l'on parle de site web, application mobile ou tout autre application ayant recours à un service) et permettent de retourner des données ainsi que parfois en sauvegarder dans une base de données. Le serveur web parfait a donc plusieurs atouts. Parmi eux on compte :
- **La performance** : un serveur lent impliquera des requêtes qui traînent dans le temps et par conséquent une expérience utilisateur dégradée.
- **La sécurité** : un serveur non sécurisé pourra voir ses données volées ou modifiées.
- **La stabilité** : un serveur buggé dégradera encore une fois l'expérience utilisateur allant parfois jusqu'à rendre un service totalement inutilisable.

Les technologies du web ont beaucoup évolué ces dernières années. Là où le PHP était un standard il y a 10/15 ans on observe maintenant une grande diversité dans les langages et les outils nous permettant de construire des services web. Parmi les langages on peut notamment citer Ruby,  Java, Python, Javascript et bien d'autres ! Si chacun a bien évidemment ses avantages, ils sont évidemment aussi livrés avec leurs mauvais côtés. Ainsi un langage comme le Ruby, très facile d'accès et avec lequel on peut faire beaucoup de choses très rapidement, ne sera pas aussi performant qu'un langage compilé comme le C# par exemple.

## Le Rust

> _Bon, c'est bien beau tout ça mais où est-ce que tu veux en venir ?_

Et bien tout simplement au Rust. Pour ceux qui ne connaissent pas le Rust, c'est un langage développé initialement chez Mozilla (dans le but de construire un nouveau moteur web nommé "Servo") puis soutenu par la "Rust Foundation" depuis 2020. La promesse du Rust est d'offrir un langage performant, fiable et productif.

- Les performances du Rust se rapprochent de celles du C, la référence en terme de rapidité.
- Le langage est, grâce à son système de typing et d'ownership, thread safe et memory safe; ce qui limite un grand nombre d'erreurs.
- Enfin Rust dispose d'une excellente documentation, d'un compilateur bienveillant, avec des messages d'erreur utiles, et d'outils de premier ordre, le tout assurant une excellente expérience de code.

En bref, le Rust a su tirer des leçons de ses prédécesseurs afin de profiter des points forts de chacun tout en y ajoutant ses propres atouts. C'est pour cette raison qu'il est devenu un choix de premier ordre pour les backends web.

Dans cette série d'articles, nous étudierons comment monter un serveur web en Rust, de la mise en place du workspace jusqu'à la mise en production, en passant par l'authentification ou la connexion à une base de données.

Une connaissance de base du langage Rust est requise afin de suivre au mieux les différentes étapes. Si ce n'est pas votre cas, n'hésitez pas à ouvrir le Book Rust sur un autre onglet pendant votre lecture !

Dans la prochaine partie, nous installerons notre workspace afin de pouvoir coder dans les meilleures conditions possibles.