WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios

Post on 15-Jul-2015

451 views 6 download

Transcript of WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios

Last Updated: Apr 2015

WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios

2

AGENDA

• Introducción• WSO2, Chakray

• Exponiendo Servicios Complejos del ESB en un API REST• Veremos un ejemplo y hablaremos del patrón de fachada API

• OAuth 2.0, su implementación en API Manager• Veremos su implementación y hablaremos de seguridad API

• Los 5 secretos mejor guardados del API Manager, que deberías conocer.• Relacionaremos 5 peculiaridades muy interesantes y poco conocidas.

• Velocidad y escalamiento / alta disponibilidad• Realizaremos alguna prueba en directo de velocidad.

• Preguntas y Respuestas.

SanjivaWeerawarana

Hola? Somos

MMVenture Capital$30

3

4

Una plataforma completa para crear negócios conectados

4

Mountain View,

California, USA

BloomingtonIndiana, USA

London,United

Kingdom

Colombo,Sri Lanka

São Paulo,Brazil

Oficinas

5

Equipo500+

6

Publication Category WSO2 Year

Gartner Magic Quadrant for Enterprise Application Platform as a Service Visionary 2014

Gartner Magic Quadrant for Application Services Governance Visionary 2013

Gartner Magic Quadrant for On-Premises Application Integration Suites Visionary 2013

Gartner Magic Quadrant for On-Premises Application Platforms Visionary 2013

The Forrester Wave API Management Platforms, Q1 Leader 2013

Gartner Magic Quadrant for Systematic SOA Application Projects Visionary 2012

Gartner Magic Quadrant for Systematic Application Integration Projects Visionary 2012

Gartner Magic Quadrant for SOA Infrastructure Projects Visionary 2012

The Forrester Wave Integrated SOA Governance, Q1 Strong Performer 2012

The Forrester Wave SOA Service Life-Cycle Management, Q1 Strong Performer 2012

The Forrester Wave Standalone SOA Management Solutions, Q4 Strong Performer 2011

Gartner Magic Quadrant for SOA Governance Technologies Visionary 2011

The Forrester Wave Enterprise Service Bus, Q2 Leader 2011

Presencia en estudiosdel Mercado

7

+ de 250 Clientes

8

9

• "Enfoque brillante, amor a la modularidad, lo que permite una gran flexibilidad. Estamos muy contentos de estar trabajando con WSO2 "- Jim Crabbe, Senior Product Manager, Boeing

• "La extrema capacidad de soporte, es lo que nos cautivó con WSO2" - Prakash Iyer, Vicepresidente del Software Arquitectura y Estrategia, CIO, Trimble.

• “Con el uso de WSO2 ESB, habíamos sido capaces de proporcionar a los clientes y nuestors socios la calidad y experiencia que esperan de eBay" -Abhinav Kumar, Gerente senior de Ingeniería de Sistemas en eBay.

¿Y los clientes, que dicen?

10

Introducción

Jack A. RiderPrincipal Software Architect & Consultant

Integration, Open Source, BPM, ECM, Portals

jack.rider [at] chakray.com

España +34 667770067

UK +44 (0) 7474742263

11

Introducción

• Grupo de consultores sénior enfocados en integración con WSO2

• Preferred Partner con presencia en Europa y Sudamérica.

• Especializado en servicios a integradoras.

• Suministra Training oficial on-line y presencial.

12

Introducción

CHAKRAY : “Palabra Quechua que describe el buen uso que en el mundo Andino se le ha dado a la Tecnología para el trabajo con la tierra.”

Aportar la excelencia en la planificación, implantación , soporte y formación desistemas críticos WSO2

Misión:

Visión: • Ser una empresa de alta especialización sobre sistemas críticos WSO2.

• Sabemos que el principal activo es nuestro equipo.

• Sabemos colaborar con todos los “Stakeholders“ del proyecto dando soporte de muy alta calidad a los negocios de sus clientes, gestionando y evolucionando sus Sistemas de Información.

13

Exponiendo Servicios del ESB en un API REST

• Breve Ejemplo de cómo exponer servicios

14

Exponiendo Servicios del ESB en un API REST

• Patrón de Fachada• Las fachadas nos protegen de la complejidad de las implementaciones internas

• Nos proveen de interfaces mas simples

• Proporcionan una coherente y superior experiencia de usuario.

• En nuestro caso además libera al desarrollador de preocupaciones como

• Gestionar la autorización a los consumidores

• Controlar su monitorización, monetización.

• Control en la limitación de uso (throttling)

• Simplifica la gestión del versionado

• Etc. Etc.

Wikimedia Commons

WSO2 Blogs : A pragmatic approach to the API facade-patternWSO2 Blogs : implementing an api façade with the wso2 API management platform

15

OAuth 2.0, implementación en API Manager

• La API es creada y publicada• Se crea la Aplicación• Se generan los Tokens• Las APIs son subscritas en la Aplicación• El consumidor obtiene el “Authorizacion Grant”• El consumidor obtiene el “Access Token”• El consumidor accede al recurso

OAuth (Open Authorization)

es un protocolo abierto,

propuesto por Blaine

Cook y Chris Messina, que

permite autorización segura

de una API de modo

estándar y simple para

aplicaciones de escritorio,

móviles y web.

Aplicación cliente

Dueño del Recurso

Servidor de Autorizaciones

Servidor de Recursos

Authorization Request

Authorization Grant

Authorization Grant

Access Token

Access Token

Resource

https://tools.ietf.org/html/rfc6749 http://es.wikipedia.org/wiki/OAuth

16

OAuth 2.0, implementación en API Manager

Dueño del Recurso

Servidor de Autorizaciones

Servidor de Recursos

Authorization Request

Authorization Grant

Authorization Grant

Access Token

Access Token

Resource

Store y Key Manager

API Gateway

PublisherPublica APIs

Çheck Access Token

Crea Apps & Subscribe a APIs

Publish APIs

Resources

Publish APIs

Desarrollador

Aplicación cliente

17

OAuth 2.0, implementación en API Manager

PublisherPublishes APIs

Desarrolador1.- Logarse al Publisher:

2.- Añadir API.

18

19

OAuth 2.0, implementación en API Manager

Dueño del recurso Store y

Key Manager

Aplicación Cliente

Creates Apps & Subscribes

to APIs

1.- Logarse al Store

2.- Añadir/Crear Aplicación

3.- Generar Subscription Keys

20

OAuth 2.0, implementación en API Manager

Dueño del Recurso Store y

Key Manager

Aplicación Cliente

Creates Apps & Subscribes

to APIs

1.- Seleccionar API

2.- Seleccionar Application

3.- Pulsar “Subscribe”

21

OAuth 2.0, implementación en API Manager

Servidor de Autorizaciones

Store y Key

Manager

AplicaciónCliente

Authorization Grant

Authorization Token

1.- Codificar B64 “Consumer key : Secret”

2.- Enviar Solicitud de Autorizacion

Consumer Key Consumer Secret B64 Encoded (Consumer key:Consumer Secret)

cfB4G2UpNPXThsiPLWnj0iFdv8wa C8ygxh9d3qtTaaW2fhyAobWazY2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh

Request:

curl -k -v -d "grant_type=password&username=admin&password=admin" -H "Authorization: Basic Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh, Content-Type: application/x-www-form-urlencoded" https://localhost:8243/token

Response:{"scope":"default","token_type":"Bearer","expires_in":3299,"refresh_token":"35328bcc6b129e7c0d88b46fba0d7cd","access_token":"e6c0981142da2d806a8d397f9534a52"}

22

OAuth 2.0, implementación en API Manager

1.- Enviar petición con Bearer Header

Access Token

C8ygxh9d3qtTaaW2fhyAobWaz

Request: curl -v -X GET -H "Authorization: Bearer e6c0981142da2d806a8d397f9534a52" "http://localhost:8280/return_json/red"

Response: { "color_response": { "name": "red" }}

Servidor de Recursos

API Gateway

Aplicación Cliente

Authorization

Request

Authorization Grant

Key Manager

Resources

23

OAuth 2.0, implementación en API Manager

1.- Enviar petición con Bearer Header

Access Token

C8ygxh9d3qtTaaW2fhyAobWaz

Request: curl -v -X GET -H "Authorization: Bearer e6c0981142da2d806a8d397f9534a52" "http://localhost:8280/return_json/red"

Response: HTTP/1.1 401 Unauthorized <ams:message>Access Token Expired</ams:message>

Servidor de Recursos

API Gateway

Aplicación Cliente

Authorization

Request

Authorization Grant

Key Manager

24

OAuth 2.0, implementación en API Manager

Servidor de Autorización

AplicaciónCliente

Store y Key

Manager

Authorization

Refresh

Authorization Token

New Refresh Token New Access Token

7b32865471a287a2a3ba8fd2220b1 c13e34f5acda279e862f4f6c7151f058

1.- Codificar B64 “Consumer key : Secret”

2.- Enviar petición Authorization Refresh.

Refresh Token B64 Encoded (Consumer key:Consumer Secret)

35328bcc6b129e7c0d88b46fba0d7cd Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh

Request:

curl -k -v -d "grant_type=refresh_token&refresh_token=35328bcc6b129e7c0d88b46fba0d7cd" -H "Authorization: Basic Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh, Content-Type: application/x-www-form-urlencoded" https://localhost:8243/token

Response:{"scope":"default","token_type":"Bearer","expires_in":3600,"refresh_token":"7b32865471a287a2a3ba8fd2220b1","access_token":"c13e34f5acda279e862f4f6c7151f058"}

25

OAuth 2.0, implementación en API Manager

Servidor de Autorización

Store y Key

Manager

AplicaciónCliente

Authorization

Refresh

Authorization Token

1.- Codificar B64 “Consumer key : Secret”

2.- Enviar Petición “Token revoke”

Refreshed Access Token B64 Encoded (Consumer key:Consumer Secret)

c13e34f5acda279e862f4f6c7151f058 Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh

Request:

curl -k -d "token=c13e34f5acda279e862f4f6c7151f058" -H "Authorization: Basic Y2ZCNEcyVXBOUFhUaHNpUExXbmowaUZkdjh3YTpDOHlneGg5ZDNxdFRhYVcyZmh5QW9iV2F6dElh" https://localhost:8243/revoke

Response: NO RESPONSE

26

Los 5 secretos mejor guardados del API Manager

• Templates• Los templates son las plantillas Velocity que se encargan de generar el código Synapse desde nuestras

definiciones en el Publisher.

• Respuesta Javascript• Podemos definir APIs que directamente ejecuten código javascript en vez de llamar a un EP.

• Los builders y los formatters• Esto son clases que se ejecutaran en el proceso de entrada y salida del mensaje dependiendo del

“contenType”. Sirven por ejemplo para validar el contenido de los mensajes antes de procesarlo.

• Servicios web nativos que expone el API Manager• Al igual que otros productos de WSO2, API Manager expone servicios web que pueden ser utilizados

desde herramientas externas. Por ejemplo podemos con “cURL” o “SoapUI” publicar un API.

• SoapUI Plugin • http://smartbear.com/news/news-releases/wso2-as-api-integration-partner/

27

Los Templates

• Los Templates son las plantillas Velocity que se encargan de generar el código Synapse desde nuestras definiciones en el Publisher.

• Velocity (https://velocity.apache.org) es un sencillo motor de plantillas basado en Java

• Mediante su edición podemos automatizar la customización de nuestras APIs.

• Podemos añadir nuevos handlers.

• modificar comportamientos por defecto.

• En resumen tener control sobre la generación de nuevas APIs desde el Publisher.

• Veamos un template. [API-HOME]/repository/resources/api-templates

28

Respuesta Javascript

• El API Publisher permite definir “in-line” una respuesta Javascript a las peticiones recibidas.

• Es una solución rápida, sencilla y elegante a funcionalidades básicas.

• Ejemplo de Javascript por defecto:

mc.setProperty('CONTENT_TYPE', 'application/json'); var body = mc.getProperty('uri.var.body');mc.setPayloadJSON('{ "data" : "sample JSON"}');

29

Los builders y los formatters

•Clases que se ejecutaran en el proceso de entrada y salida del mensaje dependiendo del “contentType”.

• Nos permite validar los payload de entrada y formatear los de salida, dependiendo del “contentType” del mensaje.

• Son funcionalidades provistas por el motor de web services de AXIS2 que nos van proporcionar control sobre los tipos de payload que recibimos y emitimos.

• Ver:

• https://docs.wso2.com/display/ESB480/Working+with+Message+Builders+and+Formatters

• http://axis.apache.org

• Veamos como esta definido por defecto [AM-HOME]/repository/conf/axis2/axis2.xml

30

Servicios web nativos del API Manager

•API Manager expone servicios web que pueden ser utilizados desde herramientas externas.

• Por ejemplo podemos con “cURL” o “SoapUI” publicar un API

• La plataforma Carbon, básicamente permite hacer cualquier operación que podamos realizar con la consola, a través de servicios web.

• Cambiar a “false” en carbon.xml el valor de “<HideAdminServiceWSDLs>”

• Acceder a: https://localhost:9443/services/UserAdmin?wsdl

• Y 15 servicios mas: ServerAdmin, LoginStatisticsAdmin, etc.

• En el caso del API Manager, además podemos acceder a los servicios que proporciona Jaggery (http://jaggeryjs.org), con los que están construidos el Publisher y el Store.

• Los ejemplos por excelencia, podemos encontrarlos en el paquete por defecto que nos descargamos de WSO2.

• [AM-HOME]/samples/YoutubeFeeds.jag

31

API Plugin

•Smartbear, la compañía creadora de SoapUI, es desde marzo del 2015, WSO2 API Integration Partner.

•La compañia a desarrollado un Nuevo plugin quepermite a los usuarios importer APIs desde el WSO2 API Manager a su familia de productos, Ready! API.

• http://smartbear.com/news/news-releases/wso2-as-api-integration-partner/

• http://smartbear.com/product/ready-api-family/overview/

32

Velocidad y escalamiento / alta disponibilidad

•Un mensaje en formato JSON/REST puede llegar al API Manager, ser despachado al ESB, transformarse en XML/SOAP y ser

devuelto en ¡¡menos de 4 milisegundos!!. (en mi portátil)

33

Velocidad y escalamiento / alta disponibilidad

•Demostración.

• 2 Maquinas virtuales

• CentOS 6.5 Desktop 64 bit, RAM 3296m. 1 CPU

• 192.168.43.102 API Manager y Jmeter

• 192.168.43.101 ESB

34

Velocidad y escalamiento / alta disponibilidad

•Resultados

•Tiempos bajos de respuesta sostenidos

• Insignificantes tiempos de latencia entre API M. y ESB

35

Preguntas y Respuestas