Slide 1

Slide 1 text

Mauricio Salatino & Thomas Vitale KubeCon+CloudNativeCon Europe Mar 21st, 2024 Unlocking New Platform Experiences with Open Interfaces @vitalethomas @salaboy

Slide 2

Slide 2 text

Challenges That teams face when trying to go faster Onboarding Process Application Runtime and Operations Distributed Systems @salaboy @vitalethomas

Slide 3

Slide 3 text

Let’s Start with a Demo Polyglot Distributed System Based on https://github.com/dockersamples/example-voting-app @salaboy @vitalethomas

Slide 4

Slide 4 text

diagrid.io • Software Engineer and CNCF Ambassador. • Author of “Platform Engineering on Kubernetes” (Manning). • @DaprDev @KnativeProject @KeptnProject Mauricio Salatino salaboy.com @Salaboy

Slide 5

Slide 5 text

Systematic • Software Engineer and CNCF Ambassador. • Author of “Cloud Native Spring in Action” (Manning). • OSS contributor (Java, Spring, Cloud Native Technologies) Thomas Vitale thomasvitale.com @vitalethomas

Slide 6

Slide 6 text

Onboarding Process Risk of complexity and high cognitive load for developers How to bootstrap a new project? Containerization? Is the developer’s responsibility? Local development work fl ow requiring Kubernetes? Di ff erent con fi guration between local and production? What’s the overall cognitive load for developers using the platform? @salaboy @vitalethomas

Slide 7

Slide 7 text

Onboarding Process @salaboy @vitalethomas Risk of complexity and high cognitive load for developers

Slide 8

Slide 8 text

Dealing with State @salaboy @vitalethomas

Slide 9

Slide 9 text

Dealing with State @salaboy @vitalethomas

Slide 10

Slide 10 text

Dealing with State Challenges * Do you run infrastructure like Redis and PostgreSQL locally for development? Do you run them using Docker Compose? * We introduced coupling between the apps and the environment (the infrastructure that they need to run) * Is Redis and PostgreSQL for local development the same versions as the one running in Production? * How are clients/drivers con fi gured? Di ff erent con fi gurations lead to applications behaving unexpectedly di ff erent @salaboy @vitalethomas

Slide 11

Slide 11 text

Event-Driven Scenarios @salaboy @vitalethomas

Slide 12

Slide 12 text

Event-Driven Scenarios Challenges * Event-Driven interactions can enable multiple integrations, platforms should promote and support complex event interactions * But, event-driven applications involve several consumers and producers. Coupling is introduced between the services and the infrastructure * Message Brokers like Kafka, RabbitMQ or cloud provider speci fi c services are complex to set up and miscon fi gurations can cause the entire application to stop working @salaboy @vitalethomas

Slide 13

Slide 13 text

Complex Service Orchestration @salaboy @vitalethomas

Slide 14

Slide 14 text

Complex Service Orchestrations * Sometimes we need more than just calling X services in a sequence * We want to make sure that: * If things fail we have a backup plan like: custom retries, circuit breakers and domain-speci fi c logic hooks * Support for long running and stateful interactions, for example waiting for a human input that might be on holidays * That we have compensation logic to undo operations @salaboy @vitalethomas

Slide 15

Slide 15 text

Application Runtime and Operations The Complexity of Going to Production How to rollout new deployments safely? Does the app have to be platform- aware? Autoscaling? Can we scale from zero? Can you infer the state of the app from its output signals? How to manage and operate a platform? @salaboy @vitalethomas

Slide 16

Slide 16 text

Let’s vote! https://diagrid.ws/vote @salaboy @vitalethomas

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Let’s unlock new platform experiences! @salaboy @vitalethomas

Slide 19

Slide 19 text

Bootstrapping a New Project @salaboy @vitalethomas Backstage Software Templates

Slide 20

Slide 20 text

Image pack build Building a Container Image Cloud Native Buildpacks @salaboy @vitalethomas

Slide 21

Slide 21 text

Empowering Application Teams Development Work fl ows @salaboy @vitalethomas Dagger Implement pipelines using your favourite programming language. Knative Functions Bootstrap, build, and deploy Kubernetes- native functions. Testcontainers Dev and test services integrated in the application lifecycle.

Slide 22

Slide 22 text

Dealing with state & Event-driven scenarios @salaboy @vitalethomas

Slide 23

Slide 23 text

Dealing with state & Event-driven scenarios @salaboy @vitalethomas

Slide 24

Slide 24 text

Cloud-Native Patterns

Slide 25

Slide 25 text

Cloud-Native Patterns

Slide 26

Slide 26 text

Cloud Native Patterns

Slide 27

Slide 27 text

Cloud Native Patterns - Outbox Patterns

Slide 28

Slide 28 text

Complex service orchestrations @salaboy @vitalethomas

Slide 29

Slide 29 text

Application Runtime Going to Production @salaboy @vitalethomas OpenFunction Kubernetes-native function runtime and lifecycle management. Knative Serving Serverless deployments, autoscaling, scaling from zero. KEDA Event-driven autoscaling, extensible, function- aware.

Slide 30

Slide 30 text

Platform Operations Building and maintaining a platform @salaboy @vitalethomas Carvel Kubernetes-native package management for portable platforms. Flux Continuous deployment via GitOps and RegistryOps. OpenTelemetry Uni fi ed APIs and protocols for observability signals (logs, metrics, traces…).

Slide 31

Slide 31 text

Takeaways * APIs, standards and open source projects: help you to protect your platform investments * Speedy Onboarding process: simplify and reduce cognitive load from new team members * Out of the Box Cloud-Native patterns: abstract away complexity to reduce cross-environment differences * Smooth Operations: optimise for your use cases, there is no silver bullet @salaboy @vitalethomas

Slide 32

Slide 32 text

Win a Book! 📕 📕 @salaboy @vitalethomas

Slide 33

Slide 33 text

Mauricio Salatino Thomas Vitale @salaboy salaboy.com @vitalethomas thomasvitale.com