Slide 1

Slide 1 text

Bilgin Ibryam @bibryam Product Manager, Diagrid Principles of Portability for Multi-Cloud Applications

Slide 2

Slide 2 text

Why Application Portability? Hybrid Multi-Cloud Hybrid Cloud Public Cloud Private Cloud (On Premises) Multi-Cloud Public Cloud Public Cloud Edge Local Apps Apps Apps Dev ?

Slide 3

Slide 3 text

Slicing Application Workloads https://leanpub.com/cloudstrategy Backend / Frontend Legacy / Greenfield Critical / Non-critical Sensitive / Non-sensitive Development / Production Business as usual / DR Steady / Burst Choice (regulation, knowledge) Segmentation (compute vs. analytics) Portable (DR, avoid lock in) Parallel (high availability, scale out) Hybrid cloud Multi-cloud Apps Apps Apps Multiple Clouds Multiple Languages Local ?

Slide 4

Slide 4 text

Compute Portability Local (ex: Java) AWS Azure GCP App Portability Function Spring Cloud Functions Lambda Azure Functions Cloud Functions Knative Modular Monolith (Container) Docker Compose App Runner Container Apps Cloud Run OCI specs Microservice (Kubernetes) Minikube EKS AKS GKE Kubernetes Monolith (VM) Hashicorp Vagrant EC2 Virtual Machine Compute Engine KubeVirt Cloud App Compute Multi-Cloud & Polyglot

Slide 5

Slide 5 text

Synchronous Interactions Cloud App2 App1 Local (ex: Java) AWS Azure GCP App Portability Service Discovery Spring Cloud Consul/Netflix Varies per compute type/location Network Security (authn & authz) Keycloak, Spring Auth Server Varies per cloud OIDC OAuth 2.0 Resiliency (timeout, retry, circuit breaker) Hystrix, Resilience4j Spring Cloud CB Application specific Service Discovery Network Security Resiliency Istio LinkerD Dapr App Mesh AKS with OSM Anthos Service Mesh Envoy/Istio Dapr Observability (Metrics, Tracing, Logs) Prometheus, Jaeger, Micrometer CloudWatch Monitor Cloud Monitoring Open Telemetry (OTLP) Library Sidecar Multi-Cloud & Polyglot Request Reply

Slide 6

Slide 6 text

Local AWS Azure GCP App Portability Message Queue ActiveMQ RabbitMQ SQS/SNS Amazon MQ Queue Storage Service Bus Cloud Pub/Sub Firebase Messaging AMQP Dapr PubSub API Event Streaming (Polling consumer) Apache Kafka Kinesis Amazon MSK Event Hubs Cloud Pub/Sub Kafka as a Protocol Event Bus (Event-driven consmr) Knative Dapr Event Bridge Event Grid Eventarc CloudEvents with Knative or Dapr Change Data Capture Debezium DynamoDB Streams Cosmos DB CDC Bigtable Change Streams CloudEvents Debezium or Dapr Asynchronous Interactions Cloud App2 App1 Multi-Cloud & Polyglot

Slide 7

Slide 7 text

Data Store Interactions Local AWS Azure GCP App Portability Relational Database PostgreSQL Aurora, RDS SQL Database Cloud SQL PostgreSQL protocol Key/Value Store Redis DynamoDB Cosmos DB BigTable Redis Document Store MongoDB DocumentDB Cosmos DB FireStore MongoDB Object Store and others* Minio S3 Blob Storage Cloud Storage AWS S3 API Cloud Datastore App1 *Vector, File, Time Series, Graph, Columnar, TextSearch… Multi-Cloud & Polyglot

Slide 8

Slide 8 text

Workflow Executions Local AWS Azure GCP App Portability Task Scheduling Quartz, Shedlock EventBridge Scheduler Azure Scheduler Cloud Scheduler Cron syntax Orchestration Uber Cadence, Netflix Conductor, Temporal, Dapr StepFunction Durable Functions Cloud Workflows jBPM Cloud App2 App1 Multi-Cloud & Polyglot

Slide 9

Slide 9 text

● Multi-cloud and polyglotism is not only for application, but skills portability too! ● For portability, pick cloud-agnostic protocols, APIs, and de-facto standards: ✓ Compute: ✓ Observability: ✓ Synchronous interactions: ✓ Asynchronous interactions: ✓ Data interactions: ■ Workflow execution: No de-facto standard Summary

Slide 10

Slide 10 text

Thank You Visit the Diagrid booth to play a Dapr game! @bibryam