Successfully reported this slideshow.

Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios

3

Share

1 of 52
1 of 52

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios

  1. 1. Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios Antonio Ognio // aognio@rcp.pe
  2. 2. Metodologías ágiles
  3. 3. Sistemas distribuídos
  4. 4. Arquitectura orientada a servicios
  5. 5. Service-oriented Architecture
  6. 6. SOA
  7. 7. 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
  8. 8. Agilidad
  9. 9. Agilismo
  10. 10. 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
  11. 11. Fáciles al inicio… •  Desarrollo rápido (al inicio) •  Desarrollo sencillo •  Despliegue sencillo •  Operación sencillo •  Terreno conocido de pocos desarrolladores
  12. 12. 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
  13. 13. 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)
  14. 14. 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)
  15. 15. Microservicios
  16. 16. 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
  17. 17. Datastores
  18. 18. MySQL Cluster
  19. 19. REST
  20. 20. Representational State Transfer
  21. 21. Usar TODO el potencial de HTTP para construir sistemas distribuídos
  22. 22. Utilizar todo el potencial de HTTP… •  Verbos •  Cabeceras •  Tipos de contenido •  URLs •  Infraestructura: Proxies, balanceadores, clientes, herramientas de depuración, WAFs, etc.
  23. 23. HATEOAS
  24. 24. Hypertext As The Engine Of Application State
  25. 25. ¿Porqué Python? •  Sintaxis sencilla y legible •  Multiparadigma: procedural / OOP / funcional •  Rendimiento aceptable •  Muchos módulos disponibles •  Frameworks: Django / Tornado
  26. 26. Servicios •  Usuarios (registro, SSO, perfil unificado, etc) •  Blogs •  Comentarios •  Puntos (Gamification) •  Contenido editorial •  Búsqueda
  27. 27. 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)
  28. 28. Monitoreo
  29. 29. 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?
  30. 30. Apdex
  31. 31. ¿siguientes pasos?
  32. 32. 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
  33. 33. 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.
  34. 34. Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios Antonio Ognio // aognio@rcp.pe

×