Este post, es la 2º parte del artículo ¿Cómo construir microservicios en Python? En él, os conté algunas librerías muy útiles, por no decir imprescindibles, para construir un microservicio en Python y un pequeño arquetipo donde juntamos todas las piezas.

Esta vez, algo más de año y medio después, os vengo a contar como podéis abstraeros de todo lo que conté y poder tener todas las piezas necesarias en una única librería Open Source.

Antes de entrar en materia, necesito que tú, lector, me permitas la libertad de contarte una breve historia de cómo nació este sueño forjado en el día a día de un proyecto en Paradigma Digital. Prometo ser breve pero si te aburren las moñadas, puedes pasar al siguiente punto.

Historia

Esta historia sucede en un abril de 2018, cuando surgió la necesidad en un proyecto de partir un monolito desarrollado en Python en microservicios.

Antes de tirarnos a la piscina del desarrollo empezamos a investigar cómo llevar a cabo este trabajo y, para nuestra sorpresa, no existía nada en el mercado ni en la comunidad para crear proyectos de microservicios que se puedan llevar de forma profesional a producción en este lenguaje.

Pero esto no nos detuvo, estábamos decididos en implementar la mejor decisión que correspondía a la la necesidad. Todo se puso en nuestra contra, el proyecto no podía permitirse un trabajo tan descomunal de investigación, experimentación, de ensayo y error… pero la ilusión por crear algo que no existe, que nadie ha inventado, era superior a cualquier proyecto, a cualquier sprint y a cualquier historia de usuario.

Decidimos por tanto que, igual que hemos ahorrado infinitas horas de trabajo nutriéndonos de la comunidad, usando librerías como Flask, Django, requests, SQLAlchemy para entregar productos en tiempo récord que pocos lenguajes pueden igualar; era nuestro momento, nuestro turno de aportar nuestro grano de arena.

Empezamos a crear una pequeña PoC, a crear arquetipos, proyectos personales que mostrasen su viabilidad; trasteando en nuestro tiempo libre, preguntando en stackoverflow.

Cometimos infinidad de errores por falta de experiencia, pero al fin llegó el día. Creamos nuestra primera versión de un software cumpliendo todos nuestros estándares, lo presentamos en la compañía y al cliente, y fue un éxito: el primer microservicio en Python. La rueda empezó a girar.

Desde ese abril de 2018, nada nos detuvo, toda nuestra investigación no se paró ahí. Empezaron a surgir más proyectos, más necesidades. En octubre 2018 aglutinamos todo este esfuerzo bajo esta organización de github y compartimos todo lo aprendido en la primera parte de este post.

Cada vez más proyectos internos y de la comunidad demandaban cubrir esta necesidad… y empezamos a crecer.

Esto no era ya un experimento, estábamos sentando las bases de nuestro sueño: crear un patrón Chasis de Microservicios en Python como existen en otros lenguajes como Java o Go, algo que no existía, algo que que aportábamos a la comunidad...

… y llegó enero de 2019 donde al fin publicamos nuestra primera versión Open Source estable de nuestro patrón. Nada nos detuvo, empezamos a añadirle una usabilidad para desarrolladores para que cualquiera pudiese utilizarlo, nuevas releases, muchos cambios.

Y, en marzo de 2020, hemos publicado nuestro sueño, una versión estable que cumpla (absolutamente) casi con todo lo que se espera de un patrón chasis de microservicios y las buenas prácticas de los 12 factores:

Quickstart

Todo lo anterior se puede resumir en dos líneas de código en tu terminal:

pip install py-ms
pyms startproject

Tras completar los pasos que te salgan por pantalla, entra en la carpeta que te habrá creado este comando y lanza el servidor con lo siguiente:

python manage.py runserver

http://127.0.0.1:5000/ui/

Y listo, ya tienes un proyecto de microservicios en Python con todas las cualidades que tiene que tener un buen microservicio listo para empezar a trabajar, incluir tus vistas, modelos, llamadas a terceros, serializadores, etc.

“¡Uo! ¡Qué bien funciona!, ¿ha sido un brujo?”. Te explico paso a paso lo que ha ocurrido antes de que te pongas a lanzar monedas en el valle opulento:

Y esto no queda aquí, si quieres ver más en detalle cómo funciona todo te animo a leer la documentación que en un pequeño post no da para más y no me atrevo a prometeros una tercera parte (o sí…).

¿Tu proyecto necesita Kubernetes? échale un ojo a esto.

“No fastidies, con algo más simple con Docker me vale”, aquí tiene caballero/señora.

Como cierre, en estas pocas líneas os he presentado el trabajo de este último año, que nos ha hecho crecer y que espero que os sea útil, además de poder aportar algo al Open Source del que tanto nos hemos “aprovechado” en los desarrollos de nuestro día a día.

Un lenguaje de programación (según mi entender), no se mide ni por benchmarks, ni gráficas de uso. Su calidad se mide por la comunidad que tiene detrás, del trabajo colectivo de miles de personas que facilitan su uso, de su profesionalidad y el mimo que dan a su software… y, en esto, Python es el amo indiscutible.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.