wso2 integration platform deep dive eu con 2016

72
WSO2 Integration Platform Deep Dive Chanaka Fernando - Senior Technical Lead Ramith Jayasinghe - Senior Technical Lead

Upload: chanaka-fernando

Post on 12-Apr-2017

70 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Wso2 integration platform deep dive   eu con 2016

WSO2 Integration Platform Deep Dive

Chanaka Fernando - Senior Technical Lead

Ramith Jayasinghe - Senior Technical Lead

Page 2: Wso2 integration platform deep dive   eu con 2016

Agenda

• Concepts in Integration• Demonstration• Product roadmaps/features• Q&A

Page 3: Wso2 integration platform deep dive   eu con 2016

Evolution of Integration

Point to Point Integration● Custom code, data formats for

majority of integration ( data extraction, business rule processing, data loading)

● Costly over time (maintenance, complexity)

● Tight Coupling

● Scalability is an issue

● Less reusability

Page 4: Wso2 integration platform deep dive   eu con 2016

Evolution of Integration

Use of Enterprise Service Bus ● Consistency: Clear set of guidelines (EIPs) results in repeatable and successful integration efforts/projects.

● Reusability: Tested and preconfigured components provides repeatable approach to integration.(transports/connectors/mediators etc)

● Effectiveness: A common integration framework (with related abstract concepts) improves integration developer's productivity.

Page 5: Wso2 integration platform deep dive   eu con 2016

Connected Business

An internally and externally connected business.

Image courtesy hRp://jdamico.net/wp-content/uploads/2010/04/collaborate-with-B2B-channel-partners.jpg

ESB were used to connect internal systems in the past.

Current need is to connect internal/external parties quickly and flexible manner.

E.g. Employees, Internal/External systems, Partners, Customers.

Page 6: Wso2 integration platform deep dive   eu con 2016

Connected Business

Integration is a key factor for having frictionless interactions, inside and outside the organization.

Page 7: Wso2 integration platform deep dive   eu con 2016

Integration and APIs - The Close Cousins

• APIs cannot replace Integration

– Integration of internal services, systems, data and cloud apis

• Cannot mangle SOA for API Management needs

• Using SOA and API in combination is the key to success of

Connected Business.

Page 8: Wso2 integration platform deep dive   eu con 2016

Integration and APIs - The Close Cousins

Page 9: Wso2 integration platform deep dive   eu con 2016

WSO2 Integration + API Management Platform

In practise API management and integration co-exists providing flexible, faster ways to connect required parties such as users, internal/external systems, employees etc.

Page 10: Wso2 integration platform deep dive   eu con 2016

WSO2 Integration Platform

Page 11: Wso2 integration platform deep dive   eu con 2016

Fundamentals of WSO2 ESB

Message Processing units- Sequences, mediators

Message entry points- Proxy Services, APIs, Inbound

endpoints.Message exit points

- Endpoints

Page 12: Wso2 integration platform deep dive   eu con 2016

Mediators

Page 13: Wso2 integration platform deep dive   eu con 2016

Example MediatorsName Description

Log Mediator Logs full or part of the message, at various severity levels ( Trace, Debug, etc)

Sequence Mediator Invokes existing sequence - Sequence name can be static or dynamic

Send Mediator Sends a message out, using static information or endpoint definition.

Datamapper Mediator Transform data from one form to another

Switch Mediator Evaluates messages contents against regular expression and invokes the corresponding mediator (switch-case-default)

Validate Mediator Validates message or parts of message against XML schema (schema can be local or in registry)

PayloadFactory Mediator Create a message payload from an existing message or from scratch

Fault Mediator Transforms current message into custom Fault message

Page 14: Wso2 integration platform deep dive   eu con 2016

Mediators

• Transformation Mediators• Filters, Switches, Iterate, Aggregate, Clone• Property Mediator• Script Mediators• Custom Mediators

Page 15: Wso2 integration platform deep dive   eu con 2016

Connectors

• A connector is a ready made and convenient

tool to reach publicly available web API’s.

• ‘Cloud to Cloud’ and ‘Cloud to Enterprise’

Integration

• ESB Connector Store : https://store.wso2.com/

Page 16: Wso2 integration platform deep dive   eu con 2016

Connectors

• Every connector is self-contained and independent from ESB code

• Dynamically plug in to ESB• Dynamic Tooling support with WSO2 Developer

Studio• You can write, ‘your own connector’ and just plug it

in

Page 17: Wso2 integration platform deep dive   eu con 2016

Sequences

Page 18: Wso2 integration platform deep dive   eu con 2016

Fundamentals of WSO2 ESB

Message Processing units- Sequences, mediators

Message entry points- Proxy Services, APIs, Inbound

endpoints.Message exit points

- Endpoints

Page 19: Wso2 integration platform deep dive   eu con 2016

Proxy Service

• Acts like a virtual service.

• Receives messages and mediates

them before sending them to the

endpoint (usually an actual

service)

• Mainly to expose as SOAP Service

Page 20: Wso2 integration platform deep dive   eu con 2016

API/HTTP Service

• APIs can accept REST messages which allow clients

to provide additional information on how to

mediate the message

• Defined under a URL Context (e.g: /customer)

• Can define multiple resources under a URL context

• Resources

– Component of API accessed through HTTP call

– Similar to proxy service (in, out, and fault

sequences)

– Can restrict resource’s scope using URL

patterns and URI templates

Page 21: Wso2 integration platform deep dive   eu con 2016

API/HTTP Service

• URL mapping

– Path mappings (eg: /test/*, /foo/bar/*)

– Extension mappings (eg: *.jsp, *.do)

– Exact mappings (eg: /test, /test/foo)

• URI template

– /order/{orderId} would process /order/A0001

– /dictionary/{char}/{word} would process /dictionary/c/cat

– Use get-property to retrieve exact values

<log level="custom">

<property name="Character" expression="get-property('uri.var.char')"/>

<property name="Word" expression="get-property('uri.var.word')"/>

</log>

Page 22: Wso2 integration platform deep dive   eu con 2016

Inbound Endpoint

• Creating inbound messaging channels

dynamically.

– Listening Inbound – HTTP, HL7, TCP

– Polling Inbound – JMS, File/VFS

• Injects the inbound messages into an ESB message flow.

Page 23: Wso2 integration platform deep dive   eu con 2016

Polling Inbound endpoint in a Cluster

One Consumer Multiple Consumers

Page 24: Wso2 integration platform deep dive   eu con 2016

Fundamentals of WSO2 ESB

Message Processing units- Sequences, mediators

Message entry points- Proxy Services, APIs, Inbound

endpoints.Message exit points

- Endpoints

Page 25: Wso2 integration platform deep dive   eu con 2016

Endpoints

• Logical representation of one or more real backend

service, jms queue etc.

• Address, HTTP Endpoints – A logical endpoint for an

existing BE service

• Load balancing / Failover – Group of endpoints for

existing BE services

Page 26: Wso2 integration platform deep dive   eu con 2016

Message Store and Message Processor

• Asynchronous/One-way Messaging, JMS

• Store and forward

• Guaranteed Delivery and Rate matching

• JMS Message broker as the persistence store – WSO2 MB, Apache

Active MQ etc.

Page 27: Wso2 integration platform deep dive   eu con 2016

Message Processor in a Cluster

• One consumer per cluster – Guaranteed in-order delivery

• Multiple consumers – Guaranteed delivery

One Consumer Multiple Consumers

Page 28: Wso2 integration platform deep dive   eu con 2016

Tasks

• Allow configuration of scheduled jobs to execute internal/external

commands

• Inject a message into a proxy service or a named sequence

Page 29: Wso2 integration platform deep dive   eu con 2016

Service Chaining

• Orchestrating/Combining multiple Services

Page 30: Wso2 integration platform deep dive   eu con 2016

Load Balancing

Page 31: Wso2 integration platform deep dive   eu con 2016

Enterprise Integration Patterns

https://docs.wso2.com/display/IntegrationPatterns/Enterprise+Integration+Patterns+with+WSO2+ESB

Page 32: Wso2 integration platform deep dive   eu con 2016

Tooling Support for WSO2 ESB

Page 33: Wso2 integration platform deep dive   eu con 2016

WSO2 ESB 5.0 – Upcoming release

• Beta version is available (Released on May 2016)

• Improved usability of the ESB through debugging, data mapping capabilities through developer studio tooling

• The product is released as a tuple of runtime, analytics and tooling

• Dedicated analytics distribution(DAS) for ESB specific monitoring with pre built dashboards

Page 34: Wso2 integration platform deep dive   eu con 2016

WSO2 ESB 5.0 – Statistics/Tracing

• Coarse grained statistics about proxy/sequence/api/endpoint

Page 35: Wso2 integration platform deep dive   eu con 2016

WSO2 ESB 5.0 – Statistics/Tracing

• Fine grained statistics/tracing on mediators (message level)

Page 36: Wso2 integration platform deep dive   eu con 2016

WSO2 ESB 5.0 – Statistics/Tracing

• Fine grained tracing on messages

Page 37: Wso2 integration platform deep dive   eu con 2016

WSO2 ESB 5.0 – Visual Data Mapper

• Visual Data mapper– Different input/output options (XML, JSON, Files, Schemas)

– Apply functions while mapping the data (Split, Aggregate, Uppercase, Lowercase)

Page 38: Wso2 integration platform deep dive   eu con 2016

WSO2 ESB 5.0 – Mediation debugger

• Debug mediation flows from the Developer studio

Page 39: Wso2 integration platform deep dive   eu con 2016

WSO2 ESB – What’s new in 5.0

Other new features

• JMS 2.0 support

• Websocket support

• JMS distributed(XA) transaction support

• Rabbitmq/MQTT performance improvements

Page 40: Wso2 integration platform deep dive   eu con 2016

WSO2 Integration Cloud (Upcoming)

Page 41: Wso2 integration platform deep dive   eu con 2016

WSO2 Integration Cloud (Upcoming)

Integration Platform as a Service (iPaaS)

• Running integrations on the cloud

• Analytics integration

• Develop integrations using WSO2 Developer studio

Page 42: Wso2 integration platform deep dive   eu con 2016

WSO2 Integration Platform

Page 43: Wso2 integration platform deep dive   eu con 2016

Business Processes

Page 44: Wso2 integration platform deep dive   eu con 2016

WSO2 Business Process Server

• BPMN 2.0• WS-BPEL 2.0• WS-HumanTask 1.1• BPEL4People

● Define and execute business processes

● Define workflows interacting with People

● Graphical process modeling/administration/monitoring

Page 45: Wso2 integration platform deep dive   eu con 2016

Human Task Support

Page 46: Wso2 integration platform deep dive   eu con 2016

WSO2 Business Rules Server

● Integrates JSR94 compliant rule engines.

● Embed drools engine.

Page 47: Wso2 integration platform deep dive   eu con 2016

WSO2 Integration Platform

Page 48: Wso2 integration platform deep dive   eu con 2016

Fundamentals of WSO2 Message Broker

Messaging Models● RPC Style

- Request/Response (there is always a response)- Synchronous (client waits for response)- Non-persistent (message is lost if something failed)

● Point to Point (Queues)- A message is delivered only once to a single Broadcast a

message to all the subscribers● Publish/Subscribe (Topics)

- Broadcast a message to all the subscribers

Page 49: Wso2 integration platform deep dive   eu con 2016

Fundamentals of WSO2 Message Broker

Messaging Models

● Publish/Subscribe (Topics)- Broadcast a message to all the subscribers

● Durable Subscriptions- Same as topic subscriptions- Subscriber offline - Messages get queued- Subscriber back online - Messages get delivered- Unsubscription needed to remove queuing

Page 50: Wso2 integration platform deep dive   eu con 2016

Fundamentals of WSO2 Message Broker

● Transactional- Send/Receive multiple messages in a transactions.- ( send/consume -> rollback, reject, commit)

● Guaranteed Delivery/Acknowledgments , QOS ( MQTT, JMS).● Persistence

- Messages kept in memory or in reliable storage.

Page 51: Wso2 integration platform deep dive   eu con 2016

Fundamentals of WSO2 Message Broker● Dead letter channel

- Broker keeps invalid/rejected messages in this channel.- Users can inspect/reroute/delete these messages.

● Hierarchical topics

- Map relationships between data being published onto different topics.

- Can Subscribe to part of the hierarchy.

Games.* - receives messages published to ‘Games.FootBall’

and ‘Games.Cricket’

Games.Cricket.# - Receives messages published to

‘Games.Cricket.SriLanka’ and ‘Games.Cricket.UK’

Page 52: Wso2 integration platform deep dive   eu con 2016

Fundamentals of WSO2 Message Broker

Distributed Queues

● Provides strict or best effort support for inorder delivery

● There are no guarantee about the global order seen across subscribers

Page 53: Wso2 integration platform deep dive   eu con 2016

Fundamentals of WSO2 Message Broker

Distributed Queues with MB

● Provides strict or best effort support for inorder delivery

● There are no guarantee about the global order seen across subscribers

● Supported Protocols AMQP/JMS, MQTT

Page 54: Wso2 integration platform deep dive   eu con 2016

MB Roadmap

• Support for AMQP 1.0 and JMS 2.0

• Improvements to Storage Scheme, Performance improvements

• Analytics for MB

• C5 migration

• Improved GUI

• MQTT + Websockets

Page 55: Wso2 integration platform deep dive   eu con 2016

WSO2 Integration Platform

Page 56: Wso2 integration platform deep dive   eu con 2016

Introducing WSO2 Data Services Server

Painpoints: ● Application Silos / Different data

stores● Cumbersome data access/

transformation logic● Business logic vs Data access logic● Repetitive Code

DSS:● Well defined interfaces (standard based)● Encapsulated data logic● Configuration driven● Loose Coupling between App & Data stores● Scale as a separate architectural layer.

Page 57: Wso2 integration platform deep dive   eu con 2016

WSO2 Data Services Server : Features

• Multiple Data Sources

• Nested Queries

• Batch Processing

• Distributed Transactions

• OData (www.odata.org)– Quickly expose data as REST APIs

– Standardized [URL conventions, Request/Response Headers,

Status Codes ,Payload formats]

Page 58: Wso2 integration platform deep dive   eu con 2016

Demonstration - Use Case

• As part of an effort to improve traffic monitoring process, City transport authorities are making buses to send useful information while it's in operation such as speed, location data and direction.

• To ensure safety of passengers, officials would like to detect bus drivers who violate speed limits. Supervisors will investigate these incidents case-by-case basis.

• If a supervisor determines a particular incident is undue, bus driver will be placed under further investigation/review.

Page 59: Wso2 integration platform deep dive   eu con 2016

Demonstration - Solution Architecture

Page 60: Wso2 integration platform deep dive   eu con 2016

Demonstration - Concepts (OData)

Retrieve duty roster: GET http://localhost:9765/odata/AllocationData/DriverAllocations/duty_roster(1){ "@odata.context": "$metadata#duty_roster/$entity", "@odata.etag": "8d32bf38-8d8f-30cb-8e87-36ebeaedc2a9", "vehicleId": 1, "driverId": 1}

Retrieve employee information:GET http://localhost:9765/odata/HRDataAPI/records/employee(1){ "@odata.context": "$metadata#employee/$entity", "@odata.etag": "58bff0d2-09a4-3315-b2a0-667626dbf5c7", "id": 1, "supervisorId": 2, "username": "driver", "status": "UnderReview", "name": "Driver"}

Update Employee status:PATCH http://localhost:9765/odata/HRDataAPI/records/employee(1){ "status" :"UnderReview"}

Page 61: Wso2 integration platform deep dive   eu con 2016

Demonstration - Concepts (Inbound Endpoints)<inboundEndpoint name="speed-alert-receiver" onError="fault" protocol="jms" sequence="BusSpeedViolationsSeq" suspend="false" xmlns="http://ws.apache.org/ns/synapse"> <parameters> <parameter name="interval">1</parameter> <parameter name="sequential">true</parameter> <parameter name="coordination">true</parameter> <parameter name="transport.jms.Destination">SpeedViolations</parameter> <parameter name="transport.jms.CacheLevel">3</parameter> <parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter> <parameter name="java.naming.factory.initial">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter> <parameter name="java.naming.provider.url">repository/conf/jndi.properties</parameter> <parameter name="transport.jms.SessionAcknowledgement">SESSION_TRANSACTED</parameter> <parameter name="transport.jms.SessionTransacted">true</parameter> <parameter name="transport.jms.SubscriptionDurable">false</parameter> <parameter name="transport.jms.ConnectionFactoryType">queue</parameter> <parameter name="transport.jms.ReceiveTimeout">100</parameter> <parameter name="transport.jms.ContentType">application/json</parameter> </parameters></inboundEndpoint>

<inboundEndpoint name="hr-request-receiver" onError="fault" protocol="http" sequence="HRSeq" suspend="false" xmlns="http://ws.apache.org/ns/synapse"> <parameters> <parameter name="inbound.http.port">8081</parameter> </parameters></inboundEndpoint>

Page 62: Wso2 integration platform deep dive   eu con 2016

Demonstration - Concepts (Endpoints)

<endpoint name="DutyRosterEP" xmlns="http://ws.apache.org/ns/synapse"> <http method="get" trace="disable" uri-template="http://localhost:9765/odata/AllocationData/DriverAllocations/duty_roster({uri.var.busId})"/></endpoint>

<endpoint name="GetEmployeeRecordsEP" xmlns="http://ws.apache.org/ns/synapse"> <http method="get" trace="disable" uri-template="http://localhost:9765/odata/HRDataAPI/records/employee({uri.var.employeeId})"/></endpoint>

<endpoint name="UpdateEmployStatusEP" xmlns="http://ws.apache.org/ns/synapse"> <http method="patch" trace="disable" uri-template="http://localhost:9765/odata/HRDataAPI/records/employee({uri.var.employeeId})"/></endpoint>

Usage:

<property expression="json-eval($.driverId)" name="uri.var.employeeId" scope="default" type="STRING"/><call> <endpoint key="GetEmployeeRecordsEP"/></call>

Page 63: Wso2 integration platform deep dive   eu con 2016

Demonstration - Concepts (Data Mapping)

<datamapper config="gov:datamapper/MapSpeedViolationResultToHRSystem.dmc"

description="Map-Speed-Violation-OutCome-To-HR-System"inputSchema="gov:datamapper/MapSpeedViolationResult

ToHRSystem_inputSchema.json" inputType="JSON"

outputSchema="gov:datamapper/MapSpeedViolationResultToHRSystem_outputSchema.json" outputType="JSON" />

Page 64: Wso2 integration platform deep dive   eu con 2016

Demonstration - Concepts (Payload Messages and Service Chains)

<sequence name="BusSpeedViolationsSeq" onError="fault" statistics="enable" trace="disable"

xmlns="http://ws.apache.org/ns/synapse">

<property expression="json-eval($.event.payloadData.id)"

name="uri.var.busId" scope="default" type="STRING"/>

<property expression="json-eval($.event.payloadData.id)"

name="busId" scope="default" type="STRING"/>

<property expression="json-eval($.event.payloadData.timeStamp)"

name="timeStamp" scope="default" type="STRING"/>

<property name="uri.var.busId" scope="default"

type="STRING" value="1"/>

<call>

<endpoint key="DutyRosterEP"/>

</call>

<property expression="json-eval($.driverId)"

name="uri.var.employeeId" scope="default" type="STRING"/>

<property expression="json-eval($.driverId)"

name="driverId" scope="default" type="STRING"/>

<call>

<endpoint key="GetEmployeeRecordsEP"/>

</call>

Page 65: Wso2 integration platform deep dive   eu con 2016

Demonstration - Concepts (Payload Messages and Service Chains)

<property expression="json-eval($.username)"

name="driverUsername" scope="default" type="STRING"/>

<property expression="json-eval($.name)"

name="driverName" scope="default" type="STRING"/>

<property expression="json-eval($.supervisorId)"

name="supervisorId" scope="default" type="STRING"/>

<property expression="json-eval($.supervisorId)"

name="uri.var.employeeId" scope="default" type="STRING"/>

<call>

<endpoint key="GetEmployeeRecordsEP"/>

</call>

<property expression="json-eval($.username)"

name="supervisorUserName" scope="default" type="STRING"/>

Page 66: Wso2 integration platform deep dive   eu con 2016

Demonstration - Concepts (Payload Messages and Service Chains) <payloadFactory media-type="json">

<format> {"processDefinitionKey": "trafficViolations","businessKey": "trafficKey","tenantId": "-1234",

"variables": [

{"name": "vehicleId", "value": "$1"},

{ "name": "timeStamp", "value": $2 },

{ "name": "driverId", "value": "$3"},

{ "name": "driverUserName", "value": "$4"},

{ "name": "driverName", "value": "$5"},

{ "name": "supervisorUserName", "value": "$6" }]}

</format>

<args>

<arg evaluator="xml" expression="$ctx:busId" xmlns:ns="http://org.apache.synapse/xsd"/>

<arg evaluator="xml" expression="$ctx:timeStamp" xmlns:ns="http://org.apache.synapse/xsd"/>

<arg evaluator="xml" expression="$ctx:driverId" xmlns:ns="http://org.apache.synapse/xsd"/>

<arg evaluator="xml" expression="$ctx:driverUsername" xmlns:ns="http://org.apache.synapse/xsd"/>

<arg evaluator="xml" expression="$ctx:driverName" xmlns:ns="http://org.apache.synapse/xsd"/>

<arg evaluator="xml" expression="$ctx:supervisorUserName" xmlns:ns="http://org.apache.synapse/xsd"/>

</args>

</payloadFactory>

<property name="messageType" scope="axis2" type="STRING" value="application/json"/>

<property expression="fn:concat('Basic ', base64Encode('admin:admin'))" name="Authorization" scope="transport"

type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>

<call> <endpoint key="CreateBPMNWorkFlowEP"/> </call>

<drop/>

</sequence>

Page 67: Wso2 integration platform deep dive   eu con 2016

Demonstration - Concepts (Payload Messages and Service Chains)<sequence name="HRSeq" statistics="enable" trace="disable"

xmlns="http://ws.apache.org/ns/synapse">

<property expression="json-eval($.driverId)"

name="uri.var.employeeId" scope="default" type="STRING" />

<datamapper config="gov:datamapper/MapSpeedViolationResultToHRSystem.dmc"

description="Map-Speed-Violation-OutCome-To-HR-System"

inputSchema="gov:datamapper/MapSpeedViolationResultToHRSystem_inputSchema.json"

inputType="JSON"

outputSchema="gov:datamapper/MapSpeedViolationResultToHRSystem_outputSchema.json"

outputType="JSON" />

<property name="FORCE_SC_ACCEPTED" scope="axis2" type="STRING" value="true" />

<property name="OUT_ONLY" scope="default" type="STRING" value="true" />

<call description="">

<endpoint key="UpdateEmployStatusEP" />

</call>

</sequence>

Page 68: Wso2 integration platform deep dive   eu con 2016

Demonstration - Concepts (BPMN Workflows)

Page 69: Wso2 integration platform deep dive   eu con 2016

Next generation Integration Platform

• WSO2 Gateway Framework– An ultra high performance, lightweight and reusable message

Gateway framework that encapsulates the messaging between source and target systems

– HTTP/s message gateway leveraging Netty, LMAX Disruptor and WSO2 Pass-Thru messaging architecture.

Page 70: Wso2 integration platform deep dive   eu con 2016

WSO2 Integration product suite

• Series of products based on WSO2 GW Core framework.

Page 71: Wso2 integration platform deep dive   eu con 2016

WSO2 Process Center

Process owner / analyst

Process participant

Developer

Create / improve / standardize Search / browse

/ follow

View

Develop executable processes

Executable process is associated with Process Center

Page 72: Wso2 integration platform deep dive   eu con 2016

Thank You!

#WSO2ConEU

Share your feedback for this session

wso2con.com/app