3. Objetivos
• Capacidad para desplegar y
centralizar múltiples aplicaciones.
• Alta disponibilidad (redundancia).
• Escalabilidad.
• Facilidad de Administración.
• Modelo de Programación Simple.
4. Apache Mesos
• Mesos introduce una capa de
abstracción que permite utilizar los
recursos de un datacenter como si
fuera un único servidor,
permitiendo una utilización más
eficiente de los recursos
computacionales.
6. Docker
• Cada aplicación desplegada en el
gestor es empaquetada en un
contenedor usando Docker.
• Luego es desplegada a uno o
varios nodos usando Mesos.
7. Docker
• Portabilidad: Contenedores pueden correr en
cualquier Linux, laptop, servidor local o en la
nube.
• Consistencia: Las imágenes pueden reusarse
durante todo el ciclo de vida de una aplicación.
• Los ejecutables son los mismos para todos los
entornos (desarrollo, integración, producción)
minimizándose los problemas por diferencias.
8. Docker
• Independencia: Usa características
de aislamiento de recursos del
kernel Linux, cada contenedor está
aislado de los demás.
• Fallas en una aplicación no
comprometen a todo el servidor.
9. Docker
• Performance: A diferencia de otros
tipos de virtualización, los
contenedores comparten el mismo
Kernel Linux por lo que su
performance es cercana a un
servidor real.
10. Docker
• Modularidad: Cada servicio corre
en su propio contenedor,
ensamblándose aplicaciones
coordinando los servicios que
ofrecen los demás contenedores
mediante interfaces REST.
11. Docker
• Comunidad: Docker Hub el
repositorio oficial de imágenes
Docker contiene casi 100 imágenes
oficiales de diversas herramientas.
• Adicionalmente contiene miles de
imágenes no oficiales soportadas
por la comunidad.
13. Aprovisionamiento
• La instalación de los paquetes
necesarios para el funcionamiento
del Gestor se encuentra
automatizada mediante playbooks
de Ansible.
16. Aprovisionamiento
• Las tareas de configuración no están
completamente automatizadas con
Ansible.
• La guía de instalación tiene el detalle
de las tareas de configuración de
cada nodo.
• Se recomienda almacenar las
imágenes de nodos master y slaves.
18. Marathon
• Es el framework que permite desplegar
las aplicaciones en el cluster Mesos.
• Provee descubrimiento y monitoreo de
servicios, restricciones de recursos y un
GUI para ver los servicios instalados.
• Las aplicaciones son desplegadas desde
el GUI o usando un API REST que es el
procedimiento usado por el Gestor.
23. Marathon
• Marathon trata de mantener estable
el número de instancias indicado en
el descriptor volviendo a desplegar
automáticamente containers en caso
de falla.
24. Escalabilidad
• Escalabilidad Elástica:
Es posible modificar manualmente
los números de instancias de cada
aplicación para manejar picos de
carga.
• Considerar los constraints en el
descriptor para estrategias de
escalabilidad.
29. Seguimiento de Problemas
• Buscar el texto del error en Kibana
• Ubicar el servidor y el contenedor
donde ocurrió el percance.
• Filtrar los resultados por contenedor y
hora de ocurrencia
• Si se complica la visualización acceder a
los logs completos desde la GUI Mesos.
36. Servicios de Infraestructura
• Registro e
identificación de
Aplicaciones
• Configuración
Centralizada
• Gateway
Se configura la ubicación de los servicios
mediante variables de entorno
40. Aplicaciones
• Las aplicaciones (o servicios) están
construidas usando el framework Spring
Boot.
• Este proyecto unifica los mejores
componentes del framework Spring y su
ecosistema, minimizando la
configuración necesaria y con
características listas para ser usadas en
producción.
42. Aplicaciones
• Cada servicio expone una interface REST/Json
para interactuar con el mundo exterior.
• Las representaciones Json son convertidas a
objetos de aplicación usando Jackson.
• Los objetos se persisten en la base de datos vía
Spring Data
• Cada servicio tiene su propio servidor Tomcat 8
embebido.
46. Integración
• El ambiente de Integración nos permite desplegar los
servicios como contenedores Docker para
asegurarnos que se ejecutan correctamente antes del
pase a producción.
• Las imágenes usadas en integración luego de la
validación funcional serán desplegadas a producción.
• El despliegue consiste en obtener la imagen generada
desde el repositorio y ejecutar la misma usando
comandos Docker.