Slide 1

Slide 1 text

Thomas Vitale Platform & DevEx, Copenhagen September 05, 2024 Developer Experience On Kubernetes @vitalethomas

Slide 2

Slide 2 text

Systematic • Software Engineer • CNCF Ambassador, Oracle ACE Pro, Testcontainers Community Champion, KCD Organiser • Author of “Cloud Native Spring in Action” (Manning). • OSS contributor (Java, Spring, Cloud Native Technologies) Thomas Vitale thomasvitale.com @vitalethomas

Slide 3

Slide 3 text

Problem @vitalethomas

Slide 4

Slide 4 text

Value @vitalethomas

Slide 5

Slide 5 text

Delivering Value From idea to production Developer Production Idea @vitalethomas ?

Slide 6

Slide 6 text

Developer Experience @vitalethomas

Slide 7

Slide 7 text

Developer Experience “…developer experience could be defined as a means for capturing how developers think and feel about their activities within their working environments, with the assumption that an improvement of the developer experience has positive impacts on characteristics such as sustained team and project performance.” (F. Fagerholm, J. Münch) Developer Experience: Concept and De fi nition (F. Fagerholm, J. Münch) @vitalethomas

Slide 8

Slide 8 text

Developer Experience: Concept and De fi nition (F. Fagerholm, J. Münch) Developer Experience Conceptual Framework @vitalethomas

Slide 9

Slide 9 text

Developer Experience Tools are not enough ORGANIZATION PROCESSES TECHNOLOGY CULTURE @vitalethomas

Slide 10

Slide 10 text

Team Topologies Organisational design for software @vitalethomas

Slide 11

Slide 11 text

Continuous Delivery Better software faster @vitalethomas

Slide 12

Slide 12 text

Goals 2 Reduced cognitive load 3 Clear and safe path to production 1 Rapid and continuous feedback loop @vitalethomas

Slide 13

Slide 13 text

Development Workflow @vitalethomas

Slide 14

Slide 14 text

Cloud Native @vitalethomas

Slide 15

Slide 15 text

@vitalethomas Runtime (Language) Application (Executable) Cloud Native Applications

Slide 16

Slide 16 text

Containers @vitalethomas

Slide 17

Slide 17 text

Moving to Containers @vitalethomas Runtime (Language) Application (Executable) Runtime (OCI) Application (Container)

Slide 18

Slide 18 text

“Friends don’t let friends write Dockerfiles!” - Josh Long @vitalethomas

Slide 19

Slide 19 text

Dockerfiles “Dockerfiles are easy to write, but the current development guidelines do not produce containers that are repeatable and hardened.” CNCF Software Supply Chain Security Paper https://github.com/cncf/tag-security/tree/main/supply-chain-security @vitalethomas

Slide 20

Slide 20 text

Cloud Native Buildpacks @vitalethomas

Slide 21

Slide 21 text

Image pack build Cloud Native Buildpacks From source code to container image @vitalethomas Cloud Native Buildpacks https://buildpacks.io

Slide 22

Slide 22 text

Image pack build gradle bootBuildImage Cloud Native Buildpacks From source code to container image @vitalethomas Cloud Native Buildpacks https://buildpacks.io

Slide 23

Slide 23 text

Eliminate sources of non-determinism Reproducible builds with Cloud Native Buildpacks Cloud Native Buildpacks https://buildpacks.io Image pack build Image pack build Time = = @vitalethomas

Slide 24

Slide 24 text

Kubernetes @vitalethomas

Slide 25

Slide 25 text

Moving to Kubernetes @vitalethomas Runtime (Language) Application (Executable) Runtime (OCI) Application (Container) Runtime (OCI) Middleware (Kubernetes) Application (Container)

Slide 26

Slide 26 text

Working with Kubernetes Manifests for application deployment Deployment Deploy the application and con fi gure replication Service Expose the application from within the cluster @vitalethomas Ingress Expose the application from outside the cluster

Slide 27

Slide 27 text

Knative @vitalethomas

Slide 28

Slide 28 text

Knative Serverless experience on Kubernetes @vitalethomas

Slide 29

Slide 29 text

Serverless Architectures Developers focus on code Focus on business logic Developer Platform Infrastructure Provisioning Workload Management Dynamic Scaling @vitalethomas

Slide 30

Slide 30 text

Knative Serving Serverless Experience on Kubernetes Developer-friendly abstractions From image to URL Autoscaling Scaling to zero Progressive Rollouts Request-driven Event-driven Cloud agnostic @vitalethomas

Slide 31

Slide 31 text

Tilt @vitalethomas

Slide 32

Slide 32 text

Tilt Continuous development on Kubernetes @vitalethomas CODE BUILD RUN TEST Inner Development Loop

Slide 33

Slide 33 text

Capabilities over responsibilities @vitalethomas

Slide 34

Slide 34 text

Developer @vitalethomas

Slide 35

Slide 35 text

Developer Platform @vitalethomas API

Slide 36

Slide 36 text

Developer Platform @vitalethomas API

Slide 37

Slide 37 text

Crossplane @vitalethomas

Slide 38

Slide 38 text

Configuration: Workload API Crossplane Composition @vitalethomas

Slide 39

Slide 39 text

Configuration: Implementation Crossplane Composition Workload API Serverless Deployment Service Binding Application Conventions @vitalethomas

Slide 40

Slide 40 text

Delivering Value From code to production Developer Production Application Operator Security Expert Platform Engineer @vitalethomas

Slide 41

Slide 41 text

Goals 2 Reduced cognitive load 3 Clear and safe path to production 1 Rapid and continuous feedback loop @vitalethomas

Slide 42

Slide 42 text

Kubernetes for Local Development? @vitalethomas

Slide 43

Slide 43 text

Local Development Workflow @vitalethomas

Slide 44

Slide 44 text

Continuous Development Code, Run, Test, Debug Development Workflow gradle bootRun flask --debug run yarn dev Dev & Test Services @vitalethomas

Slide 45

Slide 45 text

Backstage @vitalethomas

Slide 46

Slide 46 text

backstage.io

Slide 47

Slide 47 text

DevContainers @vitalethomas

Slide 48

Slide 48 text

Development Containers Dev Environment in a Box @vitalethomas

Slide 49

Slide 49 text

Development Containers Dev Environment in a Box @vitalethomas GitHub Codespaces VS Code IntelliJ Gateway DevPod

Slide 50

Slide 50 text

Thomas Vitale @vitalethomas thomasvitale.com GitHub.com/ThomasVitale Developer Experience On Kubernetes