SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Andrés Iturralde
 
"Control de Versiones - CVS en proyectos .NET"
"Control de Versiones - CVS en proyectos .NET""Control de Versiones - CVS en proyectos .NET"
"Control de Versiones - CVS en proyectos .NET"
La Red DBAccess
 

La actualidad más candente (20)

ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2ASP.NET MVC Workshop Día 2
ASP.NET MVC Workshop Día 2
 
01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )01- instalacion de laravel 5+ (dos formas sencillas )
01- instalacion de laravel 5+ (dos formas sencillas )
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas Rotas
 
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windowslección 02- creación de Virtual Host laravel 5 + Xampp + Windows
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
 
Zend Framework Taller de SeeD Software, Colombia
Zend Framework Taller de SeeD Software, ColombiaZend Framework Taller de SeeD Software, Colombia
Zend Framework Taller de SeeD Software, Colombia
 
Web services-con-php
Web services-con-phpWeb services-con-php
Web services-con-php
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Introducción a ASP.NET Web API
Introducción a ASP.NET Web APIIntroducción a ASP.NET Web API
Introducción a ASP.NET Web API
 
Lenguaje de programacion
Lenguaje de programacionLenguaje de programacion
Lenguaje de programacion
 
Javascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OSJavascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OS
 
Stack mean
Stack meanStack mean
Stack mean
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
 
"Control de Versiones - CVS en proyectos .NET"
"Control de Versiones - CVS en proyectos .NET""Control de Versiones - CVS en proyectos .NET"
"Control de Versiones - CVS en proyectos .NET"
 
Seminario de DSLs con Groovy
Seminario de DSLs con GroovySeminario de DSLs con Groovy
Seminario de DSLs con Groovy
 
Subversion - buenas prácticas
Subversion - buenas prácticasSubversion - buenas prácticas
Subversion - buenas prácticas
 
ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1
 
9.laravel
9.laravel9.laravel
9.laravel
 
.NET Core
.NET Core.NET Core
.NET Core
 
Conociendo php
Conociendo phpConociendo php
Conociendo php
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones web
 

Destacado

Desarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con TwistedDesarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con Twisted
jjconti
 

Destacado (8)

Buenas Prácticas de Python
Buenas Prácticas de PythonBuenas Prácticas de Python
Buenas Prácticas de Python
 
La Red Slideshare Y Sus Aplicaciones
La Red Slideshare Y Sus AplicacionesLa Red Slideshare Y Sus Aplicaciones
La Red Slideshare Y Sus Aplicaciones
 
Desarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con TwistedDesarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con Twisted
 
Обзор фреймворка Twisted
Обзор фреймворка TwistedОбзор фреймворка Twisted
Обзор фреймворка Twisted
 
¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanban¡A todo Kanban! ~ Introducción a kanban
¡A todo Kanban! ~ Introducción a kanban
 
Sistemas Distribuidos. Diseño e Implementacion
Sistemas Distribuidos. Diseño e ImplementacionSistemas Distribuidos. Diseño e Implementacion
Sistemas Distribuidos. Diseño e Implementacion
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 

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

introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.pptintroduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
ssuser948499
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Socialmetrix
 

Similar a Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios (20)

"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
Barcamp v5 by Jose ToNy Verdin at Culiacan Sinaloa
Barcamp v5 by Jose ToNy Verdin at Culiacan SinaloaBarcamp v5 by Jose ToNy Verdin at Culiacan Sinaloa
Barcamp v5 by Jose ToNy Verdin at Culiacan Sinaloa
 
Documertar APIs - Meetup.js
Documertar APIs - Meetup.jsDocumertar APIs - Meetup.js
Documertar APIs - Meetup.js
 
Patrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración ModernaPatrones de Diseño en la Arquitectura de Integración Moderna
Patrones de Diseño en la Arquitectura de Integración Moderna
 
Moodle: Un ejemplo del modelo de desarrollo y gestión de proyectos open source
Moodle: Un ejemplo del modelo de desarrollo y gestión de proyectos open sourceMoodle: Un ejemplo del modelo de desarrollo y gestión de proyectos open source
Moodle: Un ejemplo del modelo de desarrollo y gestión de proyectos open source
 
SGCE 2014 micro services
SGCE 2014 micro servicesSGCE 2014 micro services
SGCE 2014 micro services
 
Diseñando y operando al estilo DevOps
Diseñando y operando al estilo DevOpsDiseñando y operando al estilo DevOps
Diseñando y operando al estilo DevOps
 
Programación web
Programación webProgramación web
Programación web
 
¿Cómo elegir servidor web?
¿Cómo elegir servidor web?¿Cómo elegir servidor web?
¿Cómo elegir servidor web?
 
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.pptintroduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
 
INTRODUCCION AL LA PROGRAMACION WEB.ppt
INTRODUCCION AL LA PROGRAMACION WEB.pptINTRODUCCION AL LA PROGRAMACION WEB.ppt
INTRODUCCION AL LA PROGRAMACION WEB.ppt
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
 
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
Conferencia MySQL, NoSQL & Cloud: Construyendo una infraestructura de big dat...
 
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
 
Heredia Cms
Heredia CmsHeredia Cms
Heredia Cms
 
Dev ops with Data
Dev ops with DataDev ops with Data
Dev ops with Data
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
 
SOA Open Source
SOA Open SourceSOA Open Source
SOA Open Source
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
 
Tecnologías de hoy y del futuro
Tecnologías de hoy y del futuroTecnologías de hoy y del futuro
Tecnologías de hoy y del futuro
 

Más de Antonio Ognio

Desarrollando con PHP en Windows
Desarrollando con PHP en WindowsDesarrollando con PHP en Windows
Desarrollando con PHP en Windows
Antonio Ognio
 

Más de Antonio Ognio (15)

Organizando una Hackparty
Organizando una HackpartyOrganizando una Hackparty
Organizando una Hackparty
 
Lean Startups
Lean StartupsLean Startups
Lean Startups
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datos
 
Lenguajes y frameworks para desarrollo web
Lenguajes y frameworks para desarrollo webLenguajes y frameworks para desarrollo web
Lenguajes y frameworks para desarrollo web
 
Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010Bases de datos NoSQL - Huancayo - 2010
Bases de datos NoSQL - Huancayo - 2010
 
Desarrollando con PHP en Windows
Desarrollando con PHP en WindowsDesarrollando con PHP en Windows
Desarrollando con PHP en Windows
 
Gestor de paquetes YUM
Gestor de paquetes YUMGestor de paquetes YUM
Gestor de paquetes YUM
 
Twixer (english)
Twixer (english)Twixer (english)
Twixer (english)
 
Twixer
TwixerTwixer
Twixer
 
Mejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - HardeningMejorando la seguridad del servicio SSH - Hardening
Mejorando la seguridad del servicio SSH - Hardening
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de git
 
¿Porqué Python? ...y Django
¿Porqué Python? ...y Django¿Porqué Python? ...y Django
¿Porqué Python? ...y Django
 
Ubuntu Server Edition 9.04 Jaunty Jackalope
Ubuntu Server Edition 9.04 Jaunty JackalopeUbuntu Server Edition 9.04 Jaunty Jackalope
Ubuntu Server Edition 9.04 Jaunty Jackalope
 
Consejos y trucos de supervivencia para nuevos usuarios de GNU/Linux
Consejos y trucos de supervivencia para nuevos usuarios de GNU/LinuxConsejos y trucos de supervivencia para nuevos usuarios de GNU/Linux
Consejos y trucos de supervivencia para nuevos usuarios de GNU/Linux
 
REPLs
REPLsREPLs
REPLs
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

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

  • 1. Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura orientada a servicios Antonio Ognio // aognio@rcp.pe
  • 4.
  • 7. SOA
  • 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
  • 11.
  • 12.
  • 13.
  • 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
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 30.
  • 32. REST
  • 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.
  • 38.
  • 39. ¿Porqué Python? •  Sintaxis sencilla y legible •  Multiparadigma: procedural / OOP / funcional •  Rendimiento aceptable •  Muchos módulos disponibles •  Frameworks: Django / Tornado
  • 40.
  • 41.
  • 42. Servicios •  Usuarios (registro, SSO, perfil unificado, etc) •  Blogs •  Comentarios •  Puntos (Gamification) •  Contenido editorial •  Búsqueda
  • 43. 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)
  • 45.
  • 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?
  • 47. Apdex
  • 49.
  • 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