Pr. Solution Architect, Fuse Expert, Apache Committer Blog: http://cmoulliard.github.io Twitter: @cmoulliard Email: cmoulliard@redhat.com |
Committer on Apache Camel, Karaf, Fabric8, Hawtio … & PMC
Technology evangelist
Mountain Biker, Belgian Beer Fan, Blogger
Why integration is so hard & expensive ?
Existing solutions
How can we simplify that ?
Ideal Integration Platform
Wrap Up
Many systems to integrate
Many different formats, protocols to support
Many standards, APis, languages to "inter operate" between applications, systems
Team collaboration
Many different business to interface
Data model & schemas not managed all
Lack of common vocabulary, grammar between integration actors
Lack of catalogue or registry to publish services, data structure, validation rules
Lack of vision OR strategy to manage common "data model", "services definition" between business units
Multi-disciplinary projects
Absence of DevOps strategy (reuse some ideas developed through - CD/CI talk)
Every change will impact;
Testing use cases
Release Management
Deployment procedures
Every change will require to measure impact on:
Existing applicationS
Business & Data Model /Services related
Calculate risk & modifications
? Add a timeline with solutions
EAI
2005 → JBI & SCA emerging
Centric -→ ESB
BPEL & WebServices
REST & Web2
Distributed -→ Microservice
Centric vision
XML based (inner conversion from CSV to XML or XML to CSV, …) -→ increase functional & modeling cost
Central server where the processes are deployed and run (what about incremental updates, …)
Long process to design/develop due to technology complexity -→ increase dvlpt time & learning curve
JBI, SCA
Proprietary implementation
Suffer from number of components -→ will require home code (TODO: To be reviewed)
Orchestration engines
BPEL & WebServices -→ increase learning curve & expertise level, does not fit very well huge volume processing
Contract(s) & Services (TODO: To be reviewed)
Not compatible
Targeted to the Business User (wisiwig tool, BPEL and Web Services …) BUT
Not for the Developer
Complex to learn, to be used between by teams or cross projects (TODO: To be reviewed)
Generated code
Design & runtime platforms are different -→ Not possible to debug, to test (TODO: To be reviewed)
Not agile at all due to the usage of the Web Services, XML & XSD schema (or complex spec like WS-Atom, …) everywhere
Imposing to embed the model within the service itself (TODO: To be reviewed)
Use agile Dev technique (scrum, …)
Adopt a design, develop, test& build "platform"
No more lock in to "proprietary" solutions
Open Source & Apache License Model is the way to go (for the reasons that we know)
Java Integration Framework easy to use
Microservice architecture
No more centric vision
Deployment of integration project as collection of services
Using OSGI bundle, Docker image or Kubernetes application
Integration tooling to package, deploy
CD/CI Strategy for Dev/Ops
Container agnostic
Cloud ready
Cross Technology Support to
Design complex logic using rules engine,
Manage long term process using standard BPM
Distribute workload in an sync/async way
Manage & govern services
Report centrally the logs & activities
Secure endpoints and services …
Does it exist -→ YES
What is the technology supporting such vision -→ JBoss Fuse, JBoss A-MQ, OpenShift & emerging (Keycloak, ApiMan, Overlord, Hawtio, Fabric8, …)
Common language, grammar between actors (developer, analyst & architect)
Correspond to DSL
Implement EIP Patterns instead of lockin standards
Reduce Dev Time as Functional Integration diagram can be implemented directly by the Developer
Adopt Opensource Framework implementing EIP Patterns and DSL like Apache Camel
Benefit to use well establishes patterns & practices
Reduce functional & technical analysis & Architecture design
Opensource community power
Use Java standards when possible (Junit), Logging (SLF4J) & Java EE standards (JPA, JTA, …)
Reduce dvlpt cost, learning curves as such tehnology are "mastered" by Java Developers
Adopt Camel Testing model to design Integration Test
Explain why & motivations
Can be started, debugged and profiled locally in JBDS (no need to use Java Container)
Library of Components & Data Format support 95% of the use case without to develop
Can be extended easily (just 3-4 classes to be implemented to create a new component) + Data Format
Huge collection of processor/interceptor supporting all the EIP
Junit & Exception centric
Exception centric
Propose microservice architecture model
Split services as collection of camel routes
Support to separate Service from the model (by adoption a REST proxy layer validating the data outside of the endpoint, …)
Fuse Container
Docker & kubernetes application
Manage your services & governance
Apiman
Keycloak
Business Activities
Overlord or Insight
Add a pie chart about Red Hat Middleware portfolio + emerging
JBoss Fuse, JBoss A-MQ, Fabric8 v2, Openshift v3, Apiman, Keycloak, …