Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Desarrollo ágil de sistemas distribuidos con Py...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Antonio Ognio Antonio Ognio
September 21, 2013

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

Avatar for Antonio Ognio

Antonio Ognio

September 21, 2013
Tweet

More Decks by Antonio Ognio

Other Decks in Technology

Transcript

  1. SOA

  2. 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
  3. 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
  4. Fáciles al inicio… •  Desarrollo rápido (al inicio) •  Desarrollo

    sencillo •  Despliegue sencillo •  Operación sencillo •  Terreno conocido de pocos desarrolladores
  5. 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
  6. 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)
  7. 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)
  8. 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
  9. Utilizar todo el potencial de HTTP… •  Verbos •  Cabeceras

    •  Tipos de contenido •  URLs •  Infraestructura: Proxies, balanceadores, clientes, herramientas de depuración, WAFs, etc.
  10. ¿Porqué Python? •  Sintaxis sencilla y legible •  Multiparadigma: procedural

    / OOP / funcional •  Rendimiento aceptable •  Muchos módulos disponibles •  Frameworks: Django / Tornado
  11. Servicios •  Usuarios (registro, SSO, perfil unificado, etc) •  Blogs

    •  Comentarios •  Puntos (Gamification) •  Contenido editorial •  Búsqueda
  12. 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)
  13. 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?
  14. 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
  15. 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.