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

Developer Experience with Java on Kubernetes (JBCNConf 2022)

Developer Experience with Java on Kubernetes (JBCNConf 2022)

In the cloud-native world, being a developer might be challenging. The number of technologies and patterns to know can be overwhelming. This session presents an approach based on open-source technologies and focused on improving the inner development loop and continuous delivery on Kubernetes. The end goal is delivering value continuously, quickly, and reliably.

First, I’ll present several techniques for working locally in an effective and productive way. Should you run Kubernetes in your development environment? I’ll cover a few different options. Using Java and Spring Boot, we’ll build a cloud native application following the principles of test-driven development. The inner development loop will be enhanced with Cloud Native Buildpacks, Skaffold, and Telepresence.

Continuous integration is a crucial practice for continuous delivery. We’ll check in code regularly, triggering an automated process to build, test, and package the application. Do you use pull requests? Relying on ArgoCD and Knative, I’ll show you how to work with temporary environments created dynamically when a new pull request is opened. Next, further acceptance tests will be carried on in a production-like environment to ensure the mainline is always in a releasable state. Finally, we’ll deploy and release the new changes to production following the GitOps principles.

Thomas Vitale

July 18, 2022

More Decks by Thomas Vitale

Other Decks in Technology


  1. Thomas Vitale JBCNConf Jul 18th, 2022 Developer Experience With Java

    on Kubernetes @vitalethomas
  2. Systematic • Software Architect at Systematic, Denmark. • Author of

    “Cloud Native Spring in Action” (Manning). • Spring Security and Spring Cloud contributor. Thomas Vitale thomasvitale.com @vitalethomas
  3. Developer Experience #jbcn22 @vitalethomas

  4. #jbcn22 @vitalethomas Developer Experience “Top of mind for everyone”

  5. #jbcn22 @vitalethomas Developer Experience “Fast feedback loops” "Easiness of doing

    one’s job” “How quick I can be productive with a tool” “Happy developers create exceptional software in the log term” “It’s reduced time to find things, tools downtime” “Means to be flexible for new paradigms and be able to integrate many frameworks and tools” Your answers
  6. Developer Experience “…developer experience could be defined as a means

    for capturing how developers think and feel about their activities within their working environments, #jbcn22 @vitalethomas 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)
  7. #jbcn22 @vitalethomas Developer Experience: Concept and De fi nition (F.

    Fagerholm, J. Münch) Developer Experience Conceptual Framework
  8. Value #jbcn22 @vitalethomas

  9. #jbcn22 @vitalethomas Developer Experience Tools are not enough ORGANIZATION PROCESSES

  10. #jbcn22 @vitalethomas Technologies Developer experience with Java on Kubernetes

  11. #jbcn22 @vitalethomas Team Topologies Organisational design for software

  12. #jbcn22 @vitalethomas Continuous Delivery Better software faster

  13. Development Workflow #jbcn22 @vitalethomas

  14. #jbcn22 @vitalethomas Development Workflow Inner Loop and Outer Loop Inner

    Loop ‣Code ‣Build ‣Deploy ‣Debug Outer Loop ‣CI/CD ‣Compliance, security ‣Con fi guration, monitoring ‣Production deployment git push
  15. #jbcn22 @vitalethomas Inner Development Loop Code, build, test E ffi

    cient Inner Development Loops for Cloud Native Applications https://www.getambassador.io/resources/inner-dev-loop/
  16. Goals #jbcn22 @vitalethomas 2 Reduced cognitive load 3 Clear path

    to production 1 Rapid and continuous feedback loop
  17. Cloud Native #jbcn22 @vitalethomas

  18. #jbcn22 @vitalethomas From Traditional to Cloud Native Application Server, Embedded

    Server Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR)
  19. Containers #jbcn22 @vitalethomas

  20. #jbcn22 @vitalethomas Moving to Containers Application Server, Embedded Server, Container

    Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR) Runtime (OCI) Application (Container)
  21. Cloud Native Buildpacks #jbcn22 @vitalethomas

  22. Image #jbcn22 @vitalethomas pack build Cloud Native Buildpacks From source

    code to container image
  23. Kubernetes #jbcn22 @vitalethomas

  24. #jbcn22 @vitalethomas Moving to Kubernetes Application Server, Embedded Server, Container,

    Kubernetes Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR) Runtime (OCI) Application (Container) Runtime (OCI) Middleware (Kubernetes) Application (Container)
  25. Tilt #jbcn22 @vitalethomas

  26. Tilt Continuous development on Kubernetes #jbcn22 @vitalethomas

  27. Tilt Continuous development on Kubernetes #jbcn22 @vitalethomas

  28. Skaffold #jbcn22 @vitalethomas

  29. Skaffold Continuous development on Kubernetes #jbcn22 @vitalethomas

  30. Telepresence #jbcn22 @vitalethomas

  31. Telepresence Local-to-remote bridges for fast iterations #jbcn22 @vitalethomas

  32. Knative #jbcn22 @vitalethomas

  33. Knative Serverless experience on Kubernetes #jbcn22 @vitalethomas

  34. Serverless Architectures Developers focus on code Focus on business logic

    Developer Platform Infrastructure Provisioning Workload Management Dynamic Scaling #jbcn22 @vitalethomas
  35. 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 #jbcn22 @vitalethomas
  36. Argo CD #jbcn22 @vitalethomas

  37. Argo CD Continuous Deployment with GitOps #jbcn22 @vitalethomas

  38. Cartographer #jbcn22 @vitalethomas

  39. Cartographer Golden paths to production #jbcn22 @vitalethomas

  40. Example: Minimal Path Source -> Image -> URL Deploy to

    Kubernetes Package as container image Checkout source code
  41. Delivering Value From code to production Developer App Repo Production

    Application Operator Security Expert Platform Engineer
  42. Resources #jbcn22 @vitalethomas

  43. Resources Source code • Presentation source code • 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 #jbcn22 @vitalethomas
  44. https://github.com/ThomasVitale/awesome-spring

  45. Enlightning Learn cloud concepts with Whitney and her lightboard #jbcn22

    @vitalethomas Tomorrow, 16:55
  46. Discount codes Manning • 35% discount code, valid for all

    products in all format • ctwjbcn22 • manning.com thomasvitale.com @vitalethomas
  47. Thomas Vitale JBCNConf Jul 18th, 2022 Developer Experience With Java

    on Kubernetes @vitalethomas