📡 Réseaux & Cloud Essentiels
Les Fondations Invisibles
📬 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).
🗂️ A. Modèle TCP/IP (Simplifié)
🔌 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
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 :
ping api.startup.comdepuis EU : 350ms (anormal pour un serveur EU)tracerouterévèle que les paquets transitent par... les USA ! 🤦- 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
Vérifier la connectivité de base
ping [host] - Est-ce que la machine répond ? Si non, problème de routage ou
firewall.
Tester la résolution DNS
dig [domain] ou nslookup - Le nom de domaine se résout-il en IP
correcte ? Cache DNS corrompu ?
Vérifier le chemin réseau
traceroute [host] - Où les packets se perdent-ils ? Quel routeur pose problème ?
Tester la couche applicative
curl -v https://[host] - HTTP/HTTPS fonctionne ? Certificat TLS valide ? Code
200/500 ?
Vérifier les ports et firewalls
telnet [host] [port] ou nc -zv [host] [port] - Le port est-il
ouvert ? Firewall bloque ?
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 |
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.
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.
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).
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.
kind: NetworkPolicy spec: podSelector: matchLabels: app: backend ingress: - from: - podSelector: matchLabels: app: frontend ports: - port: 8080
📊 Cas d'étude : Cloudflare - Une Architecture Anycast Globale
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
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.