
Project Objective
The main objective of this project was to design a standalone and high-performance microservice dedicated to URL management within a larger distributed application. The idea was to delegate this specific task to an independent service in order to reduce coupling, improve scalability, and simplify code maintenance.
Technical Challenges
One of the key technical challenges was to build a lightweight and efficient service, with a Docker image of around 10 MB and an almost instant cold start of less than 100 ms.
The microservice had to remain fully portable, deployable on Docker, Kubernetes, and AWS Lambda via AWS SAM, without any code changes.
The architecture was designed to be clear, modular, and maintainable, following Go best practices: use of the internal/ folder to isolate business logic, explicit separation of adapters (persistence, transport, logger, etc.), and well-defined interfaces (ports) to make unit testing easier and allow implementation swapping when needed.


Project Architecture
The microservice follows a Clean Architecture approach structured around four layers: Domain (entities and interfaces), App (independent business logic), Adapters (concrete implementations such as HTTP or storage), and Cmd (service entry point). This design makes the code clearer, more testable, and easier to extend.






Tech Stack
The microservice was developed using Go 1.21 and can be easily deployed to AWS Lambda through AWS SAM.