Slide 1

Slide 1 text

@salaboy - Spring I/O - Barcelona 2023 Spring Boot in a Polyglot Cloud- Native World With Dapr

Slide 2

Slide 2 text

Agenda • Our Spring Boot Cloud-Native Applications • Common patterns and abstractions • The relationship betwee apps and infra • Kubernetes = Deploy + Run • Platform Building in the Cloud-Native Space • Platform Capabilities • Dapr on K8s • Dapr and TestContainers

Slide 3

Slide 3 text

MAURICIO SALATINO / WWW.SALABOY.COM @SALABOY

Slide 4

Slide 4 text

PLATFORMS ON K8S 40% DISCOUNT: SALATINO40

Slide 5

Slide 5 text

PLATFORMS ON K8S SALATINO40 😢 😢 😢 😢 😢 😢

Slide 6

Slide 6 text

#1: How many Java Developers are in the room? Time: 10

Slide 7

Slide 7 text

#1: How many Java Developers are in the room? Time: 8

Slide 8

Slide 8 text

#1: How many Java Developers are in the room? Time: 5

Slide 9

Slide 9 text

#1: How many Java Developers are in the room? Time: 3

Slide 10

Slide 10 text

#1: How many Java Developers are in the room? Time Out!

Slide 11

Slide 11 text

Fetching results

Slide 12

Slide 12 text

Fetching results….

Slide 13

Slide 13 text

Fetching results………

Slide 14

Slide 14 text

Fetching results………..…

Slide 15

Slide 15 text

Fetching results………………

Slide 16

Slide 16 text

Java Developers Java/Spring Developers: 80% Others (WASM, C (””,#,++), Go, Flash): 20%

Slide 17

Slide 17 text

#2: Do you have more than one Application?

Slide 18

Slide 18 text

Applications One App -> 30% More than one -> 70% No Apps -> ??

Slide 19

Slide 19 text

#3: Does your applications read or write data? (From storage, db, files, buckets)

Slide 20

Slide 20 text

Data? Or no Data? Most of them -> 70% Nope -> 20% I don’t understand the question -> 10%

Slide 21

Slide 21 text

#4: Does your applications consume or emit events/messages?

Slide 22

Slide 22 text

Async Messages Some of them -> 30% Nope -> 50% I don’t understand the question -> 20%

Slide 23

Slide 23 text

#5: Does your applications to talk to each other?

Slide 24

Slide 24 text

Chatty apps Yes using REST -> 40% Yes using GRPC -> 40% Other -> 30% No / I don’t understand the question -> 30%

Slide 25

Slide 25 text

Facts / Results App A App B App C

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

INFRASTRUCTURE

Slide 28

Slide 28 text

DATA Spring Boot Data JPA Redis MongoDB Oracle PostgreSQL MySQL MongoDB Client Redis Client Drivers / CIients JOOQ JBDC Abstractions

Slide 29

Slide 29 text

MESSAGING Spring Boot Integration JMS RabbitMQ Kafka Client RabbitMQ Client CIients AMQP Kafka Rsocket Pulsar Pulsar Client AMQP Clients Abstractions/Protocols

Slide 30

Slide 30 text

12-factor / Cloud-Native Envrionment Variables Development Testing Staging Production

Slide 31

Slide 31 text

Upgrading App A 1.5.0 V3.4.X V1.2.X Redis Client V3.4.3 Kafka Client V1.2.3 App B 3.4.0 Redis Client V3.5.1 Kafka Client V2.2.3

Slide 32

Slide 32 text

[Apps + Deps ] <==> Infra

Slide 33

Slide 33 text

[Apps + Framework + Deps] <==> Infra

Slide 34

Slide 34 text

Polyglot? App A 1.5.0 (Java) V3.4.X V1.2.X Redis Client V3.4.3 Kafka Client V1.2.3 App B 3.4.0 (Go) Redis Client V3.4.3 Kafka Client V1.2.3 Abstractions / Frameworks Abstractions / Frameworks

Slide 35

Slide 35 text

KUBERNETES

Slide 36

Slide 36 text

DEPLOY AND RUN

Slide 37

Slide 37 text

WHY?

Slide 38

Slide 38 text

YAML {

Slide 39

Slide 39 text

Demo #1 Let’s do it!

Slide 40

Slide 40 text

YAML {

Slide 41

Slide 41 text

We will need some tools! 🛠🪓

Slide 42

Slide 42 text

🤯

Slide 43

Slide 43 text

THE PLATFORM ENGINEERING BUZZ 🤔

Slide 44

Slide 44 text

👷🔧 🪓👷 Devs Infra SREs Data Scientists { } THE PLATFORM TEAM

Slide 45

Slide 45 text

My Platform Platform APIs Self Service Golden Paths THE PLATFORM

Slide 46

Slide 46 text

CNCF TAG APP DELIVERY https://tag-app-delivery.cncf.io/whitepapers/platforms/

Slide 47

Slide 47 text

Apps APIs Exchanging Messages/ Events Storing and Reading Data Observability Resiliency Dynamic Scaling Release Strategies Feature Flags Work f lows Traf f ic Management PLATFORM CAPABILITIES Tools Capabilities

Slide 48

Slide 48 text

https://www.aviransplace.com/post/platform-as-a-runtime-paar-beyond-platform-engineering

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

DISCLAIMER

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

->

Slide 53

Slide 53 text

App A 1.5.0 (Java) App B 3.4.0 (Go) Abstractions / Frameworks Abstractions / Frameworks Dapr Sidecar Dapr Sidecar Local HTTP/GRPC Local HTTP/GRPC Dapr StateStore Component Dapr PubSub Component Dapr Resiliency Policies

Slide 54

Slide 54 text

Read App Write App Subscribe App Frontend App Dapr StateStore Component Dapr PubSub Component Dapr Resiliency Policies Dapr Service Discovery

Slide 55

Slide 55 text

Demo #2

Slide 56

Slide 56 text

Read App Write App Subscribe App Frontend App Dapr StateStore Component Dapr PubSub Component Dapr Resiliency Policies Dapr Service Discovery Do Some SQL 5% 95%

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

💻🤔

Slide 59

Slide 59 text

❤ ❤ ❤ ❤ ❤❤ ❤ ❤ ❤ ❤ 🥳

Slide 60

Slide 60 text

Read App Write App Subscribe App Dapr StateStore Dapr PubSub Dapr Resiliency Policies Dapr Service Discovery Dapr PubSub Dapr Resiliency Policies Dapr StateStore 🪄

Slide 61

Slide 61 text

Demo #3

Slide 62

Slide 62 text

Takeaways

Slide 63

Slide 63 text

Use the right abstractions to enable teams to go faster

Slide 64

Slide 64 text

Break dependencies from infra

Slide 65

Slide 65 text

For language-agnostic application level APIs

Slide 66

Slide 66 text

Wire cloud native apps locally

Slide 67

Slide 67 text

Thanks @Salaboy

Slide 68

Slide 68 text

PLATFORMS ON K8S 40% DISCOUNT: SALATINO40