Giter VIP home page Giter VIP logo

aforo255.ms.test's Introduction

Proyecto de Integración de Microservicios

Ejecución de la solución

Debe configurar la inicializacion de todas las soluciones

Ejecución de la solución

Ejecución de la solución

Ejercicio de Integración de Microservicios

Ejercicio a realizar

Construir una solucion con el nombre AFORO255.MS.TEST y crear dentro de esta los siguientes proyectos:

  • AFORO255.MS.TEST.Security: Responsable del token de acceso
  • AFORO255.MS.TEST.Invoice: Responsable de listar las facturas de clientes
  • AFORO255.MS.TEST.Pay: Responsable de pagar una factura
  • AFORO255.MS.TEST.Transaction: Responsable de listar las transacciones de una factura
  • AFORO255.MS.TEST.Gateway: Responsable de enmascarar las rutas del proyecto

Crear las siguientes bases de datos:

  • SQL SERVER: Para seguridad.
  • POSTGRES: Para las facturas
  • MYSQL: Para pagos
  • MONGO: Para transacciones

Las bases de datos tendrán estos modelos

SQL SERVER

  • BD: db_security
  • CAMPOS:
    • id_user int primary key
    • username varchar
    • password varchar

POSTGRES

  • BD: db_invoice
  • CAMPOS:
    • id_invoice int primary key
    • amount decimal
    • state int

MYSQL

  • BD: db_operation
  • CAMPOS:
    • id_operation int primary key
    • id_invoice int
    • amount decimal
    • date DateTime

MONGO (NO REQUIERE SCRIPT)

  • BD: db_transaction
  • CAMPOS:
    • id ObjectId
    • id_transaccion int
    • id_invoice int
    • amount decimal
    • date DateTime

Crear las siguientes componentes:

  • Una red de Docker llamada: aforo255-test
  • Un servicio de configuración centralizada llamado: config-service-test
  • Un servicio de colas llamado: bus-service-test
  • Un servicio de registro y descubrimiento llamado: consul-service-test
  • Un servicio de balanceo llamado: balancer-service-test
  • El microservicio de seguridad dockerizado se llamará: app-security
  • El microservicio de invoces dockerizado se llamará: app-invoices
  • El microservicio de pagos dockerizado se llamará: app-pay
  • El microservicio de transacciones dockerizado se llamará: app-transaction
  • El Gateway dockerizado se llamará: app-gateway

Todos los servicios deben correr sobre la red aforo255-test

Flujo del proyecto

  • El microservicio de seguridad debe proporcionar un token de acceso para los microservicios de invoices, pay y transacciones.
  • El Gateway debe enmascarar las rutas de los servicios y debe sobrecargar la seguridad, además de enviar la solicitud al balanceador de carga para que este determine a que contenedor enviara la información, según su carga y disponibilidad. Todas las rutas deben trabajarse con el balanceador.
  • El microservicio de invoices, debe listar las facturas de clientes y además debe consumir una cola para cambiar el estado de la factura cuando esta se paga a través del microservicio de pago.
  • El microservicio de pago debe registrar el pago en su respectiva bd y además debe dejar un mensaje en una cola para actualizar la factura en el microservicio de facturas y además debe dejar un mensaje en una cola para registrar el movimiento en el microservicio de transacciones.
  • El microservicio de transacciones debe listar las transacciones de una factura, además debe consumir una cola para obtener las transacciones de pago del microservicio de pago.
  • Todos los microservicios deben consumir la cadena de conexión desde el servicio de configuración centralizada.

Instrucciones

  1. Correr los Contenedores de Bases de Datos
docker-compose -f ./docker-compose-databases.yml up -d
  1. Correr los Contenedores de los servicios
docker-compose -f ./docker-compose-services.yml up -d
  1. Ingresar a RabbitMQ http://localhost:15672/
username: Mellizo55
password: Mellizo55
  1. Api Gateway
docker-compose -f docker-compose-gateway.yml up -d
  1. Ingresar a: http://localhost:8001/consumers/login_fermelli_issuer/jwt/ para obtener el issuer para autenticar al usuario.
{
  "next": null,
  "data": [
    {
      "key": "ma2kAa5K5Rrf2YWiaiYNvK2yrRjN4Hb9", // este es el issuer
      "algorithm": "HS256",
      "secret": "Mellizo55Mellizo55",
      "id": "8d021185-fc35-4230-960b-505fb15f0610",
      "tags": null,
      "consumer": {
      "id": "b64ddbca-4ff6-599c-bb46-cf1059e1196b"
    },
    "created_at": 1692088440,
    "rsa_public_key": null
  }
]
}

y se lo agrega en el archivo appsettings.local de Security

{
  // ...
  "jwt": {
    "enabled": true,
    "issuer": "ma2kAa5K5Rrf2YWiaiYNvK2yrRjN4Hb9",
    "audience": "web",
    "key": "Mellizo55Mellizo55",
    "expiration": "300"
  },
  // ...
}

al realizar los cambios se debe reiniciar el contenedor de gateway

docker-compose -f docker-compose-gateway.yml down
docker-compose -f docker-compose-gateway.yml up -d
  1. Ingresar a: http://localhost:8001/consumers/anonymous_users

  2. Para ingresar a Consul: http://localhost:8500/

  3. Las instancias de aplicaciones en http://localhost:9998/routes

  4. Y para ver la configuraciones desentralizadas: http://localhost:8848/nacos

ingresar con:

username: nacos
password: nacos
  • crear el namespace: fermelli
  • y establecer las configuraciones en ese namespace con el DATA ID: LOCAL

aforo255.ms.test's People

Contributors

fermelli avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.