Este es un proyecto académico para explicar arquitectura de microservicios, implementando un carrito virtual o eCommerce.
Se utilizan varios patrones de arquitectura y cada microservicios posee tecnologías y bases de datos diferentes.
Cada directorio dentro de la raíz de este repositorio es un microservicio, cada microservicios posee documentación importante que debe ser leída con atención:
- Seguridad en Node
- Imágenes en Node
- Catálogo en Python
- Carrito en Node
- Orders en Python (Pendiente)
Existen otras versiones desarrolladas en otros lenguajes que definen los mismos microservicios con diversos paradigmas y patrones de desarrollo :
Existe un proyecto en React, que nos proporciona un cliente demo para la plataforma, permitiéndonos probar como interactúan los diferentes microservicios.
Ver la documentación del cliente en :
Este proyecto utiliza varias tecnologías, las siguientes dependencias son necesarias antes de comenzar a compilar y ejecutar aplicaciones.
Es necesario seguir los tutoriales en cada uno de los microservicios.
Existen diversas versiones para cada microservicio, Node es una dependencia que no podemos evitar dado que tanto el cliente demo como Carrito solo poseen versiones en node.
Debemos elegir entorno Python o Java como complemento para poder levantar los microservicios de Catalogo y Orders, habiendo configurado estos dos entornos, se podrá ejecutar todo el proyecto.
Alternativamente tenemos versiones de Imágenes y Auth en Go. Los proyectos Go se caracterizan por ser mucho mas veloces y consumir menos recursos, por lo tanto se el alumno lo desea puede compilar ambos proyectos en Go y disfrutar de esas ventajas a la hora de desarrollar.
El proyecto se desarrollo con Visual Studio Code, Si bien podrían utilizarse alternativas como Atom, Sublime, Eclipse, la variedad de plugins en VSCode hacen que el desarrollo sea 'amigable' para la variedad de lenguajes que estamos manejando en el proyecto.
Los plugins configurados en el momento de desarrollo en VSCode son los siguientes :
- ES7 React/Redux/GraphQL React-Native snippets by dsznajder
- React Native Tools by Microsoft
- TSLint by egamma
- Typescript React code snippets by infeng
- ESLint by Dirk Baeumer
- Go by Microsoft
- JavasScript (ES6) code snippets by charlampos karypidis
- Language Support for Java(TM) by Red Hat
- Python by Microsoft
- Python for VSCode by Thomas Haakon Townsend
- Python-autopep8 by himanoa
- TSLint by egamma
Existe un Workspace configurado para VSCode en la raíz del proyecto :
Microservicios.code-workspace
Para simplificar la configuración, se han tomado decisiones similares de arquitectura, de modo que todos los microservicios pueden utilizar el mismo servidor de base de datos local, aunque cada microservicio utiliza esquemas de datos totalmente independientes.
Seguir las guías de instalación de mongo desde el sitio oficial mongodb.com
No se requiere ninguna configuración adicional, solo levantarlo luego de instalarlo.
Sugiero instalar Mongodb Compass para poder navegar la base de datos en forma visual mongodb.com
Redis es una segunda opción de almacenamiento de datos. El microservicio de imágenes hace uso 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.
Para windows se puede descargar el paquete sin instalación : Instalación
Recomiendo instalar FastoRedis para navegar la base de datos fastoredis.com
La comunicación asíncrona entre microservicios se lleva a cabo a través de la mensajería de Rabbit.
Seguir los pasos de instalación en la pagina oficial
No se requiere ninguna configuración adicional, solo levantarlo luego de instalarlo.