00

📡 Réseaux & Cloud Essentiels

Les Fondations Invisibles

"Avant de construire des pipelines de déploiement à la vitesse de la lumière, il faut maîtriser l'asphalte sur lequel ils roulent. Le routage, les ports et les adresses IP sont l'alphabet fondamental sur lequel repose toute la magie distribuée du Cloud."

📬 Analogie : Le Système Postal

Internet est un système postal géant. Chaque paquet de données est une lettre avec une adresse (IP), un code postal (Port), et un chemin de distribution (Routage). Si l'adresse est mauvaise ou si le facteur (Router) ne connaît pas le chemin, la lettre est perdue.

📖 Pourquoi les Réseaux en DevOps ?

En tant que DevOps, vous ne gérez pas seulement du code : vous gérez des systèmes distribués qui communiquent via le réseau. Comprendre les réseaux vous permet de :

  • Débugger efficacement : 80% des incidents en production sont liés au réseau ou à la connectivité
  • Optimiser la performance : Latence, bande passante, CDN, DNS caching
  • Sécuriser l'infrastructure : Firewalls, VPN, Network Policies, Zero Trust
  • Concevoir des architectures résilientes : Load Balancers, Service Mesh, Multi-Region

Un DevOps qui ne comprend pas les réseaux est comme un pilote qui ne connaît pas la météo : il ne saura pas pourquoi ça plante quand ça plante.

💡 Le saviez-vous ?

ARPANET, le précurseur d'Internet, a envoyé son premier message le 29 octobre 1969 entre UCLA et Stanford. Le message était censé être "LOGIN" mais le système a planté après "LO". Premier bug réseau de l'histoire ! 🐛

Aujourd'hui, Internet compte 5,3 milliards d'utilisateurs et transfère 4,8 zettaoctets de données par an (1 ZB = 1 milliard de TB).

Client 192.168.1.10 Router A BGP AS64512 Router B BGP AS64513 ALB Port 443 WAF / FW Deny All -> 80 Server 10.0.1.5

🗂️ A. Modèle TCP/IP (Simplifié)

Couche 4
Application
HTTP, HTTPS, SSH, DNS, FTP
Couche 3
Transport
TCP, UDP
Couche 2
Internet
IP, ICMP
Couche 1
Accès Réseau
Ethernet, Wifi

🔌 B. Protocoles Clés

Protocole Port Rôle
HTTP/HTTPS 80 / 443 Communication Web (Pages, APIs REST)
SSH 22 Accès distant sécurisé aux serveurs
DNS 53 Résolution de noms de domaine
TCP - Transport fiable (Connexion établie)
UDP - Transport rapide (Sans connexion)

🌐 C. Concepts Réseau Essentiels

Adressage

  • IP : Adresse de la machine (ex: 192.168.1.1)
  • CIDR : Notation de plage (/24 = 256 IPs)
  • Port : Numéro du service (ex: :8080)
  • NAT : Traduction d'adresses (Privé ↔ Public)

Sécurité

  • Firewall : Filtre le trafic (Autoriser/Bloquer)
  • TTL : Durée de vie du paquet (max sauts)
  • TLS/SSL : Chiffrement des échanges (HTTPS)
  • mTLS : Authentification mutuelle (K8s)

☁️ D. Cloud Essentials (AWS/GCP/Azure)

VPC

Réseau privé isolé. Contient vos Subnets (Public/Privé).

Security Group

Firewall au niveau de l'instance (Autoriser ports/IPs).

IAM

Gestion des identités et permissions (Rôles, Policies).

Load Balancer

Distribue le trafic. ALB (L7/HTTP), NLB (L4/TCP).

Region / AZ

Region = Zone géographique. AZ = Datacenter isolé dans la Region (Haute Dispo).

CDN

Cache global (CloudFront, Cloudflare). Réduit la latence.

📊 OSI vs TCP/IP : Quelle Différence ?

🏆 Modèle TCP/IP (4 couches)

  • Pragmatique : Basé sur l'implémentation réelle d'Internet
  • Simplif : 4 couches faciles à mémoriser
  • Standard Internet : Utilisé par tous les protocoles modernes
  • Focus DevOps : Application, Transport, Internet, Accès
  • Exemples concrets : HTTP/DNS (App), TCP/UDP (Transport), IP (Internet)

📖 Modèle OSI (7 couches)

  • Théorique : Modèle académique de référence
  • Complexe : 7 couches (Physical, Data Link, Network, Transport, Session, Presentation, Application)
  • Rarement implémenté : Peu de protocoles suivent exactement ce modèle
  • Utile pour apprendre : Bon pour comprendre les concepts
  • Mnémonique : "Please Do Not Throw Sausage Pizza Away"

📊 Cas d'étude : Latence Réseau Mystérieuse en Production

2.4s Latence initiale
45ms Après fix
-98% Amélioration

Contexte : Une startup SaaS voit son API ralentir brutalement. Les utilisateurs EU se plaignent de timeouts (>2s), mais les utilisateurs US n'ont aucun problème.

Investigation :

  1. ping api.startup.com depuis EU : 350ms (anormal pour un serveur EU)
  2. traceroute révèle que les paquets transitent par... les USA ! 🤦
  3. Le DNS renvoyait l'IP du serveur US au lieu de l'EU

Solution : Configurer Route 53 Geolocation Routing (ou équivalent GCP/Azure). Les requêtes EU sont désormais routées vers le datacenter EU.

Résultat : Latence divisée par 53x. Clients EU satisfaits. Leçon : Le réseau, c'est de la géographie.

🔍 Guide Pas-à-Pas : Débugger un Problème Réseau

1
Vérifier la connectivité de base

ping [host] - Est-ce que la machine répond ? Si non, problème de routage ou firewall.

2
Tester la résolution DNS

dig [domain] ou nslookup - Le nom de domaine se résout-il en IP correcte ? Cache DNS corrompu ?

3
Vérifier le chemin réseau

traceroute [host] - Où les packets se perdent-ils ? Quel routeur pose problème ?

4
Tester la couche applicative

curl -v https://[host] - HTTP/HTTPS fonctionne ? Certificat TLS valide ? Code 200/500 ?

5
Vérifier les ports et firewalls

telnet [host] [port] ou nc -zv [host] [port] - Le port est-il ouvert ? Firewall bloque ?

6
Analyser les logs du serveur

Côté serveur : tail -f /var/log/nginx/error.log - Erreurs côté backend ? Timeouts database ?

⚠️ Pièges Courants en Réseau

  • Security Group mal configuré : "Ça marche en local mais pas en prod" → Vérifier les inbound rules
  • DNS caching : Changement d'IP non immédiat (TTL = 300s) → Attendre ou flush cache
  • NAT Gateway limits : Trop de connexions sortantes → Connection pool exhausted
  • MTU mismatch : Packets fragmentés → Perf dégradée (rare mais vicieux)

🔄 À Retenir - Réseaux pour DevOps

  • TCP/IP 4 couches : Application → Transport → Internet → Accès
  • Ports essentiels : 80 (HTTP), 443 (HTTPS), 22 (SSH), 3306 (MySQL), 5432 (PostgreSQL)
  • Debug méthodique : Ping → DNS → Traceroute → Curl → Ports → Logs
  • Cloud networking : VPC, Security Groups, Load Balancers, Regions/AZ
  • 80% des incidents sont liés au réseau → Maîtriser TCP/IP = sauver des nuits

⌨️ E. Outils CLI Indispensables

Commande Usage Exemple
ping Tester si un hôte répond (ICMP) ping google.com
traceroute Voir le chemin des paquets (chaque routeur) traceroute cloudflare.com
nslookup / dig Requête DNS (Nom → IP) dig github.com
curl Requête HTTP en ligne de commande curl -I https://api.github.com
ssh Connexion distante sécurisée ssh user@192.168.1.100
netstat / ss Voir les ports ouverts et connexions ss -tulnp
openssl Vérifier certificats TLS openssl s_client -connect google.com:443
💡 Astuce Debug : Si une app ne marche pas, vérifiez dans l'ordre : 1) ping (réseau de base), 2) curl (HTTP), 3) ss (port ouvert ?), 4) Logs applicatifs.

🚪 F. Ingress Controllers & API Gateways

Dans Kubernetes, les Services (ClusterIP) sont internes. Pour exposer vos apps au monde extérieur, vous avez besoin d'un Ingress Controller (ex: Nginx, Traefik) qui route le trafic HTTP/S entrant.

ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: myapp.com
    http:
      paths:
      - path: /api/v1
        pathType: Prefix
        backend:
          service:
            name: api-service
            port:
              number: 80

🚦 Rôles Clés de l'Ingress

  • Host-based Routing : api.site.com → Service A, blog.site.com → Service B
  • Path-based Routing : /api → Backend, /static → CDN
  • TLS Termination : Décrypte le HTTPS ici pour soulager les pods
  • Rate Limiting : Bloque si > 100 req/s par IP
Ingress vs API Gateway

Ingress (Nginx) : Routing basique L7.
API Gateway (Kong, Tyk) : + Auth (Oauth2), Monetization, Analytics avancés.

🕸️ G. Service Mesh (Istio / Linkerd)

Quand vous avez 100+ microservices, la complexité réseau explose. Le Service Mesh ajoute un proxy "Sidecar" (Envoy) à côté de CHAQUE conteneur pour gérer le réseau intelligemment.

🔒

mTLS Zero-Trust

Chiffrement automatique entre TOUS les services. Service A ne parle à Service B que s'il a le bon certificat (géré par le Mesh).

🚦

Traffic Splitting

Canary Release programmable : "Envoie 5% du trafic à la v2, si < 1% d'erreurs, passe à 10%".

🛡️

Resiliency

Circuit Breakers, Retries automatiques, Timeouts. Empêche une panne en cascade.

Istio VirtualService (Canary)
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews-route
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 90
    - destination:
        host: reviews
        subset: v2
      weight: 10

🛡️ H. SDN & Kubernetes Network Policies

Par défaut dans K8s, tous les pods peuvent parler à tous les pods (Open Bar). C'est un risque de sécurité majeur. Les Network Policies agissent comme un firewall interne.

Cela nécessite un plugin CNI (Container Network Interface) compatible comme Calico ou Cilium (basé sur eBPF).

Default Deny All (Best Practice)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
# Résultat : Plus rien ne rentre ni ne sort !
# Il faut ensuite whitelister explicitement.
Allow Frontend to Backend
kind: NetworkPolicy
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - port: 8080

📊 Cas d'étude : Cloudflare - Une Architecture Anycast Globale

300+ Datacenters
172 Tbps Capacité réseau
50ms Latence pour 95% du monde

Architecture Anycast :

Normalement, 1 IP = 1 Serveur (Unicast). Avec Anycast, la même IP (ex: 1.1.1.1) est annoncée par 300 datacenters dans le monde. Le protocole de routage BGP dirige automatiquement l'utilisateur vers le datacenter le plus proche.

Avantages :

  • DDoS Mitigation : Une attaque de 1 Tbps est diluée sur 300 centres. Aucun centre ne tombe.
  • Performance : Pas de latence transatlantique si vous êtes local.
  • Haute Dispo : Si Paris tombe, le trafic est rerouté vers Londres ou Francfort en quelques secondes via BGP.

📊 Cas d'étude : AWS Global Accelerator vs Internet Public

-60% Réduction Latence Jitter
2x Débit TCP traversée océan

Problème : Internet public ("The Wild West") est imprévisible. Routes instables, packet loss, peering saturé.

Solution : Global Accelerator vous donne une IP statique Anycast qui entre dans le réseau backbone privé d'AWS au point de présence (PoP) le plus proche de l'utilisateur.

Résultat : Vos paquets voyagent sur la fibre privée d'AWS (optimisée, pas de congestion) au lieu de sauter entre 15 FAI publics douteux. Idéal pour Gaming, VoIP, Finance.