Giter Club home page Giter Club logo

prueba-tecnica-t.evolvers's Introduction

Prueba Técnica T-Evolvers por Carlos Alberto González A.

Introducción

En este repositorio, se encuentra lo correspondiente a la prueba técnica requeridad para la empresa T-Evolvers, que consta de la simulación de un aparato electrónico (radar de velocidad) junto a otro atributo llamado timestamp.

· Diagrama de Diseño de Arquitectura/Comunicación

· ¿Cómo ejecutar el programa?

Primer paso:

Disponer de un endpoint de redis (recomendable redis cloud console) y configurarlo en la ruta prueba-tecnica-t.evolvers/simulador/conexion_redis.py

Segundo paso:

Ejecutar el archivo microservicio_producer.py ubicado en la ruta prueba-tecnica-t.evolvers/simulador/microservicio_producer.py, antes de la Entrada de Datos en consola, abrir en paralelo 2 programas .py más (2 consolas más).

La primera está en la ruta prueba-tecnica-t.evolvers/consumer_fastapi/microservicio_consumer_almacenamiento.py

La segunda en prueba-tecnica-t.evolvers/consumer_notificacion/microservicio_consumer_notificacion.py

Tercer paso:

Ingreso de datos, en microservicio_consumer_almacenamiento.py visualizarás como los datos generados aleatoriamente se envían a través de eventos (Redis Streams) a este microservicio para posteriormente guardarlos en un esquema de la base no-sql Redis (se evidencia por consola).

En microservicio_consumer_notificacion.py llegará como evento de Redis Streams la métrica que supere el umbral de 50km/h, notificando este por consola. (Si desea usar el CRUD, recomendable Postman o cualquier herramienta para testear API, usando localhost y los métodos)

Cuarto paso:

Todo lo generado por sesión de ejecución del microservicio_producer.py, se guardará en un CSV, para su posterior análisis.

· Reto técnico abordado

PRUEBA TÉCNICA DESARROLLADOR PYTHON

Objetivo: Validar los conocimientos técnicos requeridos para el buen desempeño en el stack requerido para el mismo.

  • Conocimientos a evaluar: Python FastApi Redis Redis streams Diseño de arquitectura backend.

La prueba se dividirá en 2 partes:

  1. Simulador y comunicación entre microservicios. a. Simular un dispositivo eléctrico que reporte medidas de manera aleatoria en un rango determinado. Ejemplo: (10 - 100), datos a reportar: ■ ID Dispositivo ■ Métrica 1 medida (kwh, temp, etc), Ejemplo: 55 kwh ■ Timestamp Criterios punto a: El simulador deberá estar desarrollado en python Utilizar loop de asyncio para que el simulador siempre este reportando métricas. Utilizar redis streams para producir un evento cada vez que llegue una métrica Nota: Este servicio tendrá rol de Producer. b. Crear un microservicio en fastapi o django que contenga un CRUD el cual permita administrar los datos enviados por el medidor. c. Crear un microservicio con python que escuche los eventos reportados por el simulador y llame al microservicio de fastapi o django para almacenar las métricas. Nota: Este servicio tendrá rol de Consumer, tener en cuenta que cada evento consumido se deberá quitar de la lista del consumidor. d. Crear un microservicio conectado al mismo stream de eventos pero que reaccione de una forma diferente, en este caso se deberá simular un alerta o notificación en caso tal de que la medida reportada supere un umbral de 50.
  2. Análisis a. Recolección de datos de la tabla que almacena los eventos guardados por el microservicio y generar un CSV b. Analizar los datos del CSV y mostrar en una gráfica el número que más veces se repite del rango reportado y cuantos datos se han reportado en 1 minutos. (Se pueden agregar más comparaciones para hacer el ejercicio más completo). Resultado esperado:

prueba-tecnica-t.evolvers's People

Contributors

caliwa 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.