Projet Personnel

Dreamproxy

Un proxy inverse léger et un serveur de fichiers statiques écrits from scratch en Go pour explorer le parsing HTTP, la gestion TCP et une conception serveur pensée pour la production.

Dreamproxy est un projet d'apprentissage système avec de vraies contraintes produit: gestion explicite du protocole, routage prévisible et trajectoire claire vers un durcissement production. Chaque fonctionnalité expose les internals au lieu de les masquer.

Vue d'Ensemble

Status

Développement actif

Role

Conception système et implémentation

Stack

Go, sockets TCP brutes, parsing HTTP custom, file I/O

Updated

Mai 2026

Matrice de Fonctionnalités

Parseur HTTP Custom

Contrôle complet du cycle de requête

Parsing manuel start-line, headers et framing body

Terminé

Routage Reverse Proxy

Composition de services backend

Logique de forwarding avec mapping de cibles upstream

Terminé

Service de Fichiers Statiques

Comportement edge unifié

Résolution de chemin, détection MIME, gestion fallback

Terminé

Couche de Cache

Réduction de pression upstream

Stratégie de clés mémoire + politique d'invalidation

Planifié

Progression & Roadmap

v0.2

100%
  • Noyau parseur HTTP
  • Forwarding proxy basique
  • Pipeline fichiers statiques

v0.3

65%
  • Durcissement gestion connexions
  • Frontières d'erreur
  • Logs structurés améliorés

v1.0

25%
  • Module cache
  • Support compression
  • Arrêt gracieux

Défis Techniques

Correction protocolaire

Problem: De petites erreurs de parsing cassent l'interopérabilité client.

Solution: Phases de parsing strictes avec gestion explicite des requêtes invalides.

Tradeoff: Code plus verbeux et surface de tests plus large.

Transparence proxy

Problem: Le forwarding doit préserver l'intention sans corrompre les headers.

Solution: Stratégie de pass-through prévisible avec overrides contrôlés.

Tradeoff: Maintenance attentive requise à mesure que les features grandissent.

Confinement des pannes

Problem: Les erreurs connexion peuvent se propager si mal isolées.

Solution: Isolation des erreurs par chemin de requête + logs structurés.

Tradeoff: Complexité additionnelle dans le cycle de vie des handlers.

Performance & Fiabilité

Chemin Critique

Parsing en phases single-pass

réduit les transitions d'état ambiguës au traitement requête

Sécurité Opérationnelle

Frontières d'erreur explicites

évite la propagation des pannes entre requêtes

Trajectoire Scalabilité

Roadmap cache + compression

vise une latence plus faible et moins de charge upstream

Leçons & Prochaines Étapes

  • Maîtriser les internals protocolaires améliore la qualité des décisions système.
  • En code réseau/proxy, la prévisibilité vaut mieux que l'astuce.
  • Prochaine priorité: cycle de vie connexion, cache, et optimisation guidée par benchmarks.