
Objectif
L’objectif principal de ce projet était de concevoir un microservice autonome et performant dédié à la gestion des URL au sein d’une application distribuée plus large. L’idée était de déléguer cette tâche spécifique à un service indépendant, afin de réduire le couplage, améliorer la scalabilité et simplifier la maintenance du code.
Enjeux techniques
L’un des principaux enjeux techniques du projet était de concevoir un service léger et performant, avec une image Docker d’environ 10 Mo et un démarrage quasi instantané, inférieur à 100 ms. Le microservice devait être totalement portable, capable de se déployer aussi bien sur Docker, Kubernetes que sur AWS Lambda via AWS SAM, sans modification du code. L’architecture a été pensée pour rester claire, modulaire et maintenable, en suivant les bonnes pratiques du langage Go : utilisation du répertoire internal/ pour isoler la logique métier, séparation explicite des adapters (persistence, transport, logger, etc.), et définition d’interfaces (ports) afin de faciliter les tests unitaires et la substitution des implémentations selon les besoins.

Architecture du projet
Le microservice suit une approche Clean Architecture composée de quatre couches : Domain (entités et interfaces), App (logique métier indépendante), Adapters (implémentations concrètes comme HTTP ou stockage) et Cmd (point d’entrée du service). Cette structure rend le code plus clair, testable et facile à faire évoluer.





Stack technique
Le microservice a été développé en Go 1.21 et peut être déployé facilement sur AWS Lambda via AWS SAM.