Slide 1

Slide 1 text

Thomas Vitale GOTO Copenhagen Oct 5th, 2022 Inner Development Loop With Java on Kubernetes @vitalethomas

Slide 2

Slide 2 text

Systematic • Software Architect at Systematic, Denmark. • 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

Inner Development Loop #GOTOcph @vitalethomas CODE RUN TEST DEBUG

Slide 4

Slide 4 text

Developer Experience #GOTOcph @vitalethomas

Slide 5

Slide 5 text

#GOTOcph @vitalethomas Developer Experience “Top of mind for everyone”

Slide 6

Slide 6 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) #GOTOcph @vitalethomas

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Value #GOTOcph @vitalethomas

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Technologies Developer experience with Java on Kubernetes #GOTOcph @vitalethomas

Slide 11

Slide 11 text

Team Topologies Organisational design for software #GOTOcph @vitalethomas

Slide 12

Slide 12 text

Continuous Delivery Better software faster #GOTOcph @vitalethomas

Slide 13

Slide 13 text

Development Workflow #GOTOcph @vitalethomas

Slide 14

Slide 14 text

Development Workflow Inner Loop and Outer Loop Inner Loop ‣Code ‣Run ‣Test ‣Debug Outer Loop ‣CI/CD ‣Compliance, security ‣Con fi guration, monitoring ‣Production deployment git push #GOTOcph @vitalethomas

Slide 15

Slide 15 text

Inner Development Loop Code, build, test E ffi cient Inner Development Loops for Cloud Native Applications https://www.getambassador.io/resources/inner-dev-loop/ #GOTOcph @vitalethomas

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Cloud Native #GOTOcph @vitalethomas

Slide 18

Slide 18 text

From Traditional to Cloud Native Application Server, Embedded Server Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR) #GOTOcph @vitalethomas

Slide 19

Slide 19 text

Containers #GOTOcph @vitalethomas

Slide 20

Slide 20 text

Moving to Containers Application Server, Embedded Server, Container Runtime (OCI) Application (Container) #GOTOcph @vitalethomas Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR)

Slide 21

Slide 21 text

Cloud Native Buildpacks #GOTOcph @vitalethomas

Slide 22

Slide 22 text

Image pack build Cloud Native Buildpacks From source code to container image #GOTOcph @vitalethomas

Slide 23

Slide 23 text

Cloud Native Buildpacks From source code to container image #GOTOcph @vitalethomas

Slide 24

Slide 24 text

Kubernetes #GOTOcph @vitalethomas

Slide 25

Slide 25 text

Moving to Kubernetes Application Server, Embedded Server, Container, Kubernetes Runtime (OCI) Middleware (Kubernetes) Application (Container) #GOTOcph @vitalethomas Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR) Runtime (OCI) Application (Container)

Slide 26

Slide 26 text

Tilt #GOTOcph @vitalethomas

Slide 27

Slide 27 text

Tilt Continuous development on Kubernetes #GOTOcph @vitalethomas

Slide 28

Slide 28 text

Tilt Continuous development on Kubernetes #GOTOcph @vitalethomas

Slide 29

Slide 29 text

Skaffold #GOTOcph @vitalethomas

Slide 30

Slide 30 text

Skaffold Continuous development on Kubernetes #GOTOcph @vitalethomas

Slide 31

Slide 31 text

Telepresence #GOTOcph @vitalethomas

Slide 32

Slide 32 text

Telepresence Local-to-remote bridges for fast iterations #GOTOcph @vitalethomas

Slide 33

Slide 33 text

Knative #GOTOcph @vitalethomas

Slide 34

Slide 34 text

Knative Serverless experience on Kubernetes #GOTOcph @vitalethomas

Slide 35

Slide 35 text

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

Slide 36

Slide 36 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 #GOTOcph @vitalethomas

Slide 37

Slide 37 text

Argo CD #GOTOcph @vitalethomas

Slide 38

Slide 38 text

Argo CD Continuous Deployment with GitOps #GOTOcph @vitalethomas

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

Configuration Management #GOTOcph @vitalethomas

Slide 41

Slide 41 text

Configuration Management On Kubernetes #GOTOcph @vitalethomas

Slide 42

Slide 42 text

https://carvel.dev

Slide 43

Slide 43 text

Capabilities over responsibilities #GOTOcph @vitalethomas

Slide 44

Slide 44 text

#GOTOcph @vitalethomas Developer

Slide 45

Slide 45 text

#GOTOcph @vitalethomas Developer Platform ?

Slide 46

Slide 46 text

#GOTOcph @vitalethomas Developer Platform ?

Slide 47

Slide 47 text

#GOTOcph @vitalethomas Developer Platform

Slide 48

Slide 48 text

Cartographer #GOTOcph @vitalethomas

Slide 49

Slide 49 text

Cartographer Golden paths to production #GOTOcph @vitalethomas

Slide 50

Slide 50 text

Delivering Value From code to production Developer App Repo Production Application Operator Security Expert Platform Engineer

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

Resources #GOTOcph @vitalethomas

Slide 53

Slide 53 text

Resources Source code • Presentation source code • Kadras: Application Platform Toolkit • The developer experience and the inner dev loop • Docker fi les vs. Cloud Native Buildpacks • Knative and Spring: Bringing back the func • Developer Work fl ow • Software Supply Chain Choreography #GOTOcph @vitalethomas

Slide 54

Slide 54 text

https://github.com/ThomasVitale/awesome-spring

Slide 55

Slide 55 text

Discount codes Manning • 35% discount code, valid for all products in all format • ctwgotocph22 • manning.com thomasvitale.com @vitalethomas

Slide 56

Slide 56 text

Thomas Vitale GOTO Copenhagen Oct 5th, 2022 Inner Development Loop With Java on Kubernetes @vitalethomas