Your SlideShare is downloading. ×
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

755
views

Published on

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

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

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
755
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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