Dapr: Dinosaur or Developer's Dream? (v1)

Dapr
Dinosaur or 

Developer's Dream?
Maarten Mulders (@mthmulders)
#dapr
Complexity....
Complexity....
Complexity....
Complexity....
Complexity....
Essential
Essential
Essential
Essential
Essential
Accidental
Accidental
Accidental
Accidental
Accidental
Maarten Mulders (@mthmulders)
#dapr
Maarten Mulders (@mthmulders)
#dapr
Maarten Mulders (@mthmulders)
#dapr
...if only there were a

standardised API for that!
Maarten Mulders (@mthmulders)
#dapr
Here Be Dinosaurs?!
(Source: , December 2003,
retrieved September 2021)
“J2EE has emerged, since it was first
released in 1999, as an integrated
standard for implementing and
deploying portable, multi-tiered
enterprise applications
The All New J2EE 1.4 Platform
Maarten Mulders (@mthmulders)
#dapr
Maarten Mulders (@mthmulders)
#dapr
Can't this be a little simpler...?
Maarten Mulders (@mthmulders)
#dapr
Dapr: Distributed
Application Runtime
“An event-driven, portable runtime for
building microservices on cloud and
edge.
Maarten Mulders (@mthmulders)
#dapr
Ingredients
(or: Buzzword Bingo)
Open Source
Polyglot
Modular
Pluggable
Cloud-Native
warning: may contain traces of nuts, gluten and other allergens.
Maarten Mulders (@mthmulders)
#dapr
Building Block
Describe cross-cutting concerns for building distributed
systems, e.g.
“my application needs to store data as
key/value pairs
Maarten Mulders (@mthmulders)
#dapr
Building Block API
POST /v1.0/state/vehicles HTTP/1.1

Host: localhost:3500

Content-Type: application/json



[

{

"key": "YH-52-VD",

"value": "{"licenseNumber":"YH-52-VD",

"entryTimestamp":"2021-09-15T11:19:18.1781609"

}"

}

]







HTTP/1.1 204 No Content

Maarten Mulders (@mthmulders)
#dapr
Building Block API
GET /v1.0/state/vehicles/YH-52-VD HTTP/1.1

Host: localhost:3500

Accept: application/json







HTTP/1.1 200 OK

Content-Type: application/json



"{

"licenseNumber":"YH-52-VD",

"entryTimestamp":"2021-09-15T11:19:18.1781609"

}"

Maarten Mulders (@mthmulders)
#dapr
Maarten Mulders (@mthmulders)
#dapr
Maarten Mulders (@mthmulders)
#dapr
Maarten Mulders (@mthmulders)
#dapr
Service Mesh on Steroids
Service Mesh on Steroids
Service Mesh on Steroids
Service Mesh on Steroids
Service Mesh on Steroids
Maarten Mulders (@mthmulders)
#dapr
Demo: key/value
store
Maarten Mulders (@mthmulders)
#dapr
Maarten Mulders (@mthmulders)
#dapr
Maarten Mulders (@mthmulders)
#dapr
🤞🏻
🤞🏻
🤞🏻
🤞🏻
🤞🏻
1. Start the Dapr sidecar
2. Start the demo app
3. Store / retrieve data
Maarten Mulders (@mthmulders)
#dapr
Components
Components
Components
Components
Components
Maarten Mulders (@mthmulders)
#dapr
1. State Store — key/value storage
2. Service Invocation — invoke remote methods
3. Pub/Sub — async message processing
4. Bindings — interfaces to/from external integrations
5. Secrets — various secret stores
6. Name resolution — name resolution for service invocation
7. Middleware — various filters on incoming Web requests




Over 27 implementations available!
Maarten Mulders (@mthmulders)
#dapr
Service Invocation
Service Invocation
Service Invocation
Service Invocation
Service Invocation






















Maarten Mulders (@mthmulders)
#dapr
Pub/Sub
Pub/Sub
Pub/Sub
Pub/Sub
Pub/Sub






















Maarten Mulders (@mthmulders)
#dapr
Bindings
Bindings
Bindings
Bindings
Bindings






















Maarten Mulders (@mthmulders)
#dapr
Secrets
Secrets
Secrets
Secrets
Secrets






















Maarten Mulders (@mthmulders)
#dapr
Demo: service
invocation & output
bindings
Maarten Mulders (@mthmulders)
#dapr
Maarten Mulders (@mthmulders)
#dapr
🤞🏻
🤞🏻
🤞🏻
🤞🏻
🤞🏻
1. Start the Dapr sidecar
2. Start the demo apps
3. Simulate traffic 🚗
4. Receive speeding ticket 😱
Maarten Mulders (@mthmulders)
#dapr
Observability
Observability
Observability
Observability
Observability
Tracing
Tracing
Tracing
Tracing
Tracing
Metrics
Metrics
Metrics
Metrics
Metrics
Maarten Mulders (@mthmulders)
#dapr
Tracing
Inject custom headers (e.g. X-B3-TraceId and X-B3-SpanId) to
measure execution throughout a chain.
Zipkin collects those traces and provides visualisations.
Maarten Mulders (@mthmulders)
#dapr
Metrics
Application records metrics (numeric measurements)
Prometheus collects (scrapes) measurements → time series
Grafana hosts dashboards to visualise the time series
Maarten Mulders (@mthmulders)
#dapr
Metrics
Dapr exposes metrics about its own processes, such as:
resource usage
mTLS (certificate issuing)
sidecar operations
Maarten Mulders (@mthmulders)
#dapr
Metrics
Maarten Mulders (@mthmulders)
#dapr
Tracing with Dapr sidecar
POST /v1.0/invoke/vehicleregistrationservice/method/vehicleinfo/YH-52-VD

Host: localhost:3500

Content-Type: application/json

X-DaprRequestId: b237d1da-beaa-42ef-b8c6-fcf38a900a21



... (omitted for brevity)

Maarten Mulders (@mthmulders)
#dapr
The Dapr SDK for Java
Using io.dapr:dapr-sdk
daprClient.invokeMethod(

"vehicleregistrationservice",

"vehicleinfo/" + licenseNumber,

null, // no request body

HttpExtension.GET,

VehicleInfo.class

).contextWrite(

/* 

* add tracing context from

* e.g. OpenTracing or Spring Sleuth

*/

);

Maarten Mulders (@mthmulders)
#dapr
The Dapr SDK for Java
Using io.dapr:dapr-sdk-springboot
@Topic(name = "speedingviolations", pubsubName = "pubsub")

@PostMapping(path = "/collectfine")

public ResponseEntity<Void> registerViolation(

@RequestBody final CloudEvent<SpeedingViolation> event

) {

// ...

}

Maarten Mulders (@mthmulders)
#dapr
Dinosaur or
Developer's Dream?
Maarten Mulders (@mthmulders)
#dapr
Dinosaur?
BUSTED
Developer's Dream?
BUSTED
Maarten Mulders (@mthmulders)
#dapr
Dapr — Take Aways
1. Building blocks for distributed application integration
patterns
2. The sidecar brings you to places you've never been before
3. Not a one-stop shop or Swiss army knife








DIY Workshop: https://bit.ly/dapr-workshop-
java
Maarten Mulders (@mthmulders)
#dapr
Image attributions
electronic circuit board -
infrastructure -
SPECS-speed camera in Utrecht, The Netherlands -
lego -
airplane cockpit -
https://pxhere.com/en/photo/941067
https://pxhere.com/en/photo/1534169
https://commons.wikimedia.org/wiki/File:Trajectcontrole.jpg
https://pxhere.com/en/photo/1121211
https://pxhere.com/en/photo/609377
Maarten Mulders (@mthmulders)
#dapr
1 of 42

Recommended

Dapr: Dinosaur or Developer Dream? (J-Fall) by
Dapr: Dinosaur or Developer Dream? (J-Fall)Dapr: Dinosaur or Developer Dream? (J-Fall)
Dapr: Dinosaur or Developer Dream? (J-Fall)Maarten Mulders
139 views42 slides
SSL/TLS for Mortals (Devoxx) by
 SSL/TLS for Mortals (Devoxx) SSL/TLS for Mortals (Devoxx)
SSL/TLS for Mortals (Devoxx)Maarten Mulders
389 views41 slides
#Devops - A Twitter Story by
#Devops - A Twitter Story#Devops - A Twitter Story
#Devops - A Twitter StoryMichelle Sandford
369 views41 slides
Harnessing Domain Driven Design by
Harnessing Domain Driven DesignHarnessing Domain Driven Design
Harnessing Domain Driven DesignCapgemini
1.7K views79 slides
Using Mahout and a Search Engine for Recommendation by
Using Mahout and a Search Engine for RecommendationUsing Mahout and a Search Engine for Recommendation
Using Mahout and a Search Engine for RecommendationTed Dunning
7.4K views47 slides
Processing Twitter Stream with Oracle Event Processing (OEP) by
Processing Twitter Stream with Oracle Event Processing (OEP)Processing Twitter Stream with Oracle Event Processing (OEP)
Processing Twitter Stream with Oracle Event Processing (OEP)Trivadis
1.1K views55 slides

More Related Content

More from Maarten Mulders

Making Maven Marvellous (Java.il) by
Making Maven Marvellous (Java.il)Making Maven Marvellous (Java.il)
Making Maven Marvellous (Java.il)Maarten Mulders
146 views13 slides
Making Maven Marvellous (JavaZone) by
Making Maven Marvellous (JavaZone)Making Maven Marvellous (JavaZone)
Making Maven Marvellous (JavaZone)Maarten Mulders
90 views13 slides
SSL/TLS for Mortals (Devoxx UK) by
SSL/TLS for Mortals (Devoxx UK)SSL/TLS for Mortals (Devoxx UK)
SSL/TLS for Mortals (Devoxx UK)Maarten Mulders
70 views41 slides
React in 40 minutes (Voxxed Days Romania) by
React in 40 minutes (Voxxed Days Romania) React in 40 minutes (Voxxed Days Romania)
React in 40 minutes (Voxxed Days Romania) Maarten Mulders
93 views52 slides
React in 40 minutes (JCON) by
React in 40 minutes (JCON) React in 40 minutes (JCON)
React in 40 minutes (JCON) Maarten Mulders
105 views52 slides
React in 50 minutes (Bucharest Software Craftsmanship Community) by
React in 50 minutes (Bucharest Software Craftsmanship Community)React in 50 minutes (Bucharest Software Craftsmanship Community)
React in 50 minutes (Bucharest Software Craftsmanship Community)Maarten Mulders
244 views56 slides

More from Maarten Mulders(20)

Making Maven Marvellous (Java.il) by Maarten Mulders
Making Maven Marvellous (Java.il)Making Maven Marvellous (Java.il)
Making Maven Marvellous (Java.il)
Maarten Mulders146 views
React in 40 minutes (Voxxed Days Romania) by Maarten Mulders
React in 40 minutes (Voxxed Days Romania) React in 40 minutes (Voxxed Days Romania)
React in 40 minutes (Voxxed Days Romania)
Maarten Mulders93 views
React in 50 minutes (Bucharest Software Craftsmanship Community) by Maarten Mulders
React in 50 minutes (Bucharest Software Craftsmanship Community)React in 50 minutes (Bucharest Software Craftsmanship Community)
React in 50 minutes (Bucharest Software Craftsmanship Community)
Maarten Mulders244 views
React in 50 Minutes (JNation) by Maarten Mulders
 React in 50 Minutes (JNation)  React in 50 Minutes (JNation)
React in 50 Minutes (JNation)
Maarten Mulders143 views
Building a DSL with GraalVM (Oracle Groundbreaker APAC Virtual Tour) by Maarten Mulders
Building a DSL with GraalVM (Oracle Groundbreaker APAC Virtual Tour)Building a DSL with GraalVM (Oracle Groundbreaker APAC Virtual Tour)
Building a DSL with GraalVM (Oracle Groundbreaker APAC Virtual Tour)
Maarten Mulders128 views
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour) by Maarten Mulders
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
Maarten Mulders114 views
SSL/TLS for Mortals (UtrechtJUG) by Maarten Mulders
SSL/TLS for Mortals (UtrechtJUG)SSL/TLS for Mortals (UtrechtJUG)
SSL/TLS for Mortals (UtrechtJUG)
Maarten Mulders202 views
Building a DSL with GraalVM (javaBin online) by Maarten Mulders
Building a DSL with GraalVM (javaBin online)Building a DSL with GraalVM (javaBin online)
Building a DSL with GraalVM (javaBin online)
Maarten Mulders221 views
SSL/TLS for Mortals (Lockdown Lecture) by Maarten Mulders
SSL/TLS for Mortals (Lockdown Lecture)SSL/TLS for Mortals (Lockdown Lecture)
SSL/TLS for Mortals (Lockdown Lecture)
Maarten Mulders122 views
React in 50 Minutes (OpenValue) by Maarten Mulders
React in 50 Minutes (OpenValue) React in 50 Minutes (OpenValue)
React in 50 Minutes (OpenValue)
Maarten Mulders162 views
React in 50 Minutes (DevNexus) by Maarten Mulders
React in 50 Minutes (DevNexus) React in 50 Minutes (DevNexus)
React in 50 Minutes (DevNexus)
Maarten Mulders114 views
Building web applications with React (Jfokus) by Maarten Mulders
Building web applications with React (Jfokus)Building web applications with React (Jfokus)
Building web applications with React (Jfokus)
Maarten Mulders203 views
Building a DSL with GraalVM (CodeOne) by Maarten Mulders
Building a DSL with GraalVM (CodeOne)Building a DSL with GraalVM (CodeOne)
Building a DSL with GraalVM (CodeOne)
Maarten Mulders160 views
Building a DSL with GraalVM (Full Stack Antwerpen) by Maarten Mulders
Building a DSL with GraalVM (Full Stack Antwerpen)Building a DSL with GraalVM (Full Stack Antwerpen)
Building a DSL with GraalVM (Full Stack Antwerpen)
Maarten Mulders169 views

Recently uploaded

How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile... by
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...Stefan Wolpers
44 views38 slides
predicting-m3-devopsconMunich-2023-v2.pptx by
predicting-m3-devopsconMunich-2023-v2.pptxpredicting-m3-devopsconMunich-2023-v2.pptx
predicting-m3-devopsconMunich-2023-v2.pptxTier1 app
14 views33 slides
Streamlining Your Business Operations with Enterprise Application Integration... by
Streamlining Your Business Operations with Enterprise Application Integration...Streamlining Your Business Operations with Enterprise Application Integration...
Streamlining Your Business Operations with Enterprise Application Integration...Flexsin
5 views12 slides
Mobile App Development Company by
Mobile App Development CompanyMobile App Development Company
Mobile App Development CompanyRichestsoft
5 views6 slides
How Workforce Management Software Empowers SMEs | TraQSuite by
How Workforce Management Software Empowers SMEs | TraQSuiteHow Workforce Management Software Empowers SMEs | TraQSuite
How Workforce Management Software Empowers SMEs | TraQSuiteTraQSuite
7 views3 slides
aATP - New Correlation Confirmation Feature.pptx by
aATP - New Correlation Confirmation Feature.pptxaATP - New Correlation Confirmation Feature.pptx
aATP - New Correlation Confirmation Feature.pptxEsatEsenek1
222 views6 slides

Recently uploaded(20)

How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile... by Stefan Wolpers
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...
Stefan Wolpers44 views
predicting-m3-devopsconMunich-2023-v2.pptx by Tier1 app
predicting-m3-devopsconMunich-2023-v2.pptxpredicting-m3-devopsconMunich-2023-v2.pptx
predicting-m3-devopsconMunich-2023-v2.pptx
Tier1 app14 views
Streamlining Your Business Operations with Enterprise Application Integration... by Flexsin
Streamlining Your Business Operations with Enterprise Application Integration...Streamlining Your Business Operations with Enterprise Application Integration...
Streamlining Your Business Operations with Enterprise Application Integration...
Flexsin 5 views
Mobile App Development Company by Richestsoft
Mobile App Development CompanyMobile App Development Company
Mobile App Development Company
Richestsoft 5 views
How Workforce Management Software Empowers SMEs | TraQSuite by TraQSuite
How Workforce Management Software Empowers SMEs | TraQSuiteHow Workforce Management Software Empowers SMEs | TraQSuite
How Workforce Management Software Empowers SMEs | TraQSuite
TraQSuite7 views
aATP - New Correlation Confirmation Feature.pptx by EsatEsenek1
aATP - New Correlation Confirmation Feature.pptxaATP - New Correlation Confirmation Feature.pptx
aATP - New Correlation Confirmation Feature.pptx
EsatEsenek1222 views
predicting-m3-devopsconMunich-2023.pptx by Tier1 app
predicting-m3-devopsconMunich-2023.pptxpredicting-m3-devopsconMunich-2023.pptx
predicting-m3-devopsconMunich-2023.pptx
Tier1 app10 views
Transport Management System - Shipment & Container Tracking by Freightoscope
Transport Management System - Shipment & Container TrackingTransport Management System - Shipment & Container Tracking
Transport Management System - Shipment & Container Tracking
Freightoscope 6 views
How to build dyanmic dashboards and ensure they always work by Wiiisdom
How to build dyanmic dashboards and ensure they always workHow to build dyanmic dashboards and ensure they always work
How to build dyanmic dashboards and ensure they always work
Wiiisdom16 views
Advanced API Mocking Techniques Using Wiremock by Dimpy Adhikary
Advanced API Mocking Techniques Using WiremockAdvanced API Mocking Techniques Using Wiremock
Advanced API Mocking Techniques Using Wiremock
Dimpy Adhikary5 views
FOSSLight Community Day 2023-11-30 by Shane Coughlan
FOSSLight Community Day 2023-11-30FOSSLight Community Day 2023-11-30
FOSSLight Community Day 2023-11-30
Shane Coughlan8 views
Ports-and-Adapters Architecture for Embedded HMI by Burkhard Stubert
Ports-and-Adapters Architecture for Embedded HMIPorts-and-Adapters Architecture for Embedded HMI
Ports-and-Adapters Architecture for Embedded HMI
Burkhard Stubert35 views
ADDO_2022_CICID_Tom_Halpin.pdf by TomHalpin9
ADDO_2022_CICID_Tom_Halpin.pdfADDO_2022_CICID_Tom_Halpin.pdf
ADDO_2022_CICID_Tom_Halpin.pdf
TomHalpin96 views

Dapr: Dinosaur or Developer's Dream? (v1)