for more info, visit: https://www.salaboy.com/spring-io-2023
@salaboy - Spring I/O - Barcelona 2023Spring Boot in a Polyglot Cloud-Native WorldWith Dapr
View Slide
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
MAURICIO SALATINO / WWW.SALABOY.COM@SALABOY
PLATFORMS ON K8S40% DISCOUNT: SALATINO40
PLATFORMS ON K8SSALATINO40 😢 😢 😢 😢 😢 😢
#1: How many JavaDevelopers are inthe room?Time: 10
#1: How many JavaDevelopers are inthe room?Time: 8
#1: How many JavaDevelopers are inthe room?Time: 5
#1: How many JavaDevelopers are inthe room?Time: 3
#1: How many JavaDevelopers are inthe room?Time Out!
Fetching results
Fetching results….
Fetching results………
Fetching results………..…
Fetchingresults………………
Java DevelopersJava/Spring Developers: 80%Others (WASM, C (””,#,++), Go, Flash): 20%
#2: Do you havemore than oneApplication?
ApplicationsOne App -> 30%More than one -> 70%No Apps -> ??
#3: Does yourapplications read orwrite data?(From storage, db, files, buckets)
Data? Or no Data?Most of them -> 70%Nope -> 20%I don’t understand the question -> 10%
#4: Does yourapplications consume oremit events/messages?
Async MessagesSome of them -> 30%Nope -> 50%I don’t understand the question -> 20%
#5: Does yourapplications to talkto each other?
Chatty appsYes using REST -> 40%Yes using GRPC -> 40%Other -> 30%No / I don’t understand the question -> 30%
Facts / ResultsApp A App B App C
INFRASTRUCTURE
DATASpring Boot DataJPARedisMongoDBOraclePostgreSQLMySQLMongoDB ClientRedis ClientDrivers / CIientsJOOQJBDCAbstractions
MESSAGINGSpring Boot IntegrationJMSRabbitMQKafka ClientRabbitMQ ClientCIientsAMQPKafkaRsocketPulsar Pulsar ClientAMQP ClientsAbstractions/Protocols
12-factor /Cloud-NativeEnvrionment VariablesDevelopment Testing Staging Production
UpgradingApp A 1.5.0V3.4.XV1.2.XRedis Client V3.4.3Kafka Client V1.2.3App B 3.4.0Redis Client V3.5.1Kafka Client V2.2.3
[Apps + Deps ]<==>Infra
[Apps + Framework + Deps]<==>Infra
Polyglot?App A 1.5.0 (Java)V3.4.XV1.2.XRedis Client V3.4.3Kafka Client V1.2.3App B 3.4.0 (Go)Redis Client V3.4.3Kafka Client V1.2.3Abstractions / Frameworks Abstractions / Frameworks
KUBERNETES
DEPLOY AND RUN
WHY?
YAML{
Demo #1Let’s do it!
We will needsome tools! 🛠🪓
🤯
THE PLATFORMENGINEERING BUZZ🤔
👷🔧🪓👷DevsInfra SREsDataScientists{}THE PLATFORM TEAM
MyPlatformPlatformAPIsSelf ServiceGoldenPathsTHE PLATFORM
CNCF TAG APP DELIVERYhttps://tag-app-delivery.cncf.io/whitepapers/platforms/
Apps APIsExchangingMessages/EventsStoring andReading DataObservabilityResiliencyDynamicScalingReleaseStrategiesFeature FlagsWorkflows TrafficManagementPLATFORM CAPABILITIESToolsCapabilities
https://www.aviransplace.com/post/platform-as-a-runtime-paar-beyond-platform-engineering
DISCLAIMER
->
App A 1.5.0 (Java) App B 3.4.0 (Go)Abstractions / Frameworks Abstractions / FrameworksDapr Sidecar Dapr SidecarLocal HTTP/GRPC Local HTTP/GRPCDapr StateStore ComponentDapr PubSub Component Dapr Resiliency Policies
Read AppWrite App Subscribe AppFrontend AppDapr StateStore ComponentDapr PubSub Component Dapr Resiliency PoliciesDapr Service Discovery
Demo #2
Read AppWrite AppSubscribe AppFrontend AppDapr StateStore ComponentDapr PubSub ComponentDapr Resiliency PoliciesDapr Service DiscoveryDo Some SQL5%95%
💻🤔
❤❤❤❤❤❤❤❤❤❤🥳
Read AppWrite App Subscribe AppDapr StateStoreDapr PubSubDapr Resiliency PoliciesDapr Service DiscoveryDapr PubSubDapr Resiliency PoliciesDapr StateStore🪄
Demo #3
Takeaways
Use the right abstractionsto enable teams to go faster
Break dependenciesfrom infra
For language-agnosticapplication level APIs
Wire cloud native appslocally
Thanks@Salaboy