Microservicios y contenedores Docker

Carlos Fernández Llamas @sirikon

Hippie Developer at Plain Concepts Bilbao

Microservicios

La Arquitectura mediante Microservicios es una forma de desarrollar una aplicación como una suite de pequeños servicios que corren en sus propios procesos y se comunican entre sí mediante mecanismos ligeros, como APIs HTTP.

Frontal web

Gestión entradas

Info. usuarios

Comunicación

Pagos

  • Nuevo nivel de desacoplamiento
    • Cada servicio funciona de forma independiente
  • Cada servicio puede ser gestionado por un equipo en nuestra organización
    • Cada equipo será independiente, incluso en tecnologías
  • Escala por separado
  • Se rompe por separado
  • Despliega por separado
  • Se complica la gestión de servicios.
  • Más comunicación entre servicios externos que podrían estar (o no) funcionando.
    • Por lo que podrías aumentar tiempos de respuesta.
    • Te interesará cachear datos.
  • Más programación defensiva al aumentar servicios externos.

There are only two hard things in Computer Science: cache invalidation and naming things.

Si Netflix lo hace, yo también.

  • ¿Soluciona problemas que de verdad tenemos?

 

  • Podrías morir por exceso de microservicios

Mide, mide y mide.

Los monolitos no tienen por qué ser malos siempre

Docker

Frontal web

Gestión entradas

Info. usuarios

Comunicación

Pagos

Docker es una plataforma de contenedores para ejecutar aplicaciones de forma aislada y eficiente

  • Virtualizas el software (kernel), en vez del hardware.
  • Lo cual es mucho más ligero (Aunque hay quien no opina así http://cnp.neclab.eu/projects/lightvm/)
  • No tienes el mismo aislamiento con Docker que con virtualización clásica.

Unifica y versiona el flujo de vida de tus aplicaciones

  • Se crean igual
  • Se despliegan igual
  • Se inician igual
  • Se paran igual
  • Se borran igual
FROM ubuntu

RUN apt-get update
RUN apt-get install -y nodejs
RUN mkdir /var/www

ADD app.js /var/www/app.js

CMD ["/usr/bin/node", "/var/www/app.js"]

The Dockerfile

¡Demo time!

Docker Compose es una herramienta para automatizar y coordinar el flujo de vida de contenedores orientado a desarrollo

  • Obliga a que todos los contenedores corran en la misma máquina.
  • Actualizar los contenedores requiere parar y reiniciar todo.
  • No podemos ejecutar varias instancias de un mismo servicio.
  • Por lo que olvídate de hacerlo en función del tráfico.

Docker works with Visual Studio

Kubernetes

Kubernetes es un sistema de orquestación de contenedores pensado para producción altamente configurable, extendible y battle-tested.

Azure

Azure Web Apps for Containers

  • Mínima expresión de contenedores en Azure
  • 1 Web App -> 1 Container
  • Crea tu Azure Container Registry para guardar tus imágenes
  • Las cuales puedes desplegar fácilmente desde VSTS

Azure Container Service (AKS)

Kubernetes en Azure

También funciona con Docker Swarm y DC/OS

Aunque a nadie le importa DC/OS

Azure Service Fabric

Azure AppInsights

¿Preguntas?

¡A pastar!

¡Muchas gracias!

Carlos Fernández Llamas @sirikon

Hippie Developer at Plain Concepts

cfernandez@plainconcepts.com

Made with Slides.com