[Python-es] Ejemplo de microservicios (Sistema distribuido)

Yamila Moreno Suárez yamila.ms en gmail.com
Jue Abr 27 03:20:49 EDT 2017


Buenas!

Yo desconozco si existe un framework para lo que necesitas, aunque me
sorprendería por la naturaleza de la arquitectura que planteas. En todo
caso, he hecho aplicaciones similares y nuestra solución ha sido:

1 aplicación de API. Esta API la puedes hacer con Flask (tiene bibliotecas
para levantar APIs), con Django (usando Django Rest Framework) o "a pelo",
es decir, usas un micro-framework que resuelve el enrutamiento y poco más,
y el resto (validaciones, conexión, sesiones, clases de bbdd, mapeos,
servicios, etc) lo haces a mano siguiendo una arquitectura bastante
estricta y controlada. Hay opciones en muchísimos lenguajes, si el que más
conoces es python, vas a poder elegir cómodamente.

1 aplicación de backend. Al igual que el API tienes muchas opciones basadas
en python, o en otros lenguajes.

Con esto, puedes:
- crear una imagen del back y levantar tantos contenedores como necesites
- crear una imagen del api y levantar tantos contenedores como necesites
- No comentas nada de bbdd, entiendo que está resuelta por otro sistema y
que tú vas a conectarte a ella como sea.

Si levantas varios apis y backs (y quieres que respondan en la misma URL)
tienes que añadir una capa por delante que se encargue de distribuir la
carga y de mantener el estado de tu servicio. Esta capa ahora mismo se está
resolviendo con orquestadores.

Si eres nuevo en docker, te paso un tuto que hice, con el que aproveché
para aprender; es muy sencillo pero te enseña las bases:
http://moduslaborandi.net/2016/02/docker-101-hello-world/ (y los 3
siguientes).

Lo que planteas en tu email es un sistema complejo y sofisticado; es
improbable que exista una única herramienta que te lo resuelva, así que mi
recomendación en todo caso es que vayas resolviendo trozos pequeños,
asegurándote de usar buenas prácticas, de forma que después vaya a ser más
sencillo unirlos. Por ejemplo, es muy importante no acoplar componentes de
tu aplicación.

Suerte!
Yamila












2017-04-26 21:24 GMT+02:00 Luciano Andino <lucianoandino.ar en gmail.com>:

> Buenas, este es mi primer email a la lista. Les consulto: Tengo que
> desarrollar una aplicación del tipo "Hotel" (clientes, habitaciones,
> reservas, etc) pero utilizando microservicios. A detallar:
>
> * Un frontend del tipo API REST oauth2 (logueandose con la cuanta de gmail
> por ejemplo), que interactue con el backend de hotel (utilizando
> microservicios).
>
> * El backend estará encapsulado en docker, porque a efectos de
> geolocalización del usuario web, el frontend se comunicará con el backend
> más cercano a través del UUID. Con esto quiero decir que habría más de un
> backend. (Sistema distribuido)
>
> * Debo ser capaz desde un perfil de administrador, podér agregar
> instancias backend, dar de baja, etc.
>
> Cuando digo "tipo Hotel", es porque tomé una variante similar, en mi caso
> sería "alquiler de bicicletas de persona a persona", el usuario puede
> reservar bicicletas (hacer uso) de otro usuario registrado en el sitio.
>
> Cuento con conocimientos (no tantos) de Flask y como aplicación monolítica
> me queda claro cómo hacerla, pero llevándola a microservicios, el tema de
> la comunicación entre los servicios y cómo dividir la base de datos, me
> está dando problemas de sólo pensar. Docker también es nuevo para mí.
>
> Existe un framework para este tipo de desarrollo o bien un ejemplo? Es
> para la Universidad.
>
> Muchas gracias,
>
> --
> Luciano Andino
> Ing. en Sistemas de Información
> UTN FRSF
> BMSTU
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>


-- 
Yamila  Moreno Suárez
http://dendarii.es
http://moduslaborandi.net
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20170427/f34ffbcc/attachment.html>


Más información sobre la lista de distribución Python-es