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

A Developer's Journey to the (Open Hybrid) Cloud

A Developer's Journey to the (Open Hybrid) Cloud

So you’re developing a shiny new state-of-the-art distributed application. What now? How do you choose a stack and how do you actually deploy it to a cloud platform?

In this session, we will talk about a few ways devs and ops can work together to deliver and manage applications in a consistent and automated way. We’ll start from a Quarkus (Java) project and see how with the help of a few extensions we can generate manifests, define configurations, and generate metrics. We’ll then show how with the help of Tekton Pipelines and Gitops we can automate the delivery/deployments to Kubernetes (Openshift).

The audience should come away with some ideas on how to work with software and Kubernetes in a developer-friendly, straightforward and automated way.

Kevin Dubois

November 24, 2022
Tweet

More Decks by Kevin Dubois

Other Decks in Programming

Transcript

  1. @kevindubois #RedHat #Quarkus #Openshift A Developer’s Journey to the (Open

    Hybrid) Cloud Kevin Dubois Principal Developer Advocate, Red Hat
  2. @kevindubois #RedHat #Quarkus #Openshift Kevin Dubois • Principal Developer Advocate

    at Red Hat • Previously: (Lead) Software Engineer / Architect, mostly in USA • Speak English, Dutch, French, Italian • Passionate about improving Dev Experience with Open Source Linkedin: kevindubois Github: kdubois @[email protected]
  3. @kevindubois #RedHat #Quarkus #Openshift 1. Choose software stack 2. Choose

    how to build/package 3. Choose where to deploy 4. Choose how to deploy 5. … 6. Think about observability, automation, collaboration, resilience, scaling, ... ?
  4. @kevindubois #RedHat #Quarkus #Openshift A cohesive platform for optimized developer

    joy: • Quick code-build-verify turnaround ◦ Live reload in the blink of an eye ◦ Continuous Testing • No hassle native executable generation • Many developer-friendly features: Dev services; Hibernate Panache; simplified logging; IDE plugins; etc • An ever-growing ecosystem of extensions Why Quarkus?
  5. @kevindubois #RedHat #Quarkus #Openshift ★ Based on Java standards ★

    Moves as much as possible to build phase ★ Minimizes runtime dependencies ★ Maximizes dead code elimination ★ Enables Native Build with GraalVM / Mandrel ◦ (without having to know how to work with GraalVM!) Why Quarkus? (continued) Brings joy to Architects and (Dev)Ops as well:
  6. @kevindubois #RedHat #Quarkus #Openshift Supersonic Subatomic Java Quarkus + Native

    (via GraalVM) 12 MB Quarkus + JVM (via OpenJDK) 73 MB Traditional Cloud-Native Stack 136 MB Quarkus + Native (via GraalVM) 0.016 Seconds Quarkus + JVM (via OpenJDK) 0.943 Seconds Traditional Cloud-Native Stack 4.3 Seconds
  7. @kevindubois #RedHat #Quarkus #Openshift 18 JIT - OpenJDK HotSpot When

    to use which VM with Quarkus High memory density requirements High request/s/MB Fast startup time Best raw performance (CPU) Best garbage collectors Higher heap size usage Known monitoring tools Compile Once, Run anywhere Libraries that only works in standard JDK AOT - GraalVM native image Highest memory density requirements Highest request/s/MB for low heap size usages Faster startup time 10s of ms for Serverless
  8. @kevindubois #RedHat #Quarkus #Openshift The application Push to give energy

    windmill 1.Sends click Kafka Topic 2.Sends the interaction 3. Updates the UI Dashboard: Green Energy Nickname Team Push to generate energy Cars that needs energy Two teams competing (top 5 players) First wins
  9. @kevindubois #RedHat #Quarkus #Openshift Architecture 3: Generate power (REST) Game

    Dashboard 1: Assign player Name & Team (REST) 6: Update dashboard (SSE) 2: Increment player cluster counter 4: Send power event 5: Receive power events
  10. @kevindubois #RedHat #Quarkus #Openshift OpenShift Pipelines with Tekton to provide

    Kubernetes-Native CI/CD pipelines ➤ Based on Tekton Pipelines ➤ Kubernetes-native declarative CI/CD ➤ Pipelines run on-demand in isolated containers ➤ No central server to maintain! No plugin conflicts! ➤ Task library and integration with Tekton Hub ➤ Secure pipelines aligned with Kubernetes RBAC ➤ Visual and IDE-based pipeline authoring ➤ Pipeline templates when importing apps ➤ Automated install and upgrades via OperatorHub ➤ CLI, Web, VS Code and IntelliJ plugins Task step step Task step Task step step Task step step Pipeline step
  11. @kevindubois #RedHat #Quarkus #Openshift OpenShift GitOps with Argo CD OpenShift

    (on-premises) PR Merged OpenShift (public cloud) Kubernetes webhook poll sync hooks ➤ Configurations versioned in Git ➤ Automatically syncs configuration from Git ➤ Drift detection, visualization and correction ➤ Granular control over sync order ➤ Rollback and rollforward to any Git commit ➤ Manifest templating support (Helm, Kustomize, etc) ➤ Visual insight into sync status
  12. @kevindubois #RedHat #Quarkus #Openshift 35 Treat everything as code Git

    is the single source of truth Operations through Git workflows GitOps
  13. @kevindubois #RedHat #Quarkus #Openshift Push Pull Request Source Git Repository

    Image Registry Config Git Repository Kubernetes CD GitOps Sync Monitor Detect drift Take action
  14. @kevindubois #RedHat #Quarkus #Openshift Takeaways • Quarkus ◦ brings developer

    joy ◦ makes Java Cloud Native compatible ◦ makes it easy to work with containers / Kubernetes • Openshift enables true Open Hybrid Cloud capabilities • Automate using Tekton + Gitops • Playing games is fun