Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5
Un poco de historia
Equipo de
desarrollo
6
Arquitecturas monolíticas
• Complejidad de código
completo
• Escalado ineficiente
• Menos especialización
7
Arquitecturas SOA
demasiado código
servicios
8
Arquitecturas de microservicios
• Desarrollo eficiente
• Escalado elástico
9
Retos de una arquitectura de microservicios
Consumidores
PaaS
• Gestionar el aumento del tráfico interno
Herramient
a de CI
Control de
versiones
Almacenamiento
10
Herramientas
Consumidores
Servicio de enrutamiento
Servicio de
descubrimiento
Docker registry Microservicio Microservicio
Devops 3 4
Servicios de logging /
monitorización
Servicio de configuración
11
Herramientas
Encargado del
pipeline de Gestión de imágenes Consumidores
Continuous Delivery docker de los
diferentes
microservicios
Servicio de enrutamiento
Servicio de
descubrimiento
Docker registry Microservicio Microservicio
Devops 3 4
Servicios de logging /
monitorización
Servicio de configuración
Gestión del código
fuente de los
microservicios
Motor de base de
datos
12
Ejemplo de una arquitectura de microservicios
Consumidor 1 Consumidor 2 Consumidor 3 Consumidor 4 Consumidor 5 Consumidor 6
13
Microservicios y APIs
• Como hemos visto, la manera de comunicarse entre microservicios son los protocolos de red, especialmente el
protocolo http, definiendo APIs REST como interfaz de comunicación. Estas APIs proporcionan:
– Organizan sistemas internos para dar apoyo a nuevos proyectos innovadores de una manera uniforme.
Servicio
14
JSON como formato de intercambio
• JSON son las siglas de JavaScript Object Notation, y fue originalmente pensado para llevar la notación nativa
– Flexibilidad
– Ligereza
15
Proyecciones y expansiones
Proyecciones Expansiones
16
Transaccionalidad en microservicios
La división de los datos en diferentes repositorios (base de datos, colas de mensajes, etc) y su accesibilidad a través
de servicios que los envuelven supone perder la transaccionalidad nativa a nivel de base de datos:
Servicio 1
válida.
Deshacer Servicio 2
17
TECNOLOGÍAS MICROSERVICIOS
Cloud, IaaS y PaaS
• Monitorización de servicios
• Logs centralizados
• Trazabilidad de servicios
automáticas
19
Docker containers
• Proveen entornos aislados gestionados por
procesos (hypervisor) con el mínimo kernel de
sistema operativo en cada contenedor
20
Broker de mensajería
•
- Dependencia entre servicios
Conecta microservicios - Gestión de errores y
reintentos en el servicio
llamante
Microservicio 1 Microservicio 2
Almacenamiento
21
MICROSERVICIOS Y MONGODB
Bases de datos NoSQL
Lenguaje de búsqueda expresivo
Flexibilidad
Índices secundarios
• Esquema flexible
• Datos no estructurados
• Sin relaciones complejas
Rendimiento
Integración con herramientas • Usuarios globales
de gestión • Muy alta disponibilidad
23
MongoDB Nexus Architecture
The only NoSQL Database that combines best of RDBMS + NoSQL
Rendimiento
Integración con herramientas • Usuarios globales
24 de gestión • Muy alta disponibilidad
Modelo de datos flexible
• El esquema flexible de MongoDB permite que cada
Consumidor A Consumidor B consumidor del servicio pueda tener una percepción
propia de un modelo común, sin afectar esto a la
morfología del dato en MongoDB
Microservicio 1
25
Redundancia
Debido a la naturaleza distribuida de los microservicios, estos tienen que ser diseñados teniendo en cuenta la
redundancia del dato. MongoDB encaja perfectamente en este requerimiento, ya que proporciona de base redundancia
a través de sus replica set.
Es muy importante destacar MongoDB permite que la política de redundancia puede ser variable por petición y por
criticidad del dato
Replica set
26
MongoDB and Microservices – Flexibility
Los microservicios no se pueden interrumpir para hacer cambios en su esquema de datos. MongoDB
puede adaptarse a cambios en el esquema de datos sin ninguna pérdida de servicio. Su arquitectura
independiente de la plataforma proporciona facilidad de portabilidad.
Application Layer
Microservices
Layer
Microservices
Layer
La escalabilidad y alta disponibilidad nativas se
2
dan la mano con el alto rendimiento necesario
en una plataforma de microservicios.
Database
Layer
MongoDB and Microservices – Security
MongoDB proporciona funcionalidad de autenticación, control de acceso, auditoría y cifrado para
proteger los despliegues de MongoDB. Las vistas read-only permiten exponer el modelo de datos de
forma polimórfica y realizar ofuscación.
Application Layer
Microservices
Layer
Nuestra receta:
Ecosistema Docker
Orquestación
Coordina los contenedores de MongoDB para realizar un
despliegue según las mejores prácticas.
Control de Recursos
Dimensionado de cada instancia (y cada clúster) para evitar
contención de recursos
Porqué Swarm?
Evaluación de plataformas a
gran escala
¿Rendimiento?
https://www.docker.com/survey-2016
¿Capacidad operativa?
5x más rápido 7x más rápido que
¿Facilidad de soporte? que Kubernetes Kubernetes en listar
para lanzar un los contenedores
nuevo contenedor activos
https://medium.com/on-docker/evaluating-container-platforms-at-scale-
5e7b44d93f2c#.k2fxds8c2
Redes multi host de Swarm
magic
swarm-node-1 swarm-node-3
magic magic
swarm-node-2
Despliegue en alta disponibilidad
APP
Pros:
• Se despliega como un todo
API Access Layer
• Se migra fácilmente entre
entornos
Microservice
Cons: s
• El storage debe ser Layer
persistente Database
• La comunicación intra nodo es Application
más compleja
• Más difícil de debugear
Storage
Arquitectura de referencia
Application Layer
Pros:
• Permite a la base de datos
API Access Layer
manejear su propia HA y
escalado
• Permite la separación entre
Microservice
las capas lógicas y de datos s
Layer
(Seguridad)
• Más fácil de debuguear
Cons:
• La base de datos se
Database Cluster
provisiona de forma
independiente.
MongoDB Atlas
Base de datos como servicio de MongoDB
Ya lo
Completamente
hacemos Sin trucos
seguro
nosotros
Gracias.
ruben@mongodb.com
@mongodb
www.mongodb.com