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

Desarrollo ágil de sistemas distribuidos con Py...

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

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.