GithubHelp home page GithubHelp logo

alexandersanchezjr / filesystem-microservices Goto Github PK

View Code? Open in Web Editor NEW

This project forked from camilogonzalez7424/sd-exam1

0.0 0.0 0.0 258 KB

File manager with Angular UI frontend, ExpressJS backend, Consul service discovery and Samba server with App Gateway

Shell 1.10% JavaScript 36.25% TypeScript 40.54% CSS 0.72% HTML 11.74% Dockerfile 8.58% EJS 1.07%

filesystem-microservices's Introduction

sd-exam1

Microservicios

Requisitos previos:

  • Docker instalado en tu máquina virtual (o WSL).
  • Docker Desktop (si tienes WSL).
  • Visual Studio Code.

Descripción de requerimientos

Deberá desplegar una plataforma que cumpla con los siguientes requerimientos:

  1. Debe tener un repositorio de Github que corresponda a un fork del repositorio sd-exam1.

  2. El repositorio debe tener varios Dockerfile que permita el despliegue de los contenedores especificados en el diagrama.

  3. El usuario desde la consola o navegador web realiza peticiones al API Gateway.

  4. El API GATEWAY redireccionará las peticiones hacia el LOAD BALANCER.

  5. El Load Balancer deberá redireccionar las peticiones entrantes hacia el servicio de Registry and Discovery.

  6. El servicio de Registry and Discovery debera ser capaz de resolver la comunicación hacia el frontend.

  7. El frontend recibirá imágenes/videos/archivos o cualquier cosa que desee guardar la persona en un servicio de almacenamiento centralizado.

  8. El backend recibe el archivo desde el frontend y almacena el archivo en el servico de almacenamiento centralizado.

  9. El frontend debería de mostrar a lo mínimo una lista de archivos ya cargados actualmente.

  10. El sistema de almacenamiento centralizado deberá ser persistente con los datos, es decir, en caso de fallo del servidor de almacenamiento centralizado, este podrá recuperar información que existía previamente.

  11. Emplee tecnologías para frontend y backend diferentes a las empleadas en clase.

  12. El contexto de la app es LIBRE, es decir, el grupo le puede dar el enfoque que desea (libros, juegos, inventario, musica, videos, etc). pero NO debe haber un mismo lenguaje backend entre dos grupos.

  13. Endpoint /health con información del sistema.

Bonus

  1. Script para lanzar todo el ambiente desde un solo comando. (Docker compose es valido)
  2. Se puede hacer update y delete de un archivo, tener db.

Solución

Estrategía de branching

master: Es la rama donde cada commit refleja un estado listo para uso por parte del cliente, todas las funcionalidades han pasado las pruebas y han sido revisadas por todos los administradores del proyecto.

develop: Es la rama principal de trabajo, cualquier cambio, adelanto, mejora o arreglo pasa primero por aquí antes de llegar a Master. Aquí están los últimos avances en el desarrollo, todas las funcionalidades listas, etc.

Como correr la app

Para ejecutar la aplicación, simplemente es necesario ejecutar el archivo Docker Compose proporcionado. Este archivo contiene la configuración necesaria para iniciar todos los servicios y componentes requeridos para que la aplicación funcione correctamente. Al ejecutar Docker Compose, se encargará de crear y configurar los contenedores Docker según las especificaciones definidas en el archivo YAML. Una vez que los contenedores estén en funcionamiento, la aplicación estará lista para ser utilizada.

docker-compose up

Problemas encontrados

  • El usuario en Samba no contaba con los permisos necesarios para modificar cualquier elemento dentro de la carpeta donde estaba almacenado en Samba. Como consecuencia, al intentar guardar algo dentro de Samba, el sistema rechazaba la solicitud.

  • El inconveniente con haproxy se debía a que no podía levantarse o crearse correctamente debido a un problema con el archivo de configuración, el cual no especificaba adecuadamente el final de línea. Esto resultaba en un mal funcionamiento del servicio, impidiendo su correcta inicialización.

  • Otro desafío fue familiarizarse con la base de datos CouchDB. Aprender sus particularidades y cómo interactuar con ella supuso un proceso de aprendizaje adicional para el equipo.

A mejorar

Una mejora importante sería la implementación de un servicio DNS para eliminar la necesidad de consultar todo a través de localhost y aprovechar los nombres de los servicios disponibles. Además, si contáramos con más tiempo, dedicaríamos esfuerzos al frontend, especialmente para mejorar su apariencia gráfica, la paleta de colores y la experiencia de navegación del usuario.

Para llevar nuestro software a producción de manera efectiva, es fundamental asegurarnos de adquirir los nombres de dominio adecuados para garantizar una presencia sólida en línea. Además, debemos invertir en mejorar la seguridad cibernética del sistema, implementando medidas robustas para proteger los datos y la infraestructura de posibles amenazas. Esto incluye la implementación de prácticas de seguridad, como la autenticación de usuarios, el cifrado de datos y la monitorización constante del sistema para detectar y responder rápidamente a posibles intrusiones o vulnerabilidades.

Construido con 🛠

  • Docker - Docker is an open platform for developing, shipping, and running applications.

Versionamiento 📌

Demostración 💻🕹

Por

Documentación

forthebadge forthebadge

filesystem-microservices's People

Contributors

alexandersanchezjr avatar camilogonzalez7424 avatar icesi-ops 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.