desarrollo ágil de sistemas distribuidos con python empleando la arquitectura orientada a servicios

Post on 13-Jun-2015

893 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Antonio Ognio // aognio@rcp.pe

Metodologías ágiles

Sistemas distribuídos

Arquitectura orientada a servicios

Service-oriented Architecture

SOA

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

Agilidad

Agilismo

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

Fáciles al inicio… •  Desarrollo rápido (al inicio)

•  Desarrollo sencillo

•  Despliegue sencillo

•  Operación sencillo

•  Terreno conocido de pocos desarrolladores

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

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)

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)

Microservicios

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

Datastores

MySQL Cluster

REST

Representational State Transfer

Usar TODO el potencial de HTTP para construir sistemas distribuídos

Utilizar todo el potencial de HTTP… •  Verbos

•  Cabeceras

•  Tipos de contenido

•  URLs

•  Infraestructura: Proxies, balanceadores, clientes, herramientas de depuración, WAFs, etc.

HATEOAS

Hypertext As

The Engine

Of Application

State

¿Porqué Python? •  Sintaxis sencilla y legible

•  Multiparadigma: procedural / OOP / funcional

•  Rendimiento aceptable

•  Muchos módulos disponibles

•  Frameworks: Django / Tornado

Servicios •  Usuarios (registro, SSO, perfil unificado, etc)

•  Blogs

•  Comentarios

•  Puntos (Gamification)

•  Contenido editorial

•  Búsqueda

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)

Monitoreo

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?

Apdex

¿siguientes pasos?

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

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.

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

Antonio Ognio // aognio@rcp.pe

top related