Integrating systems

in the age of

Quarkus, Knative and Kafka

 

 

Zineb Bendhiba
@ZinebBendhiba

Peter Palaga
@ppalaga


Image from 1zoom.me

Zineb  &  Peter

 

 

Image by Kaptain Kobold CC BY-NC-SA 2.0

Image by Anders Lanzen CC BY-NC-SA 2.0
Systems integration
Image by Aaron Hockley CC BY-NC-ND 2.0

350+ connectors

Filetypes:

  • Plaintext, XML, HTML, CSV, JSON, ZIP, ...
  • Apache Tika (MS Office, OpenDocument, ...)

Protocols:

  • TCP/UDP, DNS, FTP, HTTP, IRC, SSH, ...
  • REST, GRPC, git, ...
  • IoT: CoAP, MQTT, PubNub

Public/private Clouds:   

  • AWS: S3, SQS, Kinesis, ...
  • Azure: Blob, Queue, ...
  • Google: BigQuery, PubSub
  • DigitalOcean, Kubernetes, OpenShift, etcd, Docker

Data & messaging

  • Hazelcast, Infinispan, Redis, ...
  • Cassandra, MongoDB
  • JDBC, SQL, JPA
  • Kafka, Debezium
  • JMS, AMQP, QPID, STOMP

APIs:

  • Social: Facebook, Twitter, LinkedIn
  • Box, Dropbox, Google Calendar/Drive/Mail/Docs
  • Salesforce, SAP, ServiceNow, FHIR
  • GitHub, Jira, Telegram

Misc:

  • Barcode
  • Base64, JsonPath, Freemarker, Groovy, Mustache, Ruby
  • JMX, OpenTelemetry, OpenTracing, OptaPlanner, Syslog

Check the full list

Image by Jess Larson

Enterprise Integration Patterns (EIP)

EIPs
https://www.enterpriseintegrationpatterns.com/
Image by Gary Todd CC0 1.0

Domain Specific Languages (DSL)

Java XML
class MyCamelRouter extends RouteBuilder {
  @Override
  public void configure() throws Exception {
    from("aws2-s3://my-bucket?prefix=hello.txt")
      .log("Got an S3 file: ${body}")
      .to("telegram:bots");
  }
}
<routes
  xmlns="http://camel.apache.org/schema/spring">
  <route id="my-route">
    <from uri="aws2-s3://my-bucket?prefix=hello.txt"/>
    <log message="Got an S3 file: ${body}"/>
    <to uri="telegram:bots"/>
  </route>
</routes>

Groovy, Scala, Kotlin, YAML, ...

Image by Jason Mrachina CC BY-NC-ND 2.0

Supported platforms

 

Standalone
Quarkus Apache Karaf Knative/Kubernetes WildFly
Spring Boot Spring Boot Apache Karaf WildFly
Image from pxhere.com CC0 Public Domain

Camel on Quarkus

a build time toolkit

Image from tenor

Why Camel on Quarkus?

 

💾 Small size on disk Small container images
🚀 Fast boot time Instant scale up
🔬 Low memory footprint More containers with the same
amount of RAM

code.quarkus.io (with native support)
Camel Quarkus Docs (all)

Image adapted from Wikimedia Commons CC BY 4.0

Camel Quarkus Demo

Camel Quarkus demo

github.com/zbendhiba/telegram-kafka/tree/devoxx-uk-2022

How can we deploy on Kubernetes?

Image by ??? ???

The Quarkus way

  • Build and push an image
    • quarkus-container-image-jib
    • quarkus-container-image-docker
    • quarkus-container-image-s2i

  • Generate Kubernetes resources
    • quarkus-kubernetes
    • quarkus-minikube
    • quarkus-openshift
    • quarkus-kubernetes-config


Watch Quarkus Insights #15: Kubernetes and OpenShift with Quarkus

Make it simpler!

Image by Anders Lanzen CC BY-NC-SA 2.0

Camel K overview

Image by CDC Public Domain

Camel K demo

Systems integration

github.com/zbendhiba/telegram-kafka/tree/devoxx-uk-2022/camel-k

Wrap up

  • Apache 🐪 = an integration toolkit with 350+ connectors
  • 🚀🔬 on Quarkus
  • Scale to 0️⃣ and easy to deploy to Knative
  • Stream data from/to Kafka

Next steps

  1. Rate this talk
  2. More content in Room B: