WELCOME TO Open Source Enterprise Architecture
WELCOME TO An overview of Open Source Enterprise Architecture In the integration domain
Who we are Fredrik Hilmersson Petter Nordlander
Why Open Source Integration Software No license fees Faster and easier to start with - no purchasing process Pick the pieces that is needed No need to take on an entire stack to solve one problem Use the open source products in any combination on any hardware - Without usage constraints It s often easier to customize with available source code
Considerations of Open Source Integration Software Open Source Contributing companies tend to have a business model in selling utility tools and plugins, such as ERP plugins. There is no one to call and demand changes/support - In house or access to expert knowledge is needed. This is a Java world. Open source integration is way less mature in other platforms/languages.
Considerations of Open Source Integration Software Who is behind an open source project? Track History! Using the source - Making local enhancements is possible - Commit the patch back don t use local branches Do not look at license cost alone TCO is a better measure Use open standards (JMS, SOAP, XML, Java Beans.. ) - Avoid product specific protocols, formats etc. is possible
A happy little story about Community Support Needed a small but critical feature added to Apache Camel. Submitted a humble question for advice to the mail list A couple of hours later, a helpful member added a ticket committed a patch provided test cases updated the documentation replied my mail Instantly, the source was available for download and test After a month, the stable version was released https://issues.apache.org/jira/browse/camel-5763
Reference Architecture Development Services Security - Authentication, Authorization, Encryption and Integrity Service Management -Modeling -Construction -Deployment -Business process orchestration -Human Task interaction -Business Rules Process Choreography Services B2B Services -Partner Management -B2B Message Management -Monitoring -Logging -Auditing -Management -Statistics and Accounting -Transformation -Routing -Conversion -Connectivity Enterprise Service Bus Service Registry -Describe -Publish -Discovery Collaboration Services - End User Interaction Application - Business logic Service Enabler - Adaption to ESB Service Enabler - Adaption to ESB User Application - Business logic Application - Business logic
Example Reference Architecture Development Services - WS-Security, SSL, PGP, OAuth Security Service Management - Eclipse - Mule Studio - Soap UI - Maven - Subversion - Jenkins - Hermes JMS - Activiti (BPMN) Process Choreography Services -N/A B2B Services - JMX - Maven - Hermes JMS - ActiveMQ Console - Mule ESB CE - Apache Active MQ Enterprise Service Bus Service Registry - WSO2 Gorvernance Registry Collaboration Services - Alfresco - Activiti Explorer User Application - Business logic Service Enabler - Apache Camel Application - Business logic Service Enabler - Apache Camel - Community adapters Application - Business logic
ESB example components Development Services - WS-Security, SSL, PGP Security Service Management - Eclipse - Mule Studio - Soap UI - Maven - Subversion - Jenkins - Hermes JMS - Activiti (BPMN) - Drools (rules engine) Process Choreography Services -N/A B2B Services - JMX - Maven - Hermes JMS - ActiveMQ Console - Mule ESB CE - Apache Active MQ Enterprise Service Bus Service Registry - N/A Collaboration Services - Alfresco - Activiti User Application - Business logic Service Enabler - Apache Camel Application - Business logic Service Enabler - Apache Camel - Community adapters Application - Business logic
Open Source Enterprise Service Bus Mule ESB Community Edition Features Flow based routing Transformation Mediation Cloud Connectors ESB runtime server Visual Development Tool Maven support Connectors to several protocols No bundled messaging server.. But works well with JMS/AMQP Does not support HA (CE) Developed by MuleSoft Enterprise version by MuleSoft
Open Source Enterprise Service Bus Apache Active MQ Features Clustering Distributed Queues Built in Enterprise Integration Patterns Web management console MOM component in several projects.. Apache Service Mix (OSGi based ESB).. Apache Geronimo (Java EE server) Very suitable for embeddable / development / unit tests Apache Project Enterprise version from FuseSource
Open Source Enterprise Service Bus Apache Active MQ OpenWire AMQP (v.5.8) MQTT HTTP/REST STOMP XMPP JMS C++,.Net, Python, Ruby, PHP, Perl,Flash, Python Node Node Node Node Node Node Node
Open Source Service Registry WSO2 Governance Registry Open source Governance Not much out there Typically enterprise features in other products Features of WSO2 registry Service registry Life Cycle management WSDL Support Considerations Web Service aligned Part of the WSO2 stack, integrates well with WSO2
Adapter example component Development Services - WS-Security, SSL, PGP Security Service Management - Eclipse - Soap UI - Maven - Subversion - Jenkins - Activiti (BPMN) - Drools (rules engine) Process Choreography Services -N/A B2B Services - JMX - Maven - Mule ESB CE - Apache Active MQ Enterprise Service Bus Service Registry - N/A Collaboration Services - Alfresco - Activiti User Application - Business logic Service Enabler - Apache Camel Application - Business logic Service Enabler - Apache Camel - Community adapters Application - Business logic
Open Source Integration Adapters Enterprise Integration Patterns A legendary book by Gregor Hohpe and Bobby Woolf. Defines an implementation neutral language to describe integration scenarios Defines integration in terms of messaging Defines a set of patterns that fits different common integration problems
Open Source Integration Adapters Apache Camel What? Concise Application Message Exchange Language A java library that realizes Enterprise Integration Patterns EIP syntax in XML, Java and Scala Powerful Integration Adapter Connectivity examples SOAP Apple Push EJB JMS Amazon Google JDBC S/FTP/S Apache Project Enterprise version from FuseSource Part of ServiceMix ESB Part of Talend ESB
Apache Camel Use Cases Powerful integration adapter Enterprise Integration Patterns inside Java applications - Integration enable any java application Integration core inside an ESB Router for communication frameworks - Such as MINA, CXF, ActiveMQ
Apache Camels Examples The Content based router pattern from( activemq:queue:personnel.records ).choice().when().xpath( /person/city = London ).to( file:target/messages/uk ).otherwise().to( file:target/messages/others ); The Splitter pattern <route> <from uri= file:///batch/invoices/ /> <split> <xpath>/invoice/lineitems</xpath> <to uri= jms:queue:invoice.lines /> </split> </route>
Customer Case Camel as a gateway application Running inside customers WebSphere (Java EE) servers Maps well into the customers custom Java EE Framework Hooks into the WebSphere managed thead pool Hooks into the WebSphere transaction manager Hooks into the WebSphere servlet container Dealers WebSphere AS 7 External Gateway Application = Camel + Custom Web GUI Company Service Bus (WebSphere MQ 7)
BPM Example Development Services - WS-Security, SSL, PGP Security Service Management - Eclipse - Soap UI - Maven - Subversion - Jenkins - Activiti (BPMN) Process Choreography Services -N/A B2B Services - Maven - Activiti Explorer - Mule ESB CE - Apache Active MQ Enterprise Service Bus Service Registry - N/A Collaboration Services - Alfresco - Activiti User Application - Business logic Service Enabler - Apache Camel Application - Business logic Service Enabler - Apache Camel - Community adapters Application - Business logic
Open Source BPM Activiti Process engine and Explorer BPMN 2.0 compatible Simple and easy to use Long running processes Human tasks Service calls Scripting Great connectors exists for Mule ESB and Apache Camel Part of Alfresco
Open source BPM Activiti Explorer
Open source BPM Activiti Explorer
Open source BPM Activiti Explorer
Open source BPM Activiti Explorer
Activiti Process Modeller
Collaboration Service Development Services - WS-Security, SSL, PGP Security Service Management - Eclipse - Soap UI - Maven - Subversion - Jenkins - Activiti (BPMN) Process Choreography Services -N/A B2B Services - Maven - Activiti Explorer - Mule ESB CE - Apache Active MQ Enterprise Service Bus Service Registry - N/A Collaboration Services - Alfresco - Activiti Explorer User Application - Business logic Service Enabler - Apache Camel Application - Business logic Service Enabler - Apache Camel - Community adapters Application - Business logic
Collaboration Services Content Manageent System and Colloboration Portal
Collaboration Services Content Manageent System and Colloboration Portal Alfresco is an enterprise content platform that you can use in the cloud or behind your firewall. It helps you store and share the documents that every business depends on Document Management Versioning, Searching, Accessing, Sharing Business Process Automation Team Collaboration Web Publishing
Integration
Layered Mapping Application Layer ESB Layer BPM Layer Workflow Layer
Open Source Integration Components Deployment Most Integration OSS comes with server containers Can easily be deployed in other ways Inside Java EE servers Makes ESB scale with application server Possibility to jack in to JTA, SCA etc. and inside Web Applications Embedd ActiveMQ or Camel inside a Web App Eases development of integration heavy applications Inside JUnit tests Run test suits with embedded ESB and MOM Possibility to jack in to JTA, SCA etc. as stand alone executable Run a custom packaged adapter as a server daemon
Centralized Reliable Integration CRM DMS ERP One Managed Node Dedicated servers ESB1 ESB2 Mixed environments Integrate COTS MQ1 MQ2 Single point of failure CAM HR
Distributed Reliable Integration CRM CRM Adapter CRM MQ DMS DMS Adapter DMS MQ ERP MQ ERP Integration done locally In integration software Applications servers re used Standarized environments Active MQ Cluster Local integration errors Messaging backbone CAM CAM MQ HR MQ HR Adapter Requires gorvernance Deployment and configuration strategy HR
Mule ESB Distributed Deployment Example A little trick to create file based deployment of mule artifacts. This shows the simplicity to create custom deployment solutions Adapter Node Adapter Node Adapter Node Adapter Node Adapter Node
Persistance of Apache Active MQ How does the broker ensure message persistance? File AMQ Message Store Database
High Availability Apache Active MQ Master/Slave Broker Master Broker Slave Broker Master Broker Slave Client Client
Replicated Message Store Lock SAN SAN Lock Broker Master Broker Slave Broker Master Broker Slave Client Client
High Availability Apache Active MQ JDBC Master/Slave Shared database Shared database Broker Master Broker Slave Broker Master Broker Slave Client Client
Really, what is it? High Availability Load balancing and failover Service level agreement Uptime!= Availability Maroned messages Availability % Downtime per year Downtime per month* Downtime per week 55.5555555% ("nine fives") 162.22 days 13.33 days 74.67 hours 90% ("one nine") 36.5 days 72 hours 16.8 hours 95% 18.25 days 36 hours 8.4 hours 97% 10.96 days 21.6 hours 5.04 hours 98% 7.30 days 14.4 hours 3.36 hours 99% ("two nines") 3.65 days 7.20 hours 1.68 hours 99.5% 1.83 days 3.60 hours 50.4 minutes 99.8% 17.52 hours 86.23 minutes 20.16 minutes 99.9% ("three nines") 8.76 hours 43.8 minutes 10.1 minutes 99.95% 4.38 hours 21.56 minutes 5.04 minutes 99.99% ("four nines") 52.56 minutes 4.32 minutes 1.01 minutes 99.999% ("five nines") 5.26 minutes 25.9 seconds 6.05 seconds 99.9999% ("six nines") 31.5 seconds 2.59 seconds 0.605 seconds 99.99999% ("seven nines") 3.15 seconds 0.259 seconds 0.0605 seconds
Marooned Message? Broker Master Broker Slave Client
Not open source but still very popular HA/Virtualization Trust Virtulazation layer of HA capability vsphere HA Microsoft Windows Server 2012 Hyper-V
Mule ESB CE High availability and persistence HA support in EE Ways of achieving HA JMS Transaction Mule ESB Failover protocol JMS Transaction Active MQ (Active Broker) Active MQ (Passive Broker)
Mule ESB CE High availability and load balancing HA support in EE Ways of achieving HA JMS Transaction Mule ESB Failover protocol JMS Transaction Mule ESB JMS Transaction Active MQ (Active Broker) Active MQ (Active Broker) AMQ Network/Cluster
High Availability in Mule ESB Application Server Cluster HA support in EE Ways of achieving HA Application Server Mule Broker Application Server Mule Broker Other Apps Other Apps Other Apps Other Apps Other Apps Other Apps Application Server Cluster
Mule ESB CE Load balancing HA support in EE Ways of achieving HA HA on HTTP Applications HTTP(S) Loadbalancer (i.e. Apache) HTTP(S) Mule ESB Mule ESB
Mule ESB CE HA and HTTP Load Balancing Applications HTTP(S) Loadbalancer (Apache) HTTP(S) JMS Transaction Mule ESB Active MQ (Active Broker) Failover protocol JMS Transaction Mule ESB JMS Transaction Active MQ (Active Broker) Active MQ Network of Brokers
Open Source Integration Architecture Summary No License fees Great Flexibility combine as you please Requires governance HA and load balancing is no issue Management tools are uncommon It s a Java World Contribute with local patches and modifications!