No Coding Required Building a Kubernetes Native iPaaS @KurtStam, PhD Red Hat Middleware Engineering Saturn 2018
No Coding RequiredBuilding a Kubernetes Native iPaaS
@KurtStam, PhDRed Hat Middleware Engineering
Saturn 2018
#MicroAdventures
Open Source: Freedom, Community, Sharing
Evolution of Open Source Middleware
Internet:
● Middleware Infrastructure JEE/ESB (JBoss, Apache)● End User Applications (Firefox)
Cloud:
● PaaS: Automation of Shipping and Deployment ○ (Containers + Kubernetes/OpenShift)
● iPaaS: - ‘Camel in the Cloud’ (Syndesis)
iPaaS = PaaS + Integration
Inherits all the characteristics from a PaaS and addsIntegration capabilities
The Red Hat PaaS consists of:
Docker Containers
OpenShift (Kubernetes Implementation)
Kubernetes Container Patterns
Kubernetes provides automated deployment, operations, and scaling of applications
Patterns:● Liveness and readiness probes● ConfigMap & Secrets● Graceful termination (rolling upgrade or node drain for maintenance)
Syndesis iPaaS
Integration capabilities leveraging over 200 Apache Components.
Syndesis Connectors add DataShape In/OutCreate an integration from templatesPublish the integration (as Pod)
Syndesis target user: Engage users at all levels
Integration for the novice and the expert
Novice users want a curated experience with a no-code toolchain
Expert users want flexibility, drill-down, extensibility
Bridge user populations, allowing experts to help novices
Syndesis Development Process
OpenShift and Camel are the upstream projects
UX Driven to avoid Camel specifics leaking into the UI
Each merged PR creates new Docker SnapShot builds to DockerHub
Each developer has local MiniShift and we all share a common staging environment
UI and Backend developer working simultaneously using JSON data graphs stored in database.
12
Syndesis Model
Syndesis Infrastructure using Ambassador Pattern
14
Syndesis Meta
15
Syndesis Rest - JsonDB
16
Custom Application Controller: Integration
17
Integration Pod using Adapter Pattern
Demo: Twitter Search to Database
Twitter Keyword:
#SATURN18
Lessons Learned (1)
MonoRepo: Easy to lose track of all pieces that go into the build.
Java: JVM tends to consolidate services to reduce memory footprint - Tune and set limits Java.
UX first worked quite well but UX was always the bottleneck
Angular UI ‘template-based’ as much as possible
Lessons Learned (2)
Camel: We drove a lot of changes upstream into Camel to support extensibility
Kubernetes Cloud changes everything - Makes it super easy to start but there is a learning curve to debug distributed issues.
MiniShift: Each Developer their own MiniShift, allows for hooking up the debugger. Perfect for controlling the development environment.
Comments? Questions?
@KurtStam, PhDRed Hat Middleware Engineering
Saturn 2018
23
Developer Extensions (code)
● Connectors
● Custom JDBC Drivers
● Steps
○ Camel Routes
○ Action Beans
● Community of Extensions at:
○ https://github.com/syndesisio/syndesis-extensions
24
Citizen Integrator Extensions (Swagger)
● Swagger API Connector imports○ OAuth 2 Support