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

Developer Experience with Java on Kubernetes (D...

Thomas Vitale
November 19, 2022

Developer Experience with Java on Kubernetes (DevCon 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 to deliver value continuously, quickly, and reliably.

First, I’ll present several techniques for working locally effectively and productively. 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 delivering value.

Thomas Vitale

November 19, 2022
Tweet

More Decks by Thomas Vitale

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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 @vitalethomas
  4. Goals 2 Reduced cognitive load 3 Clear path to production

    1 Rapid and continuous feedback loop @vitalethomas
  5. From Traditional to Cloud Native Application Server, Embedded Server Runtime

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

    Application (Container) Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR) @vitalethomas
  7. Moving to Kubernetes Application Server, Embedded Server, Container, Kubernetes Runtime

    (OCI) Middleware (Kubernetes) Application (Container) Runtime (JVM) Middleware (Application Server) Application (WAR/EAR) Runtime (JVM) Application (JAR) Runtime (OCI) Application (Container) @vitalethomas
  8. Serverless Architectures Developers focus on code Focus on business logic

    Developer Platform Infrastructure Provisioning Workload Management Dynamic Scaling @vitalethomas
  9. 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
  10. Goals 2 Reduced cognitive load 3 Clear path to production

    1 Rapid and continuous feedback loop @vitalethomas
  11. Delivering Value From code to production Developer App Repo Production

    Application Operator Security Expert Platform Engineer @vitalethomas
  12. Example: Minimal Path Source -> Image -> URL Deploy to

    Kubernetes Package as container image Checkout source code
  13. Goals 2 Reduced cognitive load 3 Clear path to production

    1 Rapid and continuous feedback loop @vitalethomas
  14. 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 @vitalethomas
  15. Discount codes Manning • 35% discount code, valid for all

    products in all format • ctwdevcon22 • manning.com @vitalethomas