Visualizing Mandelbrot fractals
using Project Riff
and Spring Cloud Function
Dieter Hubau
Ordina Belgium
@dhubau
github.com/Turbots
ordina-jworks.github.io
Abstraction Layers
"The entire history of software engineering is that of the rise in levels of abstraction"
Grady Booch
Abstraction Layers
"The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise"
E.W. Dijkstra
Kubernetes
Container Orchestration
Service Discovery
Load Balancing
Automated Rollouts and Rollbacks
Secret and Config Management
Self Healing
Horizontal (auto)scaling
Istio
Service Mesh
Traffic Management
Secure Communication
Tracing
Monitoring & Logging
Knative
Building Blocks for your Serverless Workloads
Serving
Build
Events
Knative
Serving
Apps are Knative Services
Mutable Configuration
Immutable Revisions
Dynamic Routes
Automatic Scaling
Knative
Build
Builds uses Builders to build your app from source to image
Containers are the common language
BuildTemplates define how to build
Easy to extend
Knative
Events
Powerful primitives to connect event sources to consumers
Channels and Subscriptions as layer of abstraction
(Cluster)Bus as middleware implementation
Publish Events without consumers
Start consuming before publisher is even there
Riff
Riff is for Functions
Event Driven FaaS
Opinionated layer on K8s, Istio and Knative
Functions practice Inversion Of Control
No configuration, your logic only!
Polyglot
Riff
Riff
riff function create <invoker> <name> <args>
riff service create <name> --image <image>
riff channel create <name> --cluster-bus <bus-name>
riff subscription create <name> --channel <chan> --subscriber <sub> --reply-to <reply>
Use case:
Mandelbrot
Visualizer
using K8s, Knative, Istio, Riff and Spring Cloud Function
Mandelbrot Set
"Most Complicated Object in Mathematics"
zn+1 = zn^2 + c
Function M()
Spring Cloud Function
m()
riff function create java mandelbrot
Docker Container
m()
Pod
m()
istio-proxy
queue-proxy
0-N Horizontal (auto)scaling
m()
m()
m()
Build more functions/services
calc
m()
web
Channels & Subscriptions
web
grids
calc
calculations
m()
results
Streaming Demo
web
m()
websocket
http
Demo Time
Resources
https://kubernetes.io/
https://istio.io/
https://cloud.google.com/knative/
https://projectriff.io
https://ordina-jworks.github.io
Questions?
Mandelbrot Fractals with Riff and Spring Cloud Function
By Dieter Hubau
Mandelbrot Fractals with Riff and Spring Cloud Function
TVH IT Talks 2018
- 831