No Coding Required Building a Kubernetes Native iPaaS @KurtStam, PhD Red 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 adds Integration 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/Out Create an integration from templates Publish 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.
Syndesis Model 12
Syndesis Infrastructure using Ambassador Pattern
Syndesis Meta 14
Syndesis Rest - JsonDB 15
Custom Application Controller: Integration 16
Integration Pod using Adapter Pattern 17
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, PhD Red Hat Middleware Engineering Saturn 2018
Developer Extensions (code) ● Connectors ● Custom JDBC Drivers ● Steps ○ Camel Routes ○ Action Beans ● Community of Extensions at: ○ https://github.com/syndesisio/syndesis-extensions 23
Citizen Integrator Extensions (Swagger) Swagger API Connector imports ● OAuth 2 Support ○ 24
Recommend
More recommend