All Projects → nmarsollier → ecommerce

nmarsollier / ecommerce

Licence: GPL-3.0 license
Arquitectura de Microservicios - 2018

Projects that are alternatives of or similar to ecommerce

blockchain-multichain
Application for proposals using blockchain with MultiChain.
Stars: ✭ 18 (-18.18%)
Mutual labels:  angular6
angular-youtube-player
Simple youtube player created with angular and typescript. See demo.
Stars: ✭ 35 (+59.09%)
Mutual labels:  angular6
go-mq
Declare AMQP entities like queues, producers, and consumers in a declarative way. Can be used to work with RabbitMQ.
Stars: ✭ 76 (+245.45%)
Mutual labels:  rabbit
angular6-httpclient-example
Angular 6 HttpClient: Consume RESTful API Example
Stars: ✭ 38 (+72.73%)
Mutual labels:  angular6
angularx-qrcode-sample-app
Angular5/6/7/8/9/10+ sample apps with working implementations of angularx-qrcode
Stars: ✭ 15 (-31.82%)
Mutual labels:  angular6
Angular-Springboot
E- Commerce Application Built Integrating Angular and Spring Web Services
Stars: ✭ 58 (+163.64%)
Mutual labels:  angular6
ng-crm
A Simple Angular 6 CRM (CRUD Example)
Stars: ✭ 50 (+127.27%)
Mutual labels:  angular6
ngx-print
🖨️ A plug n' play Angular (2++) library to print your stuff
Stars: ✭ 124 (+463.64%)
Mutual labels:  angular6
Angular-Reactive-Demo-Shop
Angular Demo Shop
Stars: ✭ 79 (+259.09%)
Mutual labels:  angular6
spring-websocket-angular6
Example for using Spring Websocket and Angular with Stomp Messaging
Stars: ✭ 18 (-18.18%)
Mutual labels:  angular6
ngx-loading-mask
Angular 5+ simple loading-mask ui component.
Stars: ✭ 22 (+0%)
Mutual labels:  angular6
spring-boot-angular6-maven-project
Build and package spring boot and angular6 into a deployable war file
Stars: ✭ 74 (+236.36%)
Mutual labels:  angular6
ngx-log-monitor
NGX Log Monitor - Log Monitoring Component for Angular
Stars: ✭ 33 (+50%)
Mutual labels:  angular6
angular-tutorial
Angular Tutorial.《跟老卫学Angular》
Stars: ✭ 27 (+22.73%)
Mutual labels:  angular6
ng-toggle
Bootstrap-styled Angular Toggle Component
Stars: ✭ 14 (-36.36%)
Mutual labels:  angular6
ngx-cropper
An Angular image plugin, includes upload, cropper, save to server.
Stars: ✭ 14 (-36.36%)
Mutual labels:  angular6
NodeAngular
🚀 Full Stack Framework Béta : mean with last Angular and Node (Example)
Stars: ✭ 13 (-40.91%)
Mutual labels:  angular6
angular-pwa
Angular 6 PWA Example
Stars: ✭ 17 (-22.73%)
Mutual labels:  angular6
ng-pdf-highlighter
PDF annotation with angular7
Stars: ✭ 15 (-31.82%)
Mutual labels:  angular6
feedback
An angular module provide a directive for feedback
Stars: ✭ 35 (+59.09%)
Mutual labels:  angular6

Arquitectura de Microservicios

Si querés saber mas sobre mí

Nestor Marsollier

Sobre este proyecto

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.

Este documento describe la configuración y uso de los siguientes repositorios :

Existen otras versiones desarrolladas en otros lenguajes que definen los mismos microservicios con diversos paradigmas y patrones de desarrollo, aunque pueden estar desmantenidos, podrían ser funcionales :

Cliente Demo

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 :

Mas información de arquitectura

Arquitectura

Guía de Instalación General

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.

Entorno de Desarrollo

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.

Si lo que se desea es utiliza java, IntelliJ es una muy buena opción.

Algunos plugins interesantes, depende del lenguaje que usemos :

  • Docker by Microsoft
  • ES7 React/Redux/GraphQL React-Native snippets by dsznajder
  • ESLint by Dirk Baeumer
  • Go by Microsoft
  • Java Extension Pack by Microsoft
  • JavaScript and Typescript Nightly by Microsoft
  • Live Server by Titwick Day
  • Markdown All in One by Yu Zhang
  • Python by Microsoft
  • React Native Tools by Microsoft
  • Simple React Snippets by Burke Holland
  • Typescript React code snippets by infeng
  • Visual Studio IntelliCode by Microsoft
  • TSLint by egamma
  • JavasScript (ES6) code snippets by charlampos karypidis

Dependencias globales

Docker y Docker Compose

Simplifica la configuración de todos los servidores. Hay que seguir las guías de instalación y dejar las ultimas versiones configuradas correctamente.

MongoDB

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.

Podemos usar la version docker, o instalarlo localmente.

Sugiero instalar Mongodb Compass para poder gestionar la base de datos en forma visual mongodb.com

Redis

Redis es una segunda opción de almacenamiento de datos. El microservicio de imágenes hace uso de Redis.

Podemos usar la version docker, o instalarlo localmente.

Recomiendo instalar FastoRedis para acceder a la base de datos fastoredis.com

RabbitMQ

La comunicación asíncrona entre microservicios se lleva a cabo a través de la mensajería de Rabbit.

Podemos usar la versión docker, o instalarlo localmente.

Tiene un cliente WEB http://localhost:15672/

Lenguajes de programación

Para desarrollar, es necesario tener instalado el lenguaje que corresponda localmente. Si bien con docker no necesitamos todos los lenguajes de programación, si es necesario que en los lenguajes que vamos a desarrollar microservicios esté instalado. Para una mejor comprensión de la cátedra recomiendo instalarlos a todos. Cada proyecto tiene sus propios tutoriales de instalación y configuración para desarrollo.

Instalación rápida usando Docker Compose

Existe una configuración completa de todos los microservicios con builds de producción usando docker-compose.

Esta instalación y ejecución es muy sencilla, solo pretende permitir la ejecución de todos los contenedores para probarlos.

Sin embargo nos vamos a basar en esta configuración para desarrollar, por lo que es necesario instalarlos.

Una vez levantados los servicios se puede acceder al cliente usando localhost:4200

Existen varios yml de compose, hay que bajar y usar el que corresponda desde el repositorio.

Las opciones son las siguientes:

  • docker-compose.yml : Para windows y mac, baja y compila todo desde github
  • docker-compose-linux.yml : Para linux, baja y compila todo desde github
  • docker-compose-prod.yml : Para windows y mac, baja una imagen pre-compilada de docker hub
  • docker-compose-prod-linux.yml : Para linux, baja una imagen pre-compilada de docker hub

Levantamos los contenedores usando el comando :

docker-compose -f docker-XXX.yml up -d

Notas sobre Linux

En linux es necesario agregar una referencia al host host.docker.internal. La ip default es 172.17.0.1, y corresponde a la ip de la interfaz de red docker0. Si no funciona asi como está el archivo, hay que ver que ip tiene esa interfaz y cambiar el archivo.

Configuraciones de desarrollo con docker

Cuando queramos desarrollar en forma mas especifica con un proyecto en particular, necesitaremos crear las imágenes fuera del contexto de docker-compose, y bajar ciertos contenedores de compose para levantar otros contenedores docker alternativos.

O simplemente, bajar el contenedor del proyecto y ejecutar en el host local, esta configuración esta preparada para que lo podamos hacer.

Cada proyecto proporciona información sobre como hacer build y run de los contenedores específicos de desarrollo.

Instalación mas detallada usando solo Docker

No es necesario con compose, pero si queremos ponernos a probar, hay un instructivo :

Contenedores Docker

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].