8. 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
14. 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
15. Fáciles al inicio…
• Desarrollo rápido (al inicio)
• Desarrollo sencillo
• Despliegue sencillo
• Operación sencillo
• Terreno conocido de pocos desarrolladores
16. 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
17.
18.
19. 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)
20. 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)
22. 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
34. Usar TODO el potencial
de HTTP para construir
sistemas distribuídos
35. Utilizar todo el potencial de HTTP…
• Verbos
• Cabeceras
• Tipos de contenido
• URLs
• Infraestructura: Proxies, balanceadores, clientes,
herramientas de depuración, WAFs, etc.
46. 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?
50. 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
51. 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.
52. Desarrollo ágil de
sistemas distribuidos
con Python empleando la
arquitectura orientada a servicios
Antonio Ognio // aognio@rcp.pe