desarrollo ágil de sistemas distribuidos con python empleando la arquitectura orientada a servicios
DESCRIPTION
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios.TRANSCRIPT
![Page 1: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/1.jpg)
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios
Antonio Ognio // [email protected]
![Page 2: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/2.jpg)
Metodologías ágiles
![Page 3: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/3.jpg)
Sistemas distribuídos
![Page 4: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/4.jpg)
![Page 5: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/5.jpg)
Arquitectura orientada a servicios
![Page 6: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/6.jpg)
Service-oriented Architecture
![Page 7: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/7.jpg)
SOA
![Page 8: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/8.jpg)
Cultura de desarrollo • Desarrollo rápido de nuevas características
• Diseño a través de la experimentación
• Quedarse con lo que funciona y descartar lo que no funciona
• Evitar desperdicios, gastos innecesarios (LEAN)
• Rápida capacidad de respuesta y adaptación
![Page 9: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/9.jpg)
Agilidad
![Page 10: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/10.jpg)
Agilismo
![Page 11: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/11.jpg)
![Page 12: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/12.jpg)
![Page 13: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/13.jpg)
![Page 14: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/14.jpg)
Sistemas monolíticos • Miles de líneas de código
• Casi siempre en un mismo lenguaje
• Cientos de tablas
• …muchas veces de distintos sistemas
• Cientos de clases, métodos, funciones
![Page 15: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/15.jpg)
Fáciles al inicio… • Desarrollo rápido (al inicio)
• Desarrollo sencillo
• Despliegue sencillo
• Operación sencillo
• Terreno conocido de pocos desarrolladores
![Page 16: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/16.jpg)
Desventajas (Sistema monolítico) • ¿Quién es el responsible de que parte?
• Dependencias cada vez más complejas
• Ciclos de prueba cada vez más largos
• Impactos inesperados en el rendimiento
• Opciones limitadas en la elección de tecnologías
![Page 17: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/17.jpg)
![Page 18: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/18.jpg)
![Page 19: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/19.jpg)
Ley de Conway
“Organizations which design systems are constrained to produce designs which are copies of
the communication structures of these organizations”
-Melvin Conway (1968)
![Page 20: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/20.jpg)
Ley de Conway
“Las organizaciones que diseñan sistemas están limitadas a producir diseños que son copias de las
estructuras de comunicación de dichas organizaciones”
-Melvin Conway (1968)
![Page 21: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/21.jpg)
Microservicios
![Page 22: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/22.jpg)
Ventajas (Microservicios) • Funcionalidad específica y bien delimitada
• Relativamente pocas líneas de código
• Total independencia en selección de tecnologías
• Propiedad / gestión por equipos distintos
• Migración gradual hacia nuevas tecnologías
![Page 23: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/23.jpg)
![Page 24: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/24.jpg)
![Page 25: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/25.jpg)
![Page 26: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/26.jpg)
![Page 27: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/27.jpg)
![Page 28: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/28.jpg)
![Page 29: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/29.jpg)
Datastores
![Page 30: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/30.jpg)
![Page 31: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/31.jpg)
MySQL Cluster
![Page 32: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/32.jpg)
REST
![Page 33: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/33.jpg)
Representational State Transfer
![Page 34: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/34.jpg)
Usar TODO el potencial de HTTP para construir sistemas distribuídos
![Page 35: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/35.jpg)
Utilizar todo el potencial de HTTP… • Verbos
• Cabeceras
• Tipos de contenido
• URLs
• Infraestructura: Proxies, balanceadores, clientes, herramientas de depuración, WAFs, etc.
![Page 36: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/36.jpg)
HATEOAS
![Page 37: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/37.jpg)
Hypertext As
The Engine
Of Application
State
![Page 38: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/38.jpg)
![Page 39: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/39.jpg)
¿Porqué Python? • Sintaxis sencilla y legible
• Multiparadigma: procedural / OOP / funcional
• Rendimiento aceptable
• Muchos módulos disponibles
• Frameworks: Django / Tornado
![Page 40: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/40.jpg)
![Page 41: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/41.jpg)
![Page 42: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/42.jpg)
Servicios • Usuarios (registro, SSO, perfil unificado, etc)
• Blogs
• Comentarios
• Puntos (Gamification)
• Contenido editorial
• Búsqueda
![Page 43: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/43.jpg)
Otras tecnologías • Git (Control de versiones)
• Vagrant (Virtualización del entorno de desarrollo)
• RHEV 3.0 (Máquinas virtuales)
• CentOS 5.x / 6.x
• Ansible (automatización de despliegue)
![Page 44: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/44.jpg)
Monitoreo
![Page 45: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/45.jpg)
![Page 46: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/46.jpg)
Permite responder, en tiempo real, preguntas como: • ¿Cómo está funcionando el servidor?
• ¿Cómo está sirviendo las páginas de la aplicación?
• ¿Cómo percibe el usuario la aplicación?
• ¿Cómo puedo mejorar las operaciones que son críticas para el negocio?
![Page 47: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/47.jpg)
Apdex
![Page 48: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/48.jpg)
¿siguientes pasos?
![Page 49: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/49.jpg)
![Page 50: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/50.jpg)
Ventajas de Go • Rendimiento similar a C / C++
• Sintaxis amigable estilo Python
• Optimizado para ser rápido y eficiente
• Un modelo de concurrencia sencillo (gorutinas)
• Rápida adopción en comunidad SOA
![Page 51: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/51.jpg)
Conclusiones • Los microservicios permiten construir
aplicaciones distribuídas que son potencialmente más fáciles de mantener y hacer evolucionar a lo largo del tiempo.
• Es conveniente evitar construir sistemas monolíticos
• Es clave entender todas las prestaciones del protocolo HTTP y del estilo REST no reinventar la rueda.
![Page 52: Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios](https://reader033.vdocuments.net/reader033/viewer/2022052223/557b98b4d8b42aa0758b4b5f/html5/thumbnails/52.jpg)
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios
Antonio Ognio // [email protected]