introduction to adroitlogic and ultraesb
TRANSCRIPT
“Better By Design”
Integrating and connecting systems, trading partners
and users together
● 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
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
Serious
architectural and
code quality
issues
with Axis2++
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!
...Objective!
build the fastest ESB
make it Simple to use and extend
emphasis on Quality
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
Users of our technology
ESB within an Organization
ESB as a Gateway
HTTP/SAS2S/FTPEmail
API Management
● Exposing internal services
● For access by external partners
● Usually REST based
● SOAP/POX etc also possible
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
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
● 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
● 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
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
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
Solution Overview
AS2 Gateway
File Exchange Gateway
API Director
API Director Deployment
Proxy Services
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
Sequences, Interceptors & Mediation
msg mediation logger
Fragment, Class, Spring bean..
Native byte code execution
Use try-catch-finally
Javadoc for API
Endpoints
Achieving “Performance”
Zero-Copy Proxying + Non-Blocking IO
RAM disk / VTD XML
end-to-end principle
Zero-Copy Proxying
Non-Blocking IO
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
Cluster Management
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
Last Round 6
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
Questions?
● http://adroitlogic.org
● http://docs.adroitlogic.org
● http://esbperformance.org
● http://as2gateway.org