Herramientas básicas en arquitecturas de microservicios
Clase 28 de 48 • Curso de Arquitectura de Aplicaciones con Docker 2018
Contenido del curso
Contenedores: ¿Qué son?
- 1

Contenedores: Qué son y cómo encajan con DevOps
08:35 min - 2

Ejemplo: Casos de uso de contenedores en las empresas
01:40 min - 3

Bases físicas y lógicas de los contenedores
02:35 min - 4

Reto 1. Herramientas necesarias para trabajar con Docker
07:44 min - 5

Reto 2. Sistemas de contenedores: historia, parecidos y diferencias
01:34 min
Uso básico de contenedores
- 6

Retos en la instalación de Docker en diferentes sistemas
11:25 min - 7

Validación de post instalación de Docker
02:44 min - 8

Uso básico de Docker: Imágenes, contenedores de Docker
13:25 min - 9

¿Qué hay en un contenedor?
10:41 min - 10

Volúmenes y almacenamiento de la información en contenedores
03:03 min - 11

Gestionando los contenedores instalados
08:21 min - 12

Reto 3. Trabajando con imágenes 'oficiales'
01:19 min - 13

Solución al reto 3
04:26 min - 14

Reto 4. Uso de imágenes locales
00:55 min - 15

Plugins: funcionalidad añadida y algún plugin interesante
06:56 min - 16

Configuración de Docker
00:59 min
Microservicios; APIs con REST
- 17

Protocolo HTTP, órdenes y mensajes de estado
04:22 min - 18

Qué es un API REST y buenas prácticas en su diseño
04:15 min - 19

Implementando un API REST en diferentes lenguajes
02:52 min - 20

Implementando un API REST en Python y ejecutándolo
04:24 min - 21

Reto 5. Diseño de una estructura de datos básica en Python
01:38 min
Contenedores y microservicios
- 22

Aislando microservicios en contenedores: Uso de Dockerfiles
11:31 min - 23

Puertos y cómo configurarlos
07:59 min - 24

Invocando contenedores
06:53 min - 25

ENTRYPOINT y CMD
03:52 min - 26

Trabajando con datos: Volúmenes
04:42 min - 27

Reto 6. "Contenedorizar" una aplicación usando Dockerfiles y despliegue
01:51 min - 28

Herramientas básicas en arquitecturas de microservicios
Viendo ahora - 29

Instalación de docker-compose
02:32 min - 30

Componiendo servicios con docker-compose.
09:30 min - 31

Usando docker stack deploy
05:39 min - 32

Creando puentes de red
08:42 min - 33

Reto 7. Desplegando un microservicio en la nube usando PaaS
01:42 min
Despliegue de contenedores en la nube
- 34

Instalación del cliente de Azure
03:14 min - 35

Clientes de servicios cloud y como usarlos en nuestra aplicación
13:37 min - 36

Creación de un contenedor en la nube
08:08 min - 37

Despliegue seguro de microservicios
07:44 min - 38

Integrando contenedores en aplicaciones en la nube
04:49 min - 39

Instalando Docker Cloud
01:54 min - 40

Iniciación al API de Docker Cloud
07:35 min - 41

Usando cloud.docker.com
07:01 min - 42

Uso de Docker Cloud, cómo desplegar un servicio en un contenedor
07:40 min - 43

Cómo desplegar un stack
10:43 min - 44

Reto 9: desplegando en una nube comercial
01:37 min
Orquestación de contenedores
Las arquitecturas de microservicios crean aplicaciones a base de diferentes servicios unidos por sistemas de colas de mensajes. Tanto las herramientas que se usan en los microservicios como las que se usan para coordinarlas y que funcionen correctamente son diferentes de las pilas tradicionales que incluyen una base de datos SQL, algún lenguaje de programación y marco web y eventualmente algún marco front-end.
Dividiremos estas herramientas entre las de desarrollo y despliegue y las que se usan dentro de los microservicios o como parte de la arquitectura de microservicios.
Herramientas de despliegue y desarrollo
Las herramientas de despliegue se usan generalmente en el contexto del trabajo con máquinas virtuales; Docker tiene sus propias herramientas de despliegue pero en un entorno donde se usen ambas cosas, conviene conocerlas.
Las herramientas de despliegue toman el código fuente localmente, le aplican transformaciones, y lo copian en el destino, a su vez aplicándole las transformaciones o adaptaciones que sean necesarias. Se aseguran de que los servicios se inicien en la secuencia correcta o que estén ejecutándose y permiten rehacer despliegues de forma fácil y en los objetivos correctos. Se usan diferentes herramientas de este tipo, pero las principales son Fabric, Capistrano y Flightplan.
Cuando se despliega un servicio web, las herramientas que se aseguran de controlar los procesos que se están ejecutando o incluso de que haya un número de copias en funcionamiento se denominan supervisores; supervisord es un ejemplo de una de ellas, pero también pm2, escrita en Javascript. Estas herramientas sí se pueden usar, dentro de un contenedor, para asegurarse de que se están ejecutando las copias que sean convenientes, aunque si se usan sistemas de orquestación como Swarm, Docker Cloud o Kubernetes este control se hará a nivel del propio contenedor.
El servicio en el microservicio
Los microservicios se conectan entre sí con buses de mensajería tales como Kafka, RabbitMQ o sistemas que desacoplan el inicio de algún proceso que requiera cierto tiempo de la respuesta al usuario; de esa forma se trabaja de forma asíncrona y se puede responder al usuario más fácilmente y de forma concurrente.
Dentro del microservicio, se usan sistemas de log o registro tales como Logstash o sistemas en la nube tales como Logz.io o Papertrail; los logs son imprescindibles para conocer las prestaciones del sistema completo, ver tendencias, y añadir analítica a las visitas y el uso del sistema.
Los sistemas de gestión de bases de datos tipo SQL se han modernizado y hoy en día se convierten en sistemas NoSQL, que ha venido a significar No sólo SQL. PostgreSQL sigue esta tendencia, pero también MariaDB, más tradicional, o MySQL. En bases de datos que no usan SQL y que antes se denominaban NoSQL la más popular es MongoDB, pero también se usan sistemas clave-valor tales como Redis. Un sistema de microservicios, a diferencia de los monolíticos, usará diferentes almacenes de datos, dependiendo del servicio que ofrezcan y qué quiera obtenerse con ellos.
Resumen
El mundo de los servicios es un mundo nuevo no sólo en términos de arquitectura de aplicaciones, sino también en qué tipo de servicios se usan dentro de esas aplicaciones. A la hora de diseñar una nueva aplicación nativa en la nube merece la pena conocer todas las aplicaciones libre existentes y usar las que permitan trabajar con, procesar y servir esos datos con la mayor eficiencia.