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

  • 762