Formation Async Rust
€ HT / personne |
3 jours (21 heures) |
Présentation
Notre formation Async Rust vous permettra de concevoir des applications hautement concurrentes, non bloquantes et performantes en tirant parti du modèle asynchrone propre à Rust. À travers un parcours complet, vous apprendrez à écrire, structurer et déboguer du code async sûr et efficace.
Vous découvrirez en profondeur le fonctionnement des Future, l’usage d’async/await, les patterns de concurrence (spawn, join, select), ainsi que la gestion fine des I/O asynchrones (fichiers, sockets, HTTP). Chaque notion est appuyée par des ateliers pratiques, vous permettant d’appliquer immédiatement les concepts étudiés.
La formation vous guidera également dans l’utilisation avancée de Tokio : tâches supervisées, cancellation, timeouts, synchronisation asynchrone, et communication inter-tâches avec mpsc
ou broadcast
. Vous apprendrez à structurer vos applications asynchrones pour éviter les pièges classiques comme les deadlocks ou les attentes infinies.
Vous serez initié aux tests et au débogage d’applications async avec les outils les plus récents et l’instrumentation dynamique.
Comme pour toutes nos formations, elle s’appuie sur les dernières évolutions de l’écosystème Rust async
Objectifs
- Comprendre le fonctionnement des Future en Rust et le modèle de programmation asynchrone sans runtime intégré
- Savoir utiliser async/await pour structurer des fonctions non bloquantes et concurrentes
- Maîtriser l’utilisation des runtimes Tokio et async-std pour exécuter et orchestrer des tâches asynchrones
- Mettre en œuvre des patterns de concurrence efficaces avec spawn, join!, select! et les canaux de communication
- Intégrer des opérations I/O asynchrones (fichiers, réseau, HTTP, base de données) dans une application Rust
- Gérer les erreurs, les timeouts et la cancellation dans un contexte async multi-tâches
- Structurer et tester des applications Rust asynchrones robustes avec tokio::test et les outils de tracing
- Concevoir un projet full-async sécurisé, testable et performant, en appliquant les bonnes pratiques du langage et de son écosystème async
Public visé
- Développeurs Rust
- Architectes logiciels
- Développeurs back-end
Pré-requis
- Maîtriser les fondamentaux du langage Rust
Programme de la formation Async Rust
Introduction à l’asynchronisme en Rust
- Différences entre concurrence, parallélisme et asynchronisme
- Comparaison avec les modèles async de Python, JavaScript, Go
- Futures : qu’est-ce qu’une Future ?
- Le modèle poll et Pin, Waker, Context
- Pas de GC, pas de scheduler intégré → implication sur le design
Syntaxe de base : async / await
- Retour implicite de impl Future<Output = T>
- Pas d’appel direct : besoin de .await
- Blocage non-bloquant : .await rend la main au runtime
- Possibilité d’attendre plusieurs futures en séquence ou en parallèle
- Création de blocs async temporaires
- Imbrication de blocs dans une logique plus complexe
Utilisation des runtimes
- Architecture de Tokio : scheduler, workers, event loop
- Utilisation de #[tokio::main] et tokio::spawn
- Choix des features de compilation
- API calquée sur la stdlib
- Moins performant que Tokio, mais plus lisible pour débuter
- Cas d’usage pour chaque runtime
Programmation concurrente avec async
- tokio::spawn, join!, select!
- Hiérarchie et supervision des tâches
- tokio::sync::mpsc, broadcast, oneshot
- Pattern producteur / consommateur
- Mutex et RwLock async
- Sémaphores et barrières
Gestion des I/O asynchrones
- tokio::fs, tokio::net
- Utilisation de reqwest et hyper
- Pattern async/await avec client HTTP
- sqlx, sea-orm, surrealdb
- Connexions, transactions, pooling asynchrone
Patterns avancés et bonnes pratiques
- batchs d’APIs, timeouts, cancellation
- tokio::time::timeout, Abortable
- Gérer les tâches longues ou bloquées
- Deadlocks async
- .await dans les locks
- Send et Sync dans les Futures
Debugging et testing d’applications async
- Limitations de dbg! et println! dans les tâches concurrentes
- tokio-console, tracing, instrument
- #[tokio::test] et #[async_std::test]
- Mock des services asynchrones
- Coverage, profiling, benchmarks
Cas pratiques et projets fil rouge
- Routing asynchrone
- Gestion des requêtes parallèles
- Traitement async avec timeouts
- Traitement d’événements avec backpressure
- Retry et gestion d’erreurs
- Backend simple
- SQLx + Axum/Tonic + Tokio
Aller plus loin
- Implémenter son propre Future
- Quand c’est utile ?
- Pourquoi async fn dans les traits est limité
- Usage de async-trait ou dyn Trait avec Box<dyn Future>
- Async avec WASM
- Appels réseau en WebAssembly via futures
Pour aller plus loin
Formation Rust Avancé
Formation Rust
Formation WebAssembly avec Rust
Autour du sujet
Langues et Lieux disponibles
Langues
- Français
- Anglais / English
Lieux
-
France entière
- Paris
- Lille
- Reims
- Lyon
- Toulouse
- Bordeaux
- Montpellier
- Nice
- Sophia Antipolis
- Marseille
- Aix-en-Provence
- Nantes
- Rennes
- Strasbourg
- Grenoble
- Dijon
- Tours
- Saint-Étienne
- Toulon
- Angers
-
Belgique
- Bruxelles
- Liège
-
Suisse
- Genève
- Zurich
- Lausanne
-
Luxembourg
Témoignages
⭐⭐⭐⭐⭐ 4,8/5 sur Google My Business. Vous aussi, partagez votre expérience !
Afficher tous les témoignages
⭐⭐⭐⭐⭐ 4,8/5 sur Google My Business. Vous aussi, partagez votre expérience !
Noter la formation
€ HT / personne |
3 jours (21 heures) |
UNE QUESTION ? UN PROJET ? UN AUDIT DE CODE / D'INFRASTRUCTURE ?
Pour vos besoins d’expertise que vous ne trouvez nulle part ailleurs, n’hésitez pas à nous contacter.
ILS SE SONT FORMÉS CHEZ NOUS