Upload
carlos-crisostomo-vals
View
901
Download
6
Embed Size (px)
Citation preview
Introducción a Microservicios y Contenedores
DIA 1 - 17/05/16 Raúl Sánchez y Carlos Crisóstomo
Workshop Día 1
Indice1. Microservicios - ¿Qué son los microservicios?
a. Arquitectura tradicional - Limitacionesi. Escalabilidadii. Portabilidadiii. Inmutabilidad
b. Nuevo modelo de arquitectura basada en contenedores - Microserviciosi. Contenedores y microserviciosii. Mejoras con respecto a arquitectura tradicional
2. Implementación de microservicios usando contenedores - La plataforma Dockera. ¿Qué es Docker?b. Imágenesc. Características técnicasd. Funcionalidad básica
1. ¿Qué son los microservicios?
Arquitectura tradicional - Ejemplo LAMP (I)
Funcionalidades :- Pagos- Inventario- Envíos- ...
Arquitectura LAMP básica :- Servidor Web (+PHP)- Base de datos
Arquitectura tradicional - Ejemplo LAMP (II)
DESARROLLO INTEGRACIÓN PRODUCCIÓN
Ciclo de vida del servicio web tradicionalDESARROLLO 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
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
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
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.
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
Mejoras respecto a arquitectura tradicional (III)
DESARROLLO INTEGRACIÓN PRODUCCIÓN
2. Implementación de Microserviciosusando contenedores
-La Plataforma Docker
¿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
¿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.
Características técnicas
Principales tecnologías utilizadas en Dockers :
- CGroups- Namespaces- Copy-On-Write filesystems
Funcionalidad básica (I)Parámetros de una imagen Docker :
- Puertos- Volúmenes de datos- Enlaces a otros Dockers- Variables de entorno
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.
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 .
Funcionalidad básica (IV)
CONTENEDORES
- Ciclo de vida : create,rename,run,rm,update- Parada/Arranque del contenedor : start,stop,
restart,pause,unpause,wait,kill,attach- Información : ps,logs,inspect,events,port,top,
stats,diff- Importación/Exportación : cp,export- Ejecución : exec
Comandos básicos : docker <comando>
IMAGENES
- Ciclo de vida : images,import,build,commit, rmi,load,save
- Información : history,tag
...
Docker Cheat Sheet - https://github.com/wsargent/docker-cheat-sheet
Recursos y bibliografía - MicroserviciosWeb
- 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
Recursos y bibliografía - DockersWeb
- 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/
¡GRACIAS!
¡Nos vemos en la segunda parte!