Commit 431c18e4 authored by Noel Alonso's avatar Noel Alonso
Browse files

Merge branch 'dev' of gitlab.com:redmic-project/info into dev

parents 5c60a871 f9b4fffb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ REDMIC es proyecto desarrollado por el [Observatorio Ambiental Granadilla](http:
|------|------------------------------|-------------------------|
| ![carlos](images/carlos.png){: .rounded} | **Carlos A. González Carballo** | Desarrollador |
| ![nacho](images/nacho.jpg){: .rounded} | **Ignacio Lorenzo García** | Jefe de sistemas |
| ![jose_andres](images/jose_andres.jpg){: .rounded} | **José Andrés Sevilla Hernández** | GIS |
| ![marta](images/marta.jpg){: .rounded} | **Marta González Carballo** | Curator de datos |
| ![ninoska](images/ninoska.jpg){: .rounded} | **Ninoska Adern Febles** | Operadora de datos |
| ![noel](images/noel.png){: .rounded} | **Noel Alonso Expósito** | Desarrollador |
+138 KiB
Loading image diff...
+1 −1
Original line number Diff line number Diff line
@@ -112,7 +112,7 @@ Para intercambiar datos entre Kafka y otro sistema, se crean instancias de Kafka
## ES + CQRS + Saga + Kafka para crear microservicios
Al conjunto de componentes que implementan las funcionalidades necesarias para poder integrar nuevos datos en REDMIC, se le llama unidad funcional. Estas unidades funcionales se implementan como microservicios aplicando los patrones y tecnologías vistos anteriormente.

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

Un paso importante para su diseño, es elegir qué datos la van a integrar. Por ejemplo, si se trata de datos geolocalizados, la unidad funcional estará compuesta por el dato principal, más los metadatos asociados a este, que no sean compartidos con otros datos y que por sí mismo aporten valor al repositorio.

+9 −5
Original line number Diff line number Diff line
@@ -47,15 +47,17 @@ Todas las herramientas que se exponen a continuación son instaladas como conten
Colecta métricas del servicio de docker

### PushGateway
Algunos contenedores no están continuamente en ejecución y a menudo solo se encargan de realizar una acción momentáneamente como una copia de seguridad de una base de datos, realizar una tarea de mantenimiento, etc. Este tipo funcionamiento hace que Prometheus no pueda recopilar datos de ellos, así que para resolver este problema, se utiliza [PushGateway](https://github.com/prometheus/pushgateway){: target="_blank"}.
Algunos contenedores no están continuamente en ejecución y a menudo solo se encargan de realizar una acción momentánea, como una copia de seguridad de una base de datos, realizar una tarea de mantenimiento, etc. Este tipo de funcionamiento hace que Prometheus no pueda recopilar datos de ellos, así que para resolver este problema, se utiliza [PushGateway](https://github.com/prometheus/pushgateway){: target="_blank"}.

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

Cuando un contenedor de este tipo necesita exponer una métrica, realiza un PUT al servicio de PushGateway con la métrica, este la almacena para que Prometheus la pueda leer. La métrica no será actualizada hasta que el contenedor no vuelva a realizar un PUT con nuevos datos.
Cuando un contenedor de este tipo necesita exponer una métrica, realiza un PUT al servicio de PushGateway con las métricas, éste la almacena y la expone a Prometheus para que la pueda leer. Las métricas no serán actualizadas hasta que el contenedor no vuelva a realizar un PUT con nuevos datos.


### Granafa
[Grafana](https://grafana.com){: target="_blank"} permite crear dashboards donde comprobar la salud, rendimiento de los diferentes servicios.
[Grafana](https://grafana.com){: target="_blank"} permite analizar y visualizar las diferentes métricas recopiladas por Prometheus de una forma elegante en diferentes tipos de dashboards.

![grafana.png](images/grafana.png){: .shadow}

---

@@ -68,7 +70,7 @@ Una parte importante del sistema son las alertas, estas permitirán detectar y a
Además de enviar notificaciones, es posible enviar acciones a otros servicios que soporten webhooks, esto por ejemplo permite escalar un servicio en caso de tener una alta demanda o cuando esta demanda se reduzca reducir el número de instancias del servicio, para ajustar la demanda al número de instancias.

### Unsee
[Unsee](https://github.com/cloudflare/unsee){: target="_blank"} permite ver de forma gráfica las alertas que existen actualmente.
[Unsee](https://github.com/cloudflare/unsee){: target="_blank"} es una pequeña herramienta que permite ver de forma gráfica las alertas que existen actualmente.


## Chequeo de salud
@@ -81,4 +83,6 @@ Además de los contenedores, todos los servidores cuentan con un servicio que co
---

## Logs
Los logs de una aplicación son una herramienta importante para descubrir errores, es por ello que un sistema como REDMIC compuesto por múltiples servicios sea necesario centralizar en un sitio común todos ellos. Para este acometido se ha usado CloudWatch, es una herramienta de Amazon para la gestión de logs centralizada.
 No newline at end of file
Los logs de una aplicación son una herramienta importante para descubrir errores, es por ello que un sistema como REDMIC compuesto por múltiples servicios sea necesario centralizar en un sitio común todos ellos.

Aún no se ha decidido la herramienta.
 No newline at end of file
+6 −4
Original line number Diff line number Diff line
@@ -2,9 +2,7 @@


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

Todos los servidores pertenecen a una misma red (VPC), cada zona cuenta con una subred además de una exclusiva para el manager, es decir, en total existen 4 subredes. Esto hace que si en un futuro aumenta el número de servidores, los nuevos equipos se unirán a las subredes existentes, siempre que no existan restricciones.
@@ -32,8 +30,12 @@ Todas los servicios que componen REDMIC trabajan dentro de un contenedor, esto p
* Analizar las cargas de los servidores, para evitar tener servidores con cargas desbalanceadas.
* Dependencias entre servicios, si hay dependencia entre servicios, y siempre que sea posible se despliegan en el mismo servidor para reducir la latencia de transferencia de datos. Un ejemplo puede ser el contenedor encargado de realizar el backup de la base de datos, sería conveniente que se ejecute en la misma máquina donde se encuentra la base de datos, de esta forma se evita tráfico de red.

Para los contenedores con necesidades de almacenamiento, se utiliza el plugin CloudStor, el cual permite dependiendo del tipo de requisitos montar discos "EBS" o "EFS" a los servidores de forma transparente, utilizando los ficheros de configuración usados para definir los requisitos de cada servicio.
Para los contenedores con necesidades de persistencia de datos, se utilizan volúmenes, para este acometido se ha instalado el plugin CloudStor, ya que permite de forma transparente utilizar diferentes tipos de discos:

* *EBS* discos que solo pueden ser usados en una máquina.
* *EFS* discos que puede ser compartidos por diferentes máquinas.

Ambas configuraciones son pasadas desde los ficheros de configuración de despliegue de cada servicio.



Loading