Reto 5. Diseño de una estructura de datos básica en Python
Clase 21 de 48 • Curso de Arquitectura de Aplicaciones con Docker 2018
Introducción
Casi todas las aplicaciones empresariales de hoy en día se crean a base de microservicios, usando los principios SOLID o la arquitectura cebolla, o alguna arquitectura de software que combina diferentes servicios web, posiblemente en diferentes lenguajes, en un todo sólido. Cada uno de los servicios se puede desplegar y escalar de forma independiente.
Para crear un servicio web se parte de los datos con los que se quieren trabajar. Por el momento vamos a suponer que los datos se leen de un fichero de configuración o están ya contenidos en el propio programa; en la práctica, el estado se externalizará y almacenará en otro microservicio, una base de datos tradicional o NoSQL. Lo que nos interesa en este caso es crear un servicio web que sea configurable, sobre todo en el puerto en el que se sirve y en las direcciones a las que escucha, y que se pueda desplegar fácilmente.
Siempre que se trabaje en un programa, deberá de ir en un repositorio para poder comprobar fácilmente los cambios, comprobar diferentes versiones y hacerle pasar tests con ayuda de alguna herramienta externa.
Una vez que se tengan los datos y la configuración básica, el servicio web deberá incluir lo necesario para que esos datos se puedan servir de forma que se requiera y también se puedan modificar, el ciclo básico CRUD (create, read, update y delete). Cada una de esas instrucciones básicas corresponde a una orden HTTP (PUT, GET, POST y DELETE) y en un servicio web se pueden implementar todas ellas.
Finalmente, el servicio web puede ejecutarse. En la mayoría de los casos, se puede ejecutar directamente, si bien es más conveniente usar aplicaciones externas que se aseguren, por ejemplo, de que hay varias copias en funcionamiento y realizan tanto funciones de configuración como de monitorización. En el caso de Python, por ejemplo, se suele usar Green Unicorn.
Reto:
Tras decidir sobre qué tipo de datos se va a trabajar, crear un servicio web en Python (u otro lenguaje de tu elección) que incluya
- Rutas para cada una de las órdenes CRUD.
- Instalación con una sola orden de las bibliotecas necesarias.
- Puertos e IPs a la escucha configurables.
- Ejecución usando una aplicación externa.