Bienvenue ! Quel est votre objectif aujourd'hui ?

Sélectionnez votre profil pour adapter l'arborescence et accéder directement aux contenus pertinents.

Freelance & Tech

Je suis un recruteur / Tech Lead

Vous cherchez un développeur freelance Senior Go / Fullstack, un renfort d'équipe ou une expertise d'architecture.

Voir le profil Recruteur →
Studio & Logiciel

Je souhaite construire mon logiciel

Vous avez un besoin métier sur-mesure, une application web/mobile à concevoir ou un MVP à concrétiser.

Voir le profil Sur-Mesure →
Courses/Performance For Backend/Slots/J4_am

3. Sécurisation TLS 1.2 vs 1.3

L'évolution du protocole TLS divise par deux le temps de négociation cryptographique :

TLS 1.2 (Ancien Standard)

Négociation des suites cryptographiques puis échange de clés Diffie-Hellman séparé.
Coût : 2 RTT complets avant l'envoi des premières données HTTP.

TLS 1.3 (Standard Moderne)

Devine les clés dès le ClientHello initial (0-RTT / 1-RTT).
Coût : 1 seul RTT, soit 50% de latence réseau économisée dès la première poignée de main.


4. Coût Cumulé de Connexion

Bilan du coût matériel d'une nouvelle connexion HTTPS sécurisée (Paris vers USA ~75 ms de RTT) :

1. Handshake TCP 1 RTT (~75 ms)
Étape : Négociation SYN / SYN-ACK Coût : 1 Aller-Retour réseau Socket : Ouverture connexion
2. Handshake TLS 1.3 1 RTT (~75 ms)
Étape : Échange de clés & certificats Coût : 1 Aller-Retour (optimisé TLS 1.3) Sécurité : Chiffrement symétrique activé
3. Requête HTTP GET 1 RTT (~75 ms)
Étape : Envoi requête & réception en-têtes Coût : 1 Aller-Retour réseau Contenu : Données applicatives
Total Première Requête à Froid 3 RTT (~225 ms)
Impact : 225 ms d'attente avant le premier octet utile ! Remède : Keep-Alive & Pools de sockets HTTP

5. Réutilisation & Connexions Persistantes

Pour amortir ce coût de démarrage, les serveurs backend réutilisent les connexions :

  • Keep-Alive HTTP : Conserve la socket TCP/TLS ouverte après chaque requête pour éliminer les 2 RTT de négociation.
  • Pool de Connexions HTTP (http.Transport) : Réutilise un ensemble pré-établi de sockets vers les microservices tiers.
  • Règle d'or backend : Ne jamais recréer un http.Client par requête sous peine d'épuiser les ports locaux en TIME_WAIT.

6. HTTP/1.1 : Blocage en Tête

Le protocole historique HTTP/1.1 souffre d'un défaut matériel majeur sur le socket :

Head-Of-Line Blocking (HOL)

Sur une connexion TCP HTTP/1.1, les requêtes sont strictement séquentielles.
Si la première requête est une tâche lente (ex: rapport SQL de 2 secondes), toutes les requêtes suivantes sont paralysées en attente dans la file du socket.

  • Contournement coûteux : Les navigateurs ouvraient jusqu'à 6 connexions TCP concurrentes, gaspillant mémoire et ports.

7. HTTP/2 & HTTP/3 QUIC (Multiplexage)

Évolution des protocoles de transport pour éliminer les files d'attente réseau :

1 HTTP/2 (Multiplexé)

Trames binaires entrelacées sur un socket unique avec compression d'en-têtes HPACK.

1 seule connexion TCP.
2 HTTP/3 (QUIC sur UDP)

Flux totalement indépendants : la perte d'un paquet n'interrompt pas les flux voisins.

Zéro blocage HOL TCP.
3 Mobilité Réseau

Transition 5G/Wi-Fi instantanée sans renégocier la connexion cryptographique.

Continuité de session.

8. Le Goulot du Format JSON

Le format JSON domine les APIs Web, mais s'avère particulièrement inefficace pour les échanges internes :

1. Verbosité Textuelle

Répétition continue des clés à chaque message (ex: "user_id": 123), surchargeant la bande passante.

2. Coût CPU de Parsing

Scanner du texte caractère par caractère et convertir des chaînes ASCII en entiers ou flottants.

3. Pression GC

Instanciation massive de chaînes temporaires et de maps dynamiques allouées sur le tas.


9. Sérialisation Binaire Protocol Buffers

Protocol Buffers (Google Protobuf) remplace le texte brut par un contrat typé et un encodage binaire compact :

1syntax = "proto3";
2
3message TelemetryEvent {
4  uint64 timestamp = 1;   // Tag 1 (1 octet au lieu du nom textuel)
5  string session_id = 2;  // Tag 2
6  uint32 duration_ms = 3; // Tag 3
7  bool is_success = 4;    // Tag 4
8}
  • Typage Statique Immuable : Schéma contractuel strict défini dans un fichier .proto.
  • Désérialisation Instantanée : Pas de scan de texte, simple copie directe en mémoire alignée.
  • Gain Majeur : Messages divisés par 3 à 10 en volume et traités 5 à 10 fois plus vite.

10. Varints & Comparatif JSON vs Protobuf

Encodage compact à longueur variable et comparaison des architectures de communication :

1 Compression Varint

Un uint64 valant 1 occupe 1 seul octet au lieu de 8. Économise jusqu'à 85% de bande passante.

Magnitude variable.
2 REST / JSON (Front)

Lisible par un humain dans le navigateur, parfait pour les APIs publiques externes.

Interfaçage universel.
3 gRPC / Protobuf (Back)

Binaire pur compact pour les communications inter-services à fort débit.

Sobriété & Débit max.

11. Synthèse de l'Optimisation Réseau

Les 3 règles fondamentales pour accélérer les flux réseau :

1 Réutiliser les Sockets

Garder les connexions TCP/TLS ouvertes pour éviter de repayer les 2 RTT de négociation.

Pools de connexions.
2 Passer à HTTP/2

Exploiter le multiplexage binaire pour éliminer le blocage en tête de ligne.

1 socket partagée.
3 Bannir le JSON Interne

Remplacer le JSON par Protobuf pour les communications inter-services à fort débit.

Zéro parsing CPU lourd.

TP Fil Rouge (Séance 7) : Distribution gRPC vs REST / JSON

Activité Pratique • 3h30 • Objectif Distribution & Streaming Binaire

Mission : Transformer le craqueur en architecture distribuée maître-esclaves, comparer l'API HTTP/JSON classique au streaming binaire gRPC Protobuf et mesurer l'impact réseau/CPU sous tir de charge.

1. Architecture Distribuée

Concevoir un nœud maître qui partitionne l'espace de recherche combinatoire de @kAl1 et distribue les sous-plages à des nœuds esclaves (workers distants).

2. Version A : REST / JSON

Implémenter une API HTTP/1.1 classique échangeant les blocs de candidats et les rapports de découverte au format JSON.

3. Version B : gRPC Protobuf

Définir le contrat .proto et implémenter le streaming bidirectionnel binaire sur HTTP/2 multiplexé (zéro parsing texte).

4. Tir de Charge k6 / ghz

Comparer avec un outil de tir de charge l'effondrement de la consommation de bande passante réseau et la baisse d'utilisation CPU.