Este documento introduce los conceptos de microservicios y contenedores. Explica las limitaciones de la arquitectura tradicional y cómo los microservicios y contenedores mejoran la escalabilidad, portabilidad e inmutabilidad. Describe cómo Docker es una plataforma que permite implementar microservicios usando contenedores, incluyendo imágenes, características técnicas y funcionalidad básica.
2. Indice
1. Microservicios - ¿Qué son los microservicios?
a. Arquitectura tradicional - Limitaciones
i. Escalabilidad
ii. Portabilidad
iii. Inmutabilidad
b. Nuevo modelo de arquitectura basada en contenedores - Microservicios
i. Contenedores y microservicios
ii. Mejoras con respecto a arquitectura tradicional
2. Implementación de microservicios usando contenedores - La plataforma
Docker
a. ¿Qué es Docker?
b. Imágenes
c. Características técnicas
d. Funcionalidad básica
6. Ciclo de vida del servicio web tradicional
DESARROLLO INTEGRACIÓN PRODUCCIÓN
- Time to Deploy (TTD) - Aprox. >10min.
- Complex to Scale (CTS) - Muchas dependencias.
- Hard Coupling (HC) - Cambiar una única funcionalidad.
- Difficult to Replicate (DTR) - Reproducir un entorno nuevo.
3 GRANDES LIMITACIONES
- ESCALABILIDAD
- PORTABILIDAD
- INMUTABILIDAD
7. Contenedores y microservicios (I)
El contenedor v1.0 incluye :
- Sistema Operativo Mínimo
- Aplicación (Funcionalidad 1)
- Dependencias (Bibliotecas y Servicios)
Creamos una versión del entorno de ejecución
de Funcionalidad 1 que es :
- Autocontenido
- Reproducible
- Aislado
- Inmutable
8. Contenedores y microservicios (II)
“Los microservicios son un conjunto de contenedores que funcionan de manera
coordinada para proveer un único servicio al usuario.”
MAPA DE
MICROSERVICIO
(PIEZAS)
DESPLIEGUE USANDO MICROSERVICIOS
9. Mejoras respecto a arquitectura tradicional (I)
DESARROLLO INTEGRACIÓN PRODUCCIÓN
Tenemos siempre los mismos componentes versionados desde el principio.
Utilizamos las mismas piezas pero en escalas diferentes.
10. Mejoras respecto a arquitectura tradicional (II)
DESARROLLO INTEGRACIÓN PRODUCCIÓN
- Time to Deploy (TTD) - Aprox. 10 sec (0 downtime con a/b testing y canary release).
- Easy to Scale (ETS) - La versión es idéntica y las dependencias están incluídas.
- Low Coupling (LC) - Cambiar una única funcionalidad es atómico y sencillo.
- Easy to Replicate (ETR) - Reproducir un entorno nuevo o replicarlo es igualmente sencillo.
TESTS OK
11. Mejoras respecto a arquitectura tradicional (III)
DESARROLLO INTEGRACIÓN PRODUCCIÓN
13. ¿Qué es Docker? (I)
Docker es una plataforma para desarrollar, desplegar y ejecutar aplicaciones
utilizando contenedores.
Esta plataforma incluye varios productos y herramientas :
- Docker Engine
- Docker Hub
- Docker Trusted Registry
- Docker Machine
- Docker Swarm
- Docker Compose
- Kinematic
- Docker Cloud
14. ¿Qué es Docker? (II)
Docker utiliza imágenes para crear los contenedores. Estas imágenes son :
- Conjunto de ficheros + metadatos.
- Formadas por múltiples capas, entre ellas una
capa inicial (Base Layer). Cada una de estas
capas incluye un componente software. Las
capas son son sólo-lectura y cada una además
forma una imagen en sí misma.
- Docker puede compartir capas para optimizar
espacio y memoria (no hace falta descargarlas
de nuevo)
- Para la ejecución del contenedor en su capa
más alta se utiliza un sistema llamado copy-on-
write.
17. Funcionalidad básica (II)
Repositorios Oficiales
- Los repositorios oficiales son un conjunto de repositorios de imágenes
Docker certificadas y mantenidas al día por los propios desarrolladores.
- Se localizan en el llamado Docker Hub, un repositorio donde se almacenan
estas imágenes.
- Las imágenes oficiales son una mezcla de :
- Imagenes base de sistemas operativos Linux (Ubuntu, CentOS, Debian, etc…)
- Imágenes de herramientas para desarrollo, lenguajes de programación, servicios web y
aplicaciones, etc…
- Se pueden crear versiones y tags de las imágenes para identificarlas.
18. Funcionalidad básica (III)
Dockerfiles : Ficheros de configuración que
contienen instrucciones para crear una imagen
Docker. Permite entre otras cosas definir :
- Imagen base a utilizar.
- Variables de entorno.
- Enlaces con otros dockers.
- Comandos a ejecutar.
- Copia de archivos dentro del docker.
- ...
Se crea el fichero y se ejecuta docker build .
20. Recursos y bibliografía - Microservicios
Web
- Microservices architecture : http://microservices.io/index.html
- An introduction to microservices : https://opensource.com/resources/what-
are-microservices
- Artículo de Martin Fowler : http://martinfowler.com/articles/microservices.html
- Neal Ford slices: http://nealford.com/abstracts.html
Libros
- Building microservices - Sam Newman (O’Reilly)
- Microservices: Flexible Software Architectures - Eberhard Wolff
21. Recursos y bibliografía - Dockers
Web
- Documentación oficial - https://docs.docker.com/
- Docker 101 Tutorial - https://blog.docker.com/tag/docker-101/
Libros
- Docker: Up & Running - Karl Matthias y Sean P.Kane (O’Reilly)
- Docker in Action - Jeff Nickolofff (Manning)
Cursos
- Official Docker Training - https://training.docker.com/