Implementando un API REST en diferentes lenguajes
Clase 19 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
Viendo ahora - 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
02:29 min - 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
La popularidad de los servicios web basados en REST se deben precisamente a la sencillez de su implementación; un lenguaje que tenga una implementación del protocolo HTTP es suficiente para crear servicios web; en algunos lenguajes es parte, además, de la biblioteca estándar.
Pero eso no significa que sea mejor usar una capa de abstracción adicional que permita trabajar con los diferentes componentes de un servicio web REST: rutas, middleware que haga procesamiento común para todas las rutas, registro de actividad o log, servir de forma eficiente página estáticas, y manejo de parámetros y payload de las peticiones REST.
Durante la primera decena de este siglo se hicieron populares los marcos de desarrollo MVC como Django o Ruby on Rails. Estos marcos de desarrollo han sido diseñados para crear aplicaciones n-tier monolíticas, con una sola fuente de datos y una sola forma de generación de front-end a partir de plantillas.
Aunque son capaces de manejar rutas REST, es mejor usar framework específicos. Como son una versión “menor” de los frameworks, se suelen denominar: Microframeworks.
Microframeworks
Los microframeworks reúnen todas las características que se han indicado anteriormente y permiten, en general, que uno se concentre en la lógica de negocio programando el procesamiento común y el que hay que hacer en cada una de las rutas dejando que éste se encargue de pelar las cabeceras extrayendo la información y, por el contrario, construir la respuesta y enviarla al cliente.
Adicionalmente, para trabajar dentro del entorno de Docker tendremos que buscar alguna característica adicional, por ejemplo si tiene un contenedor oficial Docker y en qué estado está; una versión 0.x puede que lo haga interesante para experimentar o prototipos, pero es mejor buscar siempre versiones >=1 para algo que vaya a entrar en producción.
Un microservicio, por otro lado, se puede escribir en cualquier lenguaje. La arquitectura de microservicios es políglota y puede incluso contener diferentes microservicios que usen diferentes microframeworks en diferentes lenguajes.
El estado de desarrollo también merece la pena conocerlo buscando el número de pull requests abiertos que tiene en GitHub (y desde cuando) y el número de cambios que se han hecho últimamente. Un framework nunca es un trabajo completo, y confiar nuestra aplicación en producción a un framework que se ha dejado de desarrollar, aunque siendo software libre es algo que podemos hacer nosotros mismos, conviene que, si se puede elegir, se opte por otro que sí se mantenga en desarrollo continuo y tenga una hoja de ruta de desarrollo clara.
Por eso ponemos aquí algunos frameworks populares en diferentes lenguajes de scripting, aunque aconsejamos siempre y en todo momento, en el momento de comenzar a desarrollar, hacer una búsqueda rápida que nos revele cuales son los microframeworks más populares entre los desarrolladores en cada momento. Aunque eso no esté necesariamente correlacionado con la calidad, al menos estará relacionado con el tamaño de la comunidad a la que puedes acudir en caso de problemas con el mismo.
- Perl: Dancer2
- Javascript: Express.
- Ruby: Sinatra, Cuba
- Python: Hug, Flask
Conclusión
Antes incluso de convertir una arquitectura a microservicios, dividir de forma clara una aplicación entre un back-end que contiene un servicio web y un frontend que puede usar ese servicio web de diferentes formas (móvil, web, chatbots, clientes de escritorio) permite separar claramente interfaz de presentación y hacer pruebas e incluso despliegues de forma totalmente independiente. Los microframeworks son una forma fácil y rápida de programar microservicios, y todos los lenguajes populares tienen una serie de microframeworks en desarrollo con los que podemos pasar a producción nuestra aplicación, a través de Docker, de forma rápida y eficiente. En este curso hemos usado Hug y Flask, pero te animamos a que en el momento de decidirse por uno hagas prototipos con las diferentes opciones existentes para elegir la que más se adapte a tu problema y entorno de desarrollo.