Slide 1

Slide 1 text

Mauricio Salatino @Diagrid Making your applications environment-agnostic 1

Slide 2

Slide 2 text

2 Mauricio Salatino @salaboy Ecosystem and Software Engineer

Slide 3

Slide 3 text

3 Openshift Commons Gatherings What make applications depending on a given environment?

Slide 4

Slide 4 text

What is an environment? 4

Slide 5

Slide 5 text

Are these environments? 5 - My local laptop, IDE, CLIs, etc - A local Kubernetes clusters using minishift or other alternatives - A CI pipeline like GitHub Actions or the good old Jenkins - A Virtual Machine that I need to login using SSH - OpenShift hosted on Google Cloud

Slide 6

Slide 6 text

Unfortunately, YES! 😐 These are all environments 6

Slide 7

Slide 7 text

Environments have in common: 7 - Must provide an application runtime - Must provide the application’s infrastructure - Someone must configure all this infrastructure - No matter the shape or size, how can we decouple our applications from environments??

Slide 8

Slide 8 text

8 Openshift does a very good job

Slide 9

Slide 9 text

9 APIs to the rescue!

Slide 10

Slide 10 text

24k GitHub Stars 7.7k Discord Users 1M Pulls/month 3.7k Contributors 14/173 CNCF Projects 300k Doc views/month

Slide 11

Slide 11 text

Runtime freedom with Dapr 11

Slide 12

Slide 12 text

12 Source: Insert source data here Insert source data here Insert source data here Dapr: Enabling developers with APIs My App State Stores Distributed Lock Pub/Sub Brokers Secret Stores Bindings & Triggers Workflow Configuration Cryptography Firebase Cassandra Redis Azure CosmosDB AWS DynamoDB Redis AWS SQS Azure Service Bus RabbitMQ GCP Pub/Sub GCP Storage AWS S3 Kafka Azure Storage Twilio AWS Secrets Manager Azure KeyVault GCP Secret Manager HashiCorp Vault Kubernetes Secret Redis Redis Dapr Workflow Azure KeyVault Kubernetes Secret Azure App Config PostgreSQL Redis PostgreSQL Azure CosmosDB MongoDB AWS DynamoDB Actors Over 110 components, largely contributed by the community

Slide 13

Slide 13 text

13 Connect distributed applications Infrastructure Compute Networking Container Container Implement reliable distributed apps Dapr connects applications with each other, using any interaction style: ● Request/Reply ● Pub/Sub ● Workflow ● Key/Value (Outbox) ● Actors ● Distributed lock Dapr API Devs Kubernetes runs any application workload on any infrastructure, with consistent abstractions: ● Resource constraints ● Lifecycle, healthchecks ● Deployment and rollback ● Policy based placement ● Declarative scaling Deploy and operate distributed apps Kubernetes API Ops Storage Application workloads ●Red Hat supported: Quarkus, EAP, OpenJDK, Spring Boot, Thorntail, Node.js,JBoss Web Server ●Non Red Hat supported in: Go, Node, Python, .Net, Java, C++, PHP, R, Web (HTTP)

Slide 14

Slide 14 text

For our example 14

Slide 15

Slide 15 text

Dapr for OpenShift users 15 - Dapr OpenShift Operator https://github.com/dapr/kubernetes-operator - Diagrid’s Conductor https://diagrid.io/conductor - Dapr on OpenShift case study https://www.cncf.io/case-studies/defacto/ - Dapr works with Knative, Keycloak, Keda, Strimzi. - Frameworks - Dapr for Quarkus & Spring Boot users - .Net and Aspire

Slide 16

Slide 16 text

linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat 16 Red Hat is the world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you