Image Service en GO reemplaza la version realizada en Node del proyecto ecommerce.
Si bien esta desarrollado con fines académicos, si se refinan los detalles puede utilizarse en producción.
Este microservicio recibe y almacena imágenes en formato base64 en una base de datos redis.
El cliente puede solicitar las imágenes en distintos tamaños, cada tamaño se ajusta y se guarda en la base de datos para una mejor velocidad de acceso en futuras llamadas.
Las imágenes pueden recuperarse en formato base64 o bien en formato jpeg.
La documentación de las api también se pueden consultar desde el home del microservicio que una vez levantado el servidor se puede navegar en localhost:3001
El servidor GraphQL puede navegar en localhost:4001
- iamge: Logica de negocio del agregado image
- security: Validaciones de usuario contra el MS de Auth
- graph: Servidor y Controllers GraphQL federation server
- rabbit: Servidor y Controllers RabbitMQ
- rest: Servidor y Controllers Rest
- tools: Herramientas varias
Las imágenes solo pueden subirse y descargarse por usuarios autenticados, ver la arquitectura de microservicios de ecommerce.
Go golang.org
establecer variables de entorno (consultar documentación de la version instalada)
Para descargar el proyecto correctamente hay que ejecutar :
git clone https://github.com/nmarsollier/imagego $GOPATH/src/github.com/nmarsollier/imagego
Una vez descargado, tendremos el código fuente del proyecto en la carpeta
cd $GOPATH/src/github.com/nmarsollier/imagego
git config core.hooksPath .githooks
go install github.com/swaggo/gin-swagger/swaggerFiles
go install github.com/swaggo/gin-swagger
go install github.com/swaggo/swag/cmd/swag
go install github.com/golang/mock/mockgen@v1.6.0
go install github.com/99designs/gqlgen@v0.17.56
go install
imagego
Las imágenes se almacenan en una instancia de Redis. Seguir los pasos de instalación desde la pagina oficial redis.io
No se requiere ninguna configuración adicional, solo levantarlo luego de instalarlo.
Solo usuarios autorizados pueden subir y descargar imágenes. El microservicio Auth es el que identifica usuarios. Auth notifica con un broadcast los logouts en la aplicación para que se vacíen los caches locales de usuario.
Seguir los pasos de instalación en la pagina oficial de RabbitMQ
No se requiere ninguna configuración adicional, solo levantarlo luego de instalarlo.
Usamos swaggo
Requisitos
go install github.com/swaggo/swag/cmd/swag@latest
La documentacion la generamos con el comando
swag init
Para generar el archivo README-API.md
Requisito
sudo npm install -g swagger-markdown
y ejecutamos
npx swagger-markdown -i ./docs/swagger.yaml -o README-API.md
Este servidor usa las siguientes variables de entorno para configuración :
RABBIT_URL : Url de rabbit (default amqp://localhost) REDIS_URL : Url de redis (default localhost:6379) PORT : Puerto (default 3000) AUTH_SERVICE_URL : Secret para password (default http://localhost:3001) GQL_PORT : Puerto GraphQL (default 4001)
Estos comandos son para dockerizar el repositorio una vez descargado localmente.
docker build -t dev-image-go .
Mac | Windows
docker run -it --name dev-image-go -p 3001:3001 -p 40001:40001 -v $PWD:/go/src/github.com/nmarsollier/imagego dev-image-go
Linux
docker run -it --add-host host.docker.internal:172.17.0.1 --name dev-image-go -p 3001:3001 -p 40001:40001 -v $PWD:/go/src/github.com/nmarsollier/imagego dev-image-go