$30 off During Our Annual Pro Sale. View Details »

Inner Development Loop with Java on Kubernetes

Inner Development Loop with Java on Kubernetes

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 to deliver 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, Tilt, Knative, 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 the GitOps principles, I’ll show you how to work with temporary environments created dynamically when a new pull request is opened.

Finally, we'll use Cartographer to glue together all these different tools and design a golden path to production on Kubernetes, providing a clear separation of concerns and letting developers focus on the business logic.

Thomas Vitale

October 06, 2022
Tweet

More Decks by Thomas Vitale

Other Decks in Technology

Transcript

  1. Thomas Vitale GOTO Copenhagen Oct 5th, 2022 Inner Development Loop

    With Java on Kubernetes @vitalethomas
  2. 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
  3. Inner Development Loop #GOTOcph @vitalethomas CODE RUN TEST DEBUG

  4. Developer Experience #GOTOcph @vitalethomas

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

  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, 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
  7. Developer Experience: Concept and De fi nition (F. Fagerholm, J.

    Münch) Developer Experience Conceptual Framework #GOTOcph @vitalethomas
  8. Value #GOTOcph @vitalethomas

  9. Developer Experience Tools are not enough ORGANIZATION PROCESSES TECHNOLOGY CULTURE

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

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

  12. Continuous Delivery Better software faster #GOTOcph @vitalethomas

  13. Development Workflow #GOTOcph @vitalethomas

  14. 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
  15. 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
  16. Goals 2 Reduced cognitive load 3 Clear path to production

    1 Rapid and continuous feedback loop #GOTOcph @vitalethomas
  17. Cloud Native #GOTOcph @vitalethomas

  18. From Traditional to Cloud Native Application Server, Embedded Server Runtime

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

  20. 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)
  21. Cloud Native Buildpacks #GOTOcph @vitalethomas

  22. Image pack build Cloud Native Buildpacks From source code to

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

    @vitalethomas
  24. Kubernetes #GOTOcph @vitalethomas

  25. 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)
  26. Tilt #GOTOcph @vitalethomas

  27. Tilt Continuous development on Kubernetes #GOTOcph @vitalethomas

  28. Tilt Continuous development on Kubernetes #GOTOcph @vitalethomas

  29. Skaffold #GOTOcph @vitalethomas

  30. Skaffold Continuous development on Kubernetes #GOTOcph @vitalethomas

  31. Telepresence #GOTOcph @vitalethomas

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

  33. Knative #GOTOcph @vitalethomas

  34. Knative Serverless experience on Kubernetes #GOTOcph @vitalethomas

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

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

  38. Argo CD Continuous Deployment with GitOps #GOTOcph @vitalethomas

  39. Goals 2 Reduced cognitive load 3 Clear path to production

    1 Rapid and continuous feedback loop #GOTOcph @vitalethomas
  40. Configuration Management #GOTOcph @vitalethomas

  41. Configuration Management On Kubernetes #GOTOcph @vitalethomas

  42. https://carvel.dev

  43. Capabilities over responsibilities #GOTOcph @vitalethomas

  44. #GOTOcph @vitalethomas Developer

  45. #GOTOcph @vitalethomas Developer Platform ?

  46. #GOTOcph @vitalethomas Developer Platform ?

  47. #GOTOcph @vitalethomas Developer Platform

  48. Cartographer #GOTOcph @vitalethomas

  49. Cartographer Golden paths to production #GOTOcph @vitalethomas

  50. Delivering Value From code to production Developer App Repo Production

    Application Operator Security Expert Platform Engineer
  51. Goals 2 Reduced cognitive load 3 Clear path to production

    1 Rapid and continuous feedback loop #GOTOcph @vitalethomas
  52. Resources #GOTOcph @vitalethomas

  53. 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
  54. https://github.com/ThomasVitale/awesome-spring

  55. Discount codes Manning • 35% discount code, valid for all

    products in all format • ctwgotocph22 • manning.com thomasvitale.com @vitalethomas
  56. Thomas Vitale GOTO Copenhagen Oct 5th, 2022 Inner Development Loop

    With Java on Kubernetes @vitalethomas