Retour à la leçon
Mission

Mission : une API qui met 900ms a repondre alors qu'elle pourrait en mettre 300

Diagnostiquer un enchainement sequentiel de futures independantes et le paralleliser, puis choisir entre async et threads selon la nature du travail.

Contexte

Un endpoint d'API doit recuperer, pour un utilisateur donne, son profil, ses commandes recentes et ses notifications, via trois appels a des services distants qui prennent chacun environ 300ms. Un dev a ecrit :

rust
async fn charger_dashboard(id: u32) -> (String, String, String) {
    let profil = recuperer_profil(id).await;
    let commandes = recuperer_commandes(id).await;
    let notifs = recuperer_notifications(id).await;
    (profil, commandes, notifs)
}

Le monitoring montre que cet endpoint met systematiquement environ 900ms a repondre, ce qui degrade l'experience utilisateur. Les trois appels sont totalement independants les uns des autres (aucun n'a besoin du resultat d'un autre).