introduction to adroitlogic and ultraesb

34
“Better By Design” Integrating and connecting systems, trading partners and users together

Upload: adroitlogic

Post on 16-Feb-2017

259 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Introduction to AdroitLogic and UltraESB

“Better By Design”

Integrating and connecting systems, trading partners

and users together

Page 2: Introduction to AdroitLogic and UltraESB

● Founded in January '10

● Open Sourced UltraESB in August '10

● AS2 & File Exchange Gateways released '12

● API Director released '15

● Focused on ESB++

● Enhanced by real customer needs

About AdroitLogic

Page 3: Introduction to AdroitLogic and UltraESB

HISTORY● Why another ESB?

beta user of Aqualogic Service Bus in 2005

Performance: Zeus XTM vs BEA Aqualogic

● Joined WSO2 in April 2006

First ESB with non-blocking http/s transports

Public ESB performance benchmarking begins

● Asankha (Founder) + Ruwan (Director of Engineering) wrote over 80% of the Apache Synapse ESB

Page 4: Introduction to AdroitLogic and UltraESB

Serious

architectural and

code quality

issues

with Axis2++

Page 5: Introduction to AdroitLogic and UltraESB

Synapse / WSO2 ESB

● Axis2 was a SOAP “client” and “service” framework

● Many ugly hacks were required to use it for an ESB

● Disadvantages outweighed any benefits

● All messages were “SOAP”ified – even Files!

● Became very difficult to unit test

● Complex to configure for end-users

● Development of Graphical “front-ends” didn't help

● Difficulty to use external code / customizations

● OSGi was the last straw!

Page 6: Introduction to AdroitLogic and UltraESB

...Objective!

build the fastest ESB

make it Simple to use and extend

emphasis on Quality

Page 7: Introduction to AdroitLogic and UltraESB

Significant Milestones

● Ruwan Linton joined AdroitLogic in 2011

● Jesta Digital migrates to UltraESB

● AS2 Gateway and AS2 support introduction

● Selection by Walmart for eCommerce

● Release of the API Director

Page 8: Introduction to AdroitLogic and UltraESB

Users of our technology

Page 9: Introduction to AdroitLogic and UltraESB

ESB within an Organization

Page 10: Introduction to AdroitLogic and UltraESB

ESB as a Gateway

HTTP/SAS2S/FTPEmail

Page 11: Introduction to AdroitLogic and UltraESB

API Management

● Exposing internal services

● For access by external partners

● Usually REST based

● SOAP/POX etc also possible

Page 12: Introduction to AdroitLogic and UltraESB

Common Concerns

● Could this request be an attack?

● Is a client identified, authenticated & authorized?

● Is the request exceeding the allowed rate limit

● Is the quota (long term) being exceeded

● Is the request acceptable?

● Should any routing be performed

● Who is calling, what services – logging, auditing etc

● Whats the overall health, performance/metrics

Page 13: Introduction to AdroitLogic and UltraESB

Key Functions

● On boarding Services and Consumers

● Credential Management

● Mediation, Logging, Auditing

● Rate limiting, Metering & Billing

● Performance and SLA

● Management / Analytics / Alerts

● Administration / Developer Portals & Tools

Page 14: Introduction to AdroitLogic and UltraESB

● Security

● Client ID, Basic/Digest/OAuth, WS-Sec..

● AuthN – Headers, IP address, LDAP..

● Protection - SSL, message encryption

● Validation – Schema based, XSS scanning..

● Deliberate attacks

– Slow clients

● Mediation

● Routing, transformations, caching, etc

Page 15: Introduction to AdroitLogic and UltraESB

● Policies

● URL/Header/Payload sizes, HTTP methods

● Response time

● Throttling / Rate limiting

● Quota (more long term)

● Attack detection (Content Type, Payload etc)

● Developer Portal / Tools

● Registry, Documentation, Sample usage

● Test endpoints, utilities, service meta data

● Consumer and Service On-boarding

● Metrics, Alerts and Reporting

Page 16: Introduction to AdroitLogic and UltraESB

UltraESB as an ESB

● One of the youngest, since Jan 2010

● Based on a lot of previous experience and knowledge with ESBs

● But a completely clean & new implementation

● Knew what worked, what didn't and what should be done better

● Technical innovations

● Focus on performance and quality from the start

● Java or JSR 223 scripts dynamically compiled for mediation

● Simplicity

● Based on Spring framework and a few very stable libraries

● Ease of management / monitoring based on ZooKeeper & JMX

Page 17: Introduction to AdroitLogic and UltraESB

Solutions based on the ESB

● AS2 Gateway

● Utilizes AS2 based B2B trading support of the UltraESB

● AS2 trading station as a service

– http://as2gateway.org

– Supports Invoicing

– Based on requirements from two leading retailers in Europe

● On-Premise deployments for enterprise customers

● API Director

● API Management solution

● Integrated ESB service management capabilities

Page 18: Introduction to AdroitLogic and UltraESB

Solution Overview

Page 19: Introduction to AdroitLogic and UltraESB

AS2 Gateway

Page 20: Introduction to AdroitLogic and UltraESB

File Exchange Gateway

Page 21: Introduction to AdroitLogic and UltraESB

API Director

Page 22: Introduction to AdroitLogic and UltraESB

API Director Deployment

Page 23: Introduction to AdroitLogic and UltraESB

Proxy Services

Page 24: Introduction to AdroitLogic and UltraESB

Transports & Message formats

● Non-Blocking HTTP/S with Zero-Copy

● JMS, AMQP, Email, File, S/FTP/FTPS/Samba, Timer (Quartz), TCP/S, MLLP/S

● Protocols

● REST, SOAP, Hessian, Protocol Buffers, Fast Infoset, AS2, Binary/Custom TCP etc

● Payloads

● XML, JSON, Text, Binary, CSV, Fixed Width, EDI

Page 25: Introduction to AdroitLogic and UltraESB

Sequences, Interceptors & Mediation

msg mediation logger

Fragment, Class, Spring bean..

Native byte code execution

Use try-catch-finally

Javadoc for API

Page 26: Introduction to AdroitLogic and UltraESB

Endpoints

Page 27: Introduction to AdroitLogic and UltraESB

Achieving “Performance”

Zero-Copy Proxying + Non-Blocking IO

RAM disk / VTD XML

end-to-end principle

Page 28: Introduction to AdroitLogic and UltraESB

Zero-Copy Proxying

Non-Blocking IO

Page 29: Introduction to AdroitLogic and UltraESB

Core Architecture

● RAM disk based file cache

● Speed of RAM with ease of Files

● Better utilization of memory with smaller heap and low GC overhead

● Use of Zero-Copy / sendfile with DMA

● JMX for management of nodes/clusters

● Separate Coordination & Control from State replication

● No SPF, support HA and FO of services on nodes

● No canonical payload format

● Allow dynamic, yet atomic updates

Page 30: Introduction to AdroitLogic and UltraESB

Cluster Management

Page 31: Introduction to AdroitLogic and UltraESB

Continuous Benchmarking

● Since 2005, comparing against

● Mule, BEA, ServiceMix, WSO2, Talend, Jboss, Petals and Fuse

● ESB Performance Benchmark

● http://esbperformance.org

● All resources, scripts and instructions openly published

● Ready-to-run EC2 image used for results shared

● Direct proxy, CBR (Transport/Message Header & Content), Transformation, WS-Security

● Community based improvements to the tests and resources

– From Talend, Mule and ServiceMix/Camel

– All found issues with their ESBs by using the benchmark and fixed them

– Independently validated the results seen

Page 32: Introduction to AdroitLogic and UltraESB

Last Round 6

Page 33: Introduction to AdroitLogic and UltraESB

Focus on Quality & Ease of Use

● Close to 50% code coverage

● Public API as separate Maven artifact shields customers' custom code binding into ESB internals

● Start / Debug / Profile / Unit test / Load test – all within the IDE

● Many things based on few stable libraries such as Spring

● No OSGi or classloader complexities – simple to extend

Page 34: Introduction to AdroitLogic and UltraESB

Questions?

● http://adroitlogic.org

● http://docs.adroitlogic.org

● http://esbperformance.org

● http://as2gateway.org