Commit 35771c91 authored by Ignacio's avatar Ignacio
Browse files

Desarrolla index y sistema

parent d1018368
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
# Microservicios
## ¿Qué es?
Microservicios es una arquitectura de desarrollo de software donde las aplicaciones se dividen en componentes más pequeños e independientes entre sí. A diferencia del enfoque tradicional "monolítico", donde toda la aplicación es implementada en un único componente, los microservicios están separados y funcionan conjuntamente para llevar a cabo las mismas tareas.
## ¿Qué son?
Microservicios es una arquitectura de desarrollo de software donde las aplicaciones se dividen en servicios más pequeños, que se ejecutan de forma autónoma y comunican entre sí. A diferencia del enfoque tradicional "monolítico", donde toda la aplicación es implementada en un único componente, los microservicios están separados y funcionan conjuntamente para llevar a cabo las mismas tareas.

![mono_vs_micro_architecture](/images/mono_vs_micro.png){: .center}

### Beneficios
* Agilizan la implementación y actualización de los componentes.
@@ -21,7 +23,7 @@ Microservicios es una arquitectura de desarrollo de software donde las aplicacio
* Necesidad de usar descubrimiento de servicios, ya sea centralizado o integrado. De esta manera se puede acceder a proveedores de servicio con ubicaciones de red dinámicas.

### ¿Por qué usar microservicios?
REDMIC es un repositorio que integra una gran cantidad de datos provenientes de diferentess orígenes, y muchas veces no tienen una relación directa o dependencia. Implementar todas estas funcionalidades en una aplicación monolítica, convertiría al repositorio en una plataforma pesada y difícil de mantener por lo que el uso de una arquitectura de microservicios es prácticamente una obligación.
REDMIC es un repositorio que integra una gran cantidad de datos provenientes de diferentes orígenes, y muchas veces no tienen una relación directa o dependencia. Implementar todas estas funcionalidades en una aplicación monolítica, convertiría al repositorio en una plataforma pesada y difícil de mantener por lo que el uso de una arquitectura de microservicios es prácticamente una obligación.

Sin embargo, este enfoque requiere tener en cuenta multitud de factores, como la comunicación asíncrona entre microservicios, control de errores más exhaustivo, etc. Para solventar esto se hace uso de una serie de patrones de diseño que se comentan en los siguientes apartados.

+14 −3
Original line number Diff line number Diff line
# Sistema
En este capítulo se explica la arquitectura general de REDMIC, es decir, cómo se ha organizado toda la aplicación software, hardware y seguridad para dar respuesta al objetivo principal de «facilitar el máximo uso posible de un dato marino», con todo lo que ello implica (tipos de usuarios, estrategias de desarrollo, funcionalidades, productos, etc.). Para ponerlo en contexto, se adjunta un diagrama muy simple del flujo de datos con sus entradas y sus salidas.


## Estructura
A finales de 2018, se cuentan con 4 servidores.
La estructura actual Actualmente se cuenta con 4 servidores
Se utiliza docker swarm
![servers_infrastructure](images/servers_infrastructure.png){: .center}

Todos los servidores pertenecen a una misma red (VPC), pero cada zona cuenta con una subred más una exclusiva para el manager, es decir, existen 4 subredes. Esto hace que si en un futuro aumenta el número de servidores, los nuevos equipos se uniran a las subredes existentes.

El manager es el encargado de exponer de exponer los diferentes servicios a internet, es por eso que es el único servidor accesible desde el exterior, siempre controlando que puertos se exponen a través de un firewall.

Los workers son servidores de ejecutar los servicios, están distribuidos entre las 3 zonas que provee Amazon en la región "eu-west-1", esta distribución evita que la aplicación deje de responder si alguna de las zonas cae.

Esta distribución de servidores se ha optado como esquema base para desplegar una docker swarm.

### Despliegue
Se utiliza una plantilla de CloudFormation para el despliegue de la infrastructura
Para el aprovisionamiento de todas estas máquinas, con sus respectivos requisitos se ha utilizado como base la plantilla de CloudFormation que proporciona [Docker](https://docs.docker.com/docker-for-aws/){: target="_blank"}.

Se utiliza una plantilla de CloudFormation para el despliegue de la infraestructura.

Se definen tipos de máquinas, tamaño de los discos, VPC, ISO, 4 VPC
Se definen tipos de máquinas, tamaño de los discos, VPC, imagen ISO, 4 VPC
Los servidores workers no son accesibles desde fuera de VPC, el único servidor accesible es el manager, que es encargado de repartir la carga entre los workers.
+35.8 KiB
Loading image diff...
+51.8 KiB
Loading image diff...
Loading