advancing integration competency and excellence with the wso2 integration platform n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Advancing Integration Competency and Excellence with the WSO2 Integration Platform PowerPoint Presentation
Download Presentation
Advancing Integration Competency and Excellence with the WSO2 Integration Platform

Loading in 2 Seconds...

play fullscreen
1 / 54

Advancing Integration Competency and Excellence with the WSO2 Integration Platform - PowerPoint PPT Presentation


  • 185 Views
  • Uploaded on

Advancing Integration Competency and Excellence with the WSO2 Integration Platform. Kasun Indasiri Software Architect, WSO2 Miyuru Wanninayaka Technical Lead, WSO2. Agenda. Fundamentals of WSO2 ESB Cloud Connectors RESTful Integration Cloud Connector – Scenarios

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Advancing Integration Competency and Excellence with the WSO2 Integration Platform' - trish


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
advancing integration competency and excellence with the wso2 integration platform

Advancing Integration Competency and Excellence with the WSO2 Integration Platform

KasunIndasiri

Software Architect, WSO2

MiyuruWanninayaka

Technical Lead, WSO2

agenda
Agenda
  • Fundamentals of WSO2 ESB
  • Cloud Connectors
  • RESTful Integration
  • Cloud Connector – Scenarios
  • RESTful Integration – PizzaShop Scenario
  • Discussion
software in enterprise
Software in Enterprise
  • Large enterprises have many software systems in their “line of business”
    • Enterprise Resource Planning systems (ERP)
    • Management Information Systems (MIS)
    • Decision Support Systems (DSS)
    • Data stores
    • Legacy systems
  • These systems are often independent and controls one or more related business activities
  • But they are all parts of a single business process
need for enterprise integration
Need for Enterprise Integration
  • Individual software applications cannot achieve much
  • Systems should be integrated to work together
    • Enables free data flow across the organization
    • Improves production and management efficiency
    • Application users can make better decisions
easier said than done
Easier Said Than Done!
  • Integrating a multitude of complex software applications is no child's play
  • Systems are diverse
    • Different platforms
    • Different programming languages
    • Different protocols and messaging standards
    • Different QoS requirements
    • Not everyone adhere to standards
what is an esb
What is an ESB?
  • A piece of software that resembles a data bus used in computers
  • Provides a uniform approach for connecting systems
  • Monitor and control routing of message exchange between services
  • Software applications communicate via the bus
  • The service bus acts as a carrier or a message broker
  • Replaces direct contact between applications – Reduces coupling

http://en.wikipedia.org/wiki/Enterprise_service_bus

wso2 enterprise service bus
WSO2 Enterprise Service Bus
  • A lightweight, high performance ESB
  • Configuration driven over coding
  • REST, SOAP and WS-* support
  • Domain specific protocol support (eg: SAP, FIX)
  • Extensible to support custom protocols / message formats
  • Cloud enabled
  • Supports all EIP patterns

http://www.eaipatterns.com

routing
Routing
  • Simple proxy
  • Header-based Routing
  • Content-based Routing
  • XPath/Property/Regular Expression
  • Rules
  • If/Then/Else
  • Router mediator for complex routing
traffic filtering
Traffic Filtering
  • Xpath and regex based filtering
  • Script based filtering
  • Schema based filtering and validation

<id>foo</id>

<id>bar</id>

<id>foo</id>

<id>bar</id>

service orchestration
Service Orchestration
  • Service chaining
  • Split/Aggregate/
  • Clone/Merge
  • Parallel/Serial execution
  • If/Then/Else
transformation
Transformation
  • XSLT
  • Payload Factory
  • Smooks
  • XQuery
protocol message format switching
Protocol & Message Format Switching
  • Message Formats
    • SOAP, REST, JSON, Binary
  • Protocols
    • HTTP(S), JMS, VFS(File), TCP, SAP, FIX, HL7, SMTP
qos security throttling caching
QoS : Security, Throttling, Caching
  • WS-Security / REST Security
  • Throttling
    • Concurrency
    • Rate
  • Caching
    • Local
    • Replicated
    • Suitable for idempotent operations
rest capabilities
REST Capabilities
  • Expose any service as RESTful APIs
  • URL Mapping
  • URL Templates

REST

http://www.infoq.com/articles/webber-rest-workflow

http://wso2.org/library/articles/2012/09/get-cup-coffee-wso2-way/

store and forward
Store and Forward
  • Store incoming request in message store
    • In memory, JMS queue, Database
  • Forward to backend using message processor
  • Guaranteed delivery

Message Store

mediator

Configuration Data

Mediator

Input Message

Output Message

sequences
Sequences
  • A sequential arrangement of mediators – A mediator chain
  • When a message is handed to a sequence it is given to the first mediator of the chain - The outcome of that will be handed to the second mediator of the chain and so on…
  • The messages are sent through the chain while mediators perform various actions on it along the way
  • Pipelining
more on sequences
More on Sequences…

Consider the example sequence shown above

Messages are first logged by the log mediator

The property mediator sets a property on the messages

Then they are sent to a specified endpoint by the send mediator

It is a simple log-and-forward message flow

endpoints
Endpoints
  • Defines an endpoint reference (EPR) to which messages can be sent/forwarded from the ESB
    • The send mediator takes an endpoint as an argument
  • Various operational constraints can be enforced on an endpoint
    • Timeout duration
    • Message format (POX, SOAP 1.1, SOAP 1.2)
  • QoS expectations can be set on an endpoint
    • WS-Security
proxy services api
Proxy Services / API

Acts like a virtual service that can receive requests from clients

Received client requests are processed and routed to a specified endpoint (usually to an actual service – backend service)

Responses coming back from the backend service are further processed and forwarded to the clients

Resembles traditional HTTP proxy servers

slide34

Templates

  • With complex business requirements, ESB config can grow bigger..
  • Need a way to reuse the configuration
  • WSO2 ESB 4.0 introduces – Templates
  • An analogy… classes vs instances
slide35

Templates

  • Sequence Templates

<template xmlns="http://ws.apache.org/ns/synapse" name="xslt_func">

<parameter name="xslt_key"/>

<sequence>

<log level="full">

<property name="BEFORE_TRANSFORM" value="true"/>

</log>

<xslt key="{$func:xslt_key}"/>

<log level="full">

<property name="AFTER_TRANSFORM" value="true"/>

</log>

</sequence>

</template>

templates
Templates
  • Call Template Mediator – Invoking a Template

<inSequence>

<call-template target="xslt_func">

<with-param name="xslt_key" value="xslt-key-req"/>

</call-template>

<send>

<endpoint>

<address uri="http://localhost:9000/Foo"/>

</endpoint>

</send>

</inSequence>

wso2 esb cloud connectors3
WSO2 ESB Cloud Connectors
  • Cloud to Enterprise
cloud connector architecture
Cloud Connector Architecture
  • Objectives
    • Connect with any cloud API
    • Supporting diverse APIs (REST, SOAP, SDKs)
    • Dynamic configuration (No predefined configuration language)
    • Development methodology (config, java code, javascript, pojo)
    • Reduce development time(100+ connectors)
    • Dynamic Tooling with DevStudio
    • Performance
dynamic synapse configuration based on templates
Dynamic Synapse Configuration based on Templates
  • WSO2 ESB config language is predefined
    • Mediator Factories and Serializers
      • Eg: Property Mediator Serializer/Factory
    • So, dynamic synapse config language is not possible?
  • Custom Mediators/Mediator per each connector?
    • Won’t scale and it will be tedious task to write a connector
  • A new approach…
    • Inspired from Templates and Mediation Library
structure of a cloud connector
Structure of a Cloud Connector
  • Connector Structure
    • A connector can have
      • Synapse config as templates
      • Custom Mediators
      • External Libararies (eg: twitter4j)
      • Java Script (or any other scripting lang.)
    • Connector Deployer
    • Loading required libraries
structure of a cloud connector1
Structure of a Cloud Connector

Templates

External Libs

Connector custom code

new secure vault
New Secure Vault
  • No hardcoded secrets or passwords in the ESB Config
  • wso2:vault-lookup

<twitter.config>

<consumerSecret>xx</consumerSecret>

<accessTokenSecret>{wso2:vault-lookup('my_secret')}</accessTokenSecret>

<accessToken>{wso2:vault-lookup('my_token')}</accessToken> <consumerKey>{wso2:vault-lookup('my_key')}</consumerKey>

</twitter.config>

cloud connectors use case i
Cloud Connectors – Use Case (I)
  • Salesforce + Twilio – Lead Generation
cloud connectors use case ii
Cloud Connectors – Use Case (II)
  • Salesforce + Google Spread Sheet – Opportunity Management
cloud connectors use case iii
Cloud Connectors – Use Case (III)
  • Salesforce + JIRA + Twilio – Account Management
cloud connectors use case iv
Cloud Connectors – Use Case (IV)
  • Twitter + Salesforce – Lead Monitor
advanced restful integration
Advanced RESTful Integration
  • HTTP Endpoint

<endpoint xmlns="http://ws.apache.org/ns/synapse" name=“PizzaShopJaxRS">

<http uri-template= "http://localhost:8080/{uri.var.servicepath}/restapi/{uri.var.servicename}/menu?category={uri.var.category}&amp;type={query.param.type}"

method="GET">

</http>

</endpoint>

advanced restful integration1
Advanced RESTful Integration
  • JSON Payload Factory

<payloadFactory media-type="json">

<format>{"purchaseInformation": {"amount": "$1","cc": "$2"}}

</format>

<args>

<arg evaluator="json" expression="$.payment.amount_lkr">

</arg>

<arg evaluator="json" expression="$.payment.card_no">

</arg>

</args>

</payloadFactory>