22
Introducción a Microservicios y Contenedores DIA 1 - 17/05/16 Raúl Sánchez y Carlos Crisóstomo Workshop Día 1

Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

Embed Size (px)

Citation preview

Page 1: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

Introducción a Microservicios y Contenedores

DIA 1 - 17/05/16 Raúl Sánchez y Carlos Crisóstomo

Workshop Día 1

Page 2: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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

Page 3: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

1. ¿Qué son los microservicios?

Page 4: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

Arquitectura tradicional - Ejemplo LAMP (I)

Funcionalidades :- Pagos- Inventario- Envíos- ...

Arquitectura LAMP básica :- Servidor Web (+PHP)- Base de datos

Page 5: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

Arquitectura tradicional - Ejemplo LAMP (II)

DESARROLLO INTEGRACIÓN PRODUCCIÓN

Page 6: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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

Page 7: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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

Page 8: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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

Page 9: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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.

Page 10: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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

Page 11: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

Mejoras respecto a arquitectura tradicional (III)

DESARROLLO INTEGRACIÓN PRODUCCIÓN

Page 12: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

2. Implementación de Microserviciosusando contenedores

-La Plataforma Docker

Page 13: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

¿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

Page 14: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

¿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.

Page 15: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

Características técnicas

Principales tecnologías utilizadas en Dockers :

- CGroups- Namespaces- Copy-On-Write filesystems

Page 16: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

Funcionalidad básica (I)Parámetros de una imagen Docker :

- Puertos- Volúmenes de datos- Enlaces a otros Dockers- Variables de entorno

Page 17: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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.

Page 18: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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 .

Page 19: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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

Page 20: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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

Page 21: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

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/

Page 22: Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Google Campus Madrid)

¡GRACIAS!

¡Nos vemos en la segunda parte!