Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Principles of Portability for Multi-Cloud Applications

Principles of Portability for Multi-Cloud Applications

In this presentation, Bilgin challenges the traditional definition of application portability, arguing that it now encompasses development tools, operational APIs, and patterns. The talk begins by identifying design principles essential to enhancing application portability. Next, Bilgin explores the role of portable Operational APIs, highlighting the necessity of system insight using open standards. As he transitions towards dependency and data interoperability, the talk emphasizes the impact of reducing service coupling, demonstrating this concept with Dapr and CloudEvents. The conversation culminates by underlining how embracing de facto standards, and prioritizing broadly applicable polyglot tools, lead to the creation of evolutionary architectures. At the close of this session, attendees will walk away with a good understanding of the role cloud native technologies play in creating portable multi-cloud applications built to last.

Bilgin Ibryam

March 25, 2024
Tweet

More Decks by Bilgin Ibryam

Other Decks in Programming

Transcript

  1. 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 ?
  2. 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 ?
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. • 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