[pyar] Aplicación monolítica a microservicios

Julian Agustin Cardonnet jcardonnet en gmail.com
Jue Ene 5 12:27:44 ART 2017


Hola Luciano,
Lo que se recomienda es arrancar con una arquitectura monolítica y recién
cuando la lógica del negocio se estabilizo y vos como diseñador ya entendes
bien el dominio, empezar extraer partes de a poco y crear un microservicio
para cada una. Es fundamental el "de a poco" porque te permite mantener
bajo control la complejidad y el riesgo de los cambios, asi que anda
extrayendolos de a uno por vez, y recien cuando estes conforme teniéndolo
en producción avanzar al siguiente.

La particion no solo tiene que tener en cuenta lo funcional sino tambien
todos aquellos aspectos que influyan en la capacidad de cada servicio de
ser altamente cohesivo y con tener bajo acoplamiento con el resto. Por ej,
compartir una misma base de datos es un punto groso de acoplamiento en el
que hacer cambios grandes puede provocar cambios en cascada en todo el
resto del sistema. Segun el zen de los microservicios, lo que habria que
hacer en un caso asi es encapsular no solo la logica sino tambien los datos
(partir la DB en piezas mas chicas, solo accesible por el servicio
correspondiente) y que solo se comuniquen usando las interfaces. Igualito a
que con los objetos.

El asunto de los microservicios tiene muchas facetas para nada triviales
(desde como elegir la particion, hasta el monitoreo, testing, integracion,
deployment, etc) asi que te recomiendo que investigues bien el tema antes
de decidir que realmente una arquitectura de este estilo te va a resolver
problemas en vez de complicarte la vida.

Para entrar en tema podes leer un par de articulos de Martin Fowler [0] [1]
o charla "The Principles of Microservices"[2]  y despues seguir con el
libro "Building Microservices" de Sam Newman

El tech blog de Netflix [3] tambien tiene articulos muy interesantes sobre
las distintas experiencias que vienen teniendo con su mega-deployment
totalmente basado en microservices.

[0] http://martinfowler.com/microservices/
[1] http://www.martinfowler.com/articles/microservices.html
[2] http://samnewman.io/talks/principles-of-microservices/
[3] http://techblog.netflix.com/

Saludos,
Julian

El 4 de enero de 2017, 22:53, Luciano Andino <lucianoandino.ar en gmail.com>
escribió:

>
> Buenas! a modo de práctica, estoy haciendo 2 aplicaciones monolíticas que
> simular oauth2 pero sin la librería oauth. Las aplicaciones son
> monolíticas. El segundo paso es que el servidor deje de ser monolítico y
> pase a arquitectura de microservicios (por esto les consulto)
>
> Operaciones cliente:
> 1) Con su client_id solicita un authorization grant mediante autenticación
> (user+password).
> 2) Con ese grant pide un token access y un refresh token.
> 3) Se le permite acceder a realizar operaciones de visualización de
> productos de una tienda, via RESTFUL y token válido.
>
> En el servidor:
> 1) Da de alta usuarios.
> 2) Atende las peticiones del cliente, creando, enviando, guardando y
> validando: grants y tokens.
> 3) Da un servicio de catálogo de productos disponibles utilizando
> paginación (a clientes autorizados)
> 4) Servicio de compra de productos y operación de pago (idem)
>
>
> Mi consulta es si existe una guía para esto (separar la lógica o tareas
> afines) en microservicios. Mi framework es Flask
>
>
> gracias!
>
>
> --
> Luciano Andino
> Ing. en Sistemas de Información
> UTN FRSF
> BMSTU
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170105/c9002b56/attachment.html>


Más información sobre la lista de distribución pyar