SlideShare a Scribd company logo
Developer Experience Cloud Native
-
Become Efficient and Achieve Parity
Michael Hofmann
https://hofmann-itconsulting.de
Developer Experience Cloud Native
create code
Docker build
& push
deploy to
(local) K8S
test & debug
remote
Git push
build & test
(local)
The Twelve-Factor App
“methodology for building software-as-a-service apps that”:
● “Use declarative formats for setup automation, to minimize time and cost for new
developers joining the project”;
● “Have a clean contract with the underlying operating system, offering maximum
portability between execution environments”;
● “Are suitable for deployment on modern cloud platforms, obviating the need for
servers and systems administration”;
● “Minimize divergence between development and production, enabling
continuous deployment for maximum agility”;
● “And can scale up without significant changes to tooling, architecture, or
development practices”.
https://12factor.net
The Twelve-Factor App
I. Codebase
One codebase tracked in revision control, many
deploys
II. Dependencies
Explicitly declare and isolate dependencies
III. Config
Store config in the environment
IV. Backing services
Treat backing services as attached resources
V. Build, release, run
Strictly separate build and run stages
VI. Processes
Execute the app as one or more stateless processes
VII. Port binding
Export services via port binding
VIII. Concurrency
Scale out via the process model
IX. Disposability
Maximize robustness with fast startup and graceful
shutdown
X. Dev/prod parity
Keep development, staging, and production as similar as
possible
XI. Logs
Treat logs as event streams
XII. Admin processes
Run admin/management tasks as one-off processes
Deviation in Parity: local vs cloud
● operation system
● JDK version
● environment
– ENV vars
– volume mounts
– DNS (myservice.mynamespace.svc.cluster.local)
● backing service (single server / cluster)
(e.g. Redis: SingleServerConfig, ClusterServersConfig)
● Java SecureRandom: in cloud too slow (missing entropy with isolated
CPUs)
The Quest:
How to get
new source code
quick
into container or pod
to keep
parity?
Possible Solutions
● synchronous deployment in Kubernetes
● source reload in Kubernetes pod
● swap deployment of Kubernetes pod
● for completeness: source reload in local container
– no focus in this session
– to many manual tasks necessary (see summary)
Sync Deployment: Skaffold
● handles the workflow for
– building (application and image)
– pushing to registry
– deployment to Kubernetes
● keeps artifacts in sync
● workflow automated or manually
https://skaffold.dev
Sync Deployment
Demo Skaffold
Skaffold Summary
● always full build and deployment cycle
– deactivate JUnits for shorter roundtrip
● remote debug only with manual intervention (pod restart)
● automatic sync of deployment files and Docker images
● cleanup of all (skaffold-ed) resources in cluster
● main usage scenario: keep local and remote in sync
● remote debug is not a first class citizen
● OpenLiberty can reload code on every change
● setting in server.xml
<applicationManager autoExpand=”true”>
● on file basis (app.war) or on individual class files
● concept: sync local class files to remote pod for
reload in running app server
● remote debug with JDWP (java debug wire protocol)
Source Reload: OpenLiberty/Ksync
Ksync
● installs DaemonSet in K8s cluster
● works bi-directional
● local watch process keeps local folder and pod
folder in sync
● new pods will also be synced (scale --replicas=2)
https://github.com/ksync/ksync
OpenLiberty/Ksync Summary
● full parity: code evolution inside running pod
● roundtrip takes only 1-2s
● JDWP is well-engineered
● stable debug connection (no pod restart)
● concept can also be applied to other app servers (e.g.
tomcat)
● remove JDWP agent and debug port in production
Source Reload: Quarkus Live Coding
● start app (in pod) in remote dev mode:
– package app in mutable jar format
– env setting: QUARKUS_LAUNCH_DEVMODE=true
– same as mvn compile quarkus:dev for local dev mode
● intercepts HTTP requests: redeploys app if new code exists
– redeploy takes less than 1 second (even for larger applications)
● connect local agent to remote host:
mvn quarkus:remote-dev -Dquarkus.live-reload.url=
http://my-remote-host:8080
● sync can be delegated to e.g. Ksync (without url in previous command)
Source Reload
Demo Quarkus Live Coding
Quarkus Live Coding Summary
● full parity: code evolution inside running pod
● no need for additional tools
● very quick roundtrip (< 1s)
● stable debug connection (JDWP)
● do not use dev-mode in production
– app must be repackaged for production
– env setting and debug port must be deleted
Service-C (Pod)
Service-B (Pod)
swapped
Service-A (Pod)
Service-B (Pod)
Swap Deployment
local
Kubernetes
Env
Volume
Env
Volume
Swap Deployment
● debugging a service mesh
● substitutes K8S pod with a two-way network proxy
● proxies data from K8S environment (e.g., TCP connections,
environment variables, volumes) to local process
● local process has its networking transparently overridden:
DNS calls and TCP connections are routed to K8S
● Bridge to Kubernetes or Telepresence
https://marketplace.visualstudio.com/items?itemName=mindaro.mindaro
https://www.telepresence.io
Swap Deployment
Demo Bridge to Kubernetes
Swap Deployment Summary
● parity broken only on OS or JDK (env, mount, DNS parity)
● local development with local debugging
● no manipulation of image or settings necessary
● Non root account: can be set but a little complicated (Docker or env-settings)
● individual traffic
– Telepresence additional service (commercial)
– Bridge to Kubernetes out-of-the-box
● main usage scenarios: develop and debug service mesh local with nearly
full parity
Tool OS/JDK ENV DNS Mount Debug Efficient
Source Reload
(Local Container)
mvn
liberty:devc
manually
--env
kubefwd
manually
--mount
Remote
Sync Deployment Skaffold Remote
Source Reload
(Kubernetes Pod)
OpenLiberty/
Ksync
Quarkus Live
Coding
Remote
Swap Deployment
Bridge to
Kubernetes
telepresence
Local
Summary

More Related Content

PPTX
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
PDF
How to contribute to cloud native computing foundation (CNCF)
PDF
Use Docker to Deliver Cognitive Services Running Cross Platform and Multi Clo...
PPTX
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
PDF
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
PDF
PVS-Studio in the Clouds: Azure DevOps
PDF
Cloud Native Patterns with Bluemix Developer Console
PDF
Using Docker for Testing
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
How to contribute to cloud native computing foundation (CNCF)
Use Docker to Deliver Cognitive Services Running Cross Platform and Multi Clo...
Take the Fastest Path to Node.Js Application Development with Bitnami & AWS L...
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
PVS-Studio in the Clouds: Azure DevOps
Cloud Native Patterns with Bluemix Developer Console
Using Docker for Testing

What's hot (20)

PPTX
High Performance Cloud-Native Microservices IndyCloudConf 2020
PDF
Docker Best Practices Workshop
PPTX
An Integrated Pipeline for Private and Public Clouds with Jenkins, Artifactor...
PDF
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
PDF
DevOps World | Jenkins World 2018 and The Future of Jenkins
PDF
Mihai Criveti - PyCon Ireland - Automate Everything
PDF
Jenkins Workflow Webinar - Dec 10, 2014
PDF
Improving WordPress Development and Deployments with Docker
PDF
Developer Productivity Engineering with Gradle
PDF
[RHFSeoul2017]6 Steps to Transform Enterprise Applications
PDF
Fine-Tuning of Agile Development
PDF
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
PDF
Distributed Docker Pipeline Architecture with CloudBees Jenkins Enterprise
PDF
Adopting Java for the Serverless world at AWS User Group Pretoria
PPTX
SkyBase - a Devops Platform for Hybrid Cloud
PDF
Continuous Testing
PDF
Git and GitHub for Documentation
PDF
Unleashing Docker with Pipelines in Bitbucket Cloud
PDF
Jenkins vs. AWS CodePipeline
PDF
Jenkins + Docker = Continuous Improvement
High Performance Cloud-Native Microservices IndyCloudConf 2020
Docker Best Practices Workshop
An Integrated Pipeline for Private and Public Clouds with Jenkins, Artifactor...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DevOps World | Jenkins World 2018 and The Future of Jenkins
Mihai Criveti - PyCon Ireland - Automate Everything
Jenkins Workflow Webinar - Dec 10, 2014
Improving WordPress Development and Deployments with Docker
Developer Productivity Engineering with Gradle
[RHFSeoul2017]6 Steps to Transform Enterprise Applications
Fine-Tuning of Agile Development
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
Distributed Docker Pipeline Architecture with CloudBees Jenkins Enterprise
Adopting Java for the Serverless world at AWS User Group Pretoria
SkyBase - a Devops Platform for Hybrid Cloud
Continuous Testing
Git and GitHub for Documentation
Unleashing Docker with Pipelines in Bitbucket Cloud
Jenkins vs. AWS CodePipeline
Jenkins + Docker = Continuous Improvement
Ad

Similar to Developer Experience Cloud Native - Become Efficient and Achieve Parity (20)

PDF
Red Hat Forum Benelux 2015
PDF
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
PDF
Containers and Orchestration approaches
PDF
Making Service Deployments to AWS a breeze with Nova
PDF
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
PDF
Kubernetes - training micro-dragons without getting burnt
PDF
Docker dev ops for cd meetup 12-14
PDF
Killer Docker Workflows for Development
PPTX
Containers&Orchestration Approaches
PDF
The path to a serverless-native era with Kubernetes
PDF
ContainerDayVietnam2016: Dockerize a small business
PPTX
What's New in Docker - February 2017
PDF
Red Hat and kubernetes: awesome stuff coming your way
PDF
The App Developer's Kubernetes Toolbox
PPTX
Docker Container As A Service - March 2016
PPTX
Containers as a Service with Docker
PDF
Kubernetes for the PHP developer
PDF
Test cloud application deployments locally and in CI without staging environm...
PPTX
Docker Enterprise Workshop - Technical
PDF
Open shift and docker - october,2014
Red Hat Forum Benelux 2015
Developer Experience Cloud Native - From Code Gen to Git Commit without a CI/...
Containers and Orchestration approaches
Making Service Deployments to AWS a breeze with Nova
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
Kubernetes - training micro-dragons without getting burnt
Docker dev ops for cd meetup 12-14
Killer Docker Workflows for Development
Containers&Orchestration Approaches
The path to a serverless-native era with Kubernetes
ContainerDayVietnam2016: Dockerize a small business
What's New in Docker - February 2017
Red Hat and kubernetes: awesome stuff coming your way
The App Developer's Kubernetes Toolbox
Docker Container As A Service - March 2016
Containers as a Service with Docker
Kubernetes for the PHP developer
Test cloud application deployments locally and in CI without staging environm...
Docker Enterprise Workshop - Technical
Open shift and docker - october,2014
Ad

More from Michael Hofmann (12)

PDF
Service Specific AuthZ In The Cloud Infrastructure
PDF
New Ways To Production - Stress-Free Evolution Of Your Cloud Applications
PDF
The Easy Way to Secure Microservices
PDF
Service Mesh vs. Frameworks: Where to put the resilience?
PDF
Service Mesh vs. Frameworks: Where to put the resilience?
PDF
Servicierung von Monolithen - Der Weg zu neuen Technologien bis hin zum Servi...
PDF
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
PDF
Service Mesh - kilometer 30 in a microservice marathon
PDF
Service Mesh - Kilometer 30 im Microservices-Marathon
PDF
API-Economy bei Financial Services – Kein Stein bleibt auf dem anderen
PPTX
Microprofile.io - Cloud Native mit Java EE
PPTX
Microservices mit Java EE - am Beispiel von IBM Liberty
Service Specific AuthZ In The Cloud Infrastructure
New Ways To Production - Stress-Free Evolution Of Your Cloud Applications
The Easy Way to Secure Microservices
Service Mesh vs. Frameworks: Where to put the resilience?
Service Mesh vs. Frameworks: Where to put the resilience?
Servicierung von Monolithen - Der Weg zu neuen Technologien bis hin zum Servi...
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh - kilometer 30 in a microservice marathon
Service Mesh - Kilometer 30 im Microservices-Marathon
API-Economy bei Financial Services – Kein Stein bleibt auf dem anderen
Microprofile.io - Cloud Native mit Java EE
Microservices mit Java EE - am Beispiel von IBM Liberty

Recently uploaded (20)

PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Digital Strategies for Manufacturing Companies
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PPTX
L1 - Introduction to python Backend.pptx
PPTX
ai tools demonstartion for schools and inter college
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
Online Work Permit System for Fast Permit Processing
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
medical staffing services at VALiNTRY
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
ManageIQ - Sprint 268 Review - Slide Deck
Upgrade and Innovation Strategies for SAP ERP Customers
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
How to Migrate SBCGlobal Email to Yahoo Easily
Digital Strategies for Manufacturing Companies
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
L1 - Introduction to python Backend.pptx
ai tools demonstartion for schools and inter college
VVF-Customer-Presentation2025-Ver1.9.pptx
Online Work Permit System for Fast Permit Processing
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Design an Analysis of Algorithms II-SECS-1021-03
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
How Creative Agencies Leverage Project Management Software.pdf
medical staffing services at VALiNTRY
2025 Textile ERP Trends: SAP, Odoo & Oracle
Wondershare Filmora 15 Crack With Activation Key [2025

Developer Experience Cloud Native - Become Efficient and Achieve Parity

  • 1. Developer Experience Cloud Native - Become Efficient and Achieve Parity Michael Hofmann https://hofmann-itconsulting.de
  • 2. Developer Experience Cloud Native create code Docker build & push deploy to (local) K8S test & debug remote Git push build & test (local)
  • 3. The Twelve-Factor App “methodology for building software-as-a-service apps that”: ● “Use declarative formats for setup automation, to minimize time and cost for new developers joining the project”; ● “Have a clean contract with the underlying operating system, offering maximum portability between execution environments”; ● “Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration”; ● “Minimize divergence between development and production, enabling continuous deployment for maximum agility”; ● “And can scale up without significant changes to tooling, architecture, or development practices”. https://12factor.net
  • 4. The Twelve-Factor App I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Explicitly declare and isolate dependencies III. Config Store config in the environment IV. Backing services Treat backing services as attached resources V. Build, release, run Strictly separate build and run stages VI. Processes Execute the app as one or more stateless processes VII. Port binding Export services via port binding VIII. Concurrency Scale out via the process model IX. Disposability Maximize robustness with fast startup and graceful shutdown X. Dev/prod parity Keep development, staging, and production as similar as possible XI. Logs Treat logs as event streams XII. Admin processes Run admin/management tasks as one-off processes
  • 5. Deviation in Parity: local vs cloud ● operation system ● JDK version ● environment – ENV vars – volume mounts – DNS (myservice.mynamespace.svc.cluster.local) ● backing service (single server / cluster) (e.g. Redis: SingleServerConfig, ClusterServersConfig) ● Java SecureRandom: in cloud too slow (missing entropy with isolated CPUs)
  • 6. The Quest: How to get new source code quick into container or pod to keep parity?
  • 7. Possible Solutions ● synchronous deployment in Kubernetes ● source reload in Kubernetes pod ● swap deployment of Kubernetes pod ● for completeness: source reload in local container – no focus in this session – to many manual tasks necessary (see summary)
  • 8. Sync Deployment: Skaffold ● handles the workflow for – building (application and image) – pushing to registry – deployment to Kubernetes ● keeps artifacts in sync ● workflow automated or manually https://skaffold.dev
  • 10. Skaffold Summary ● always full build and deployment cycle – deactivate JUnits for shorter roundtrip ● remote debug only with manual intervention (pod restart) ● automatic sync of deployment files and Docker images ● cleanup of all (skaffold-ed) resources in cluster ● main usage scenario: keep local and remote in sync ● remote debug is not a first class citizen
  • 11. ● OpenLiberty can reload code on every change ● setting in server.xml <applicationManager autoExpand=”true”> ● on file basis (app.war) or on individual class files ● concept: sync local class files to remote pod for reload in running app server ● remote debug with JDWP (java debug wire protocol) Source Reload: OpenLiberty/Ksync
  • 12. Ksync ● installs DaemonSet in K8s cluster ● works bi-directional ● local watch process keeps local folder and pod folder in sync ● new pods will also be synced (scale --replicas=2) https://github.com/ksync/ksync
  • 13. OpenLiberty/Ksync Summary ● full parity: code evolution inside running pod ● roundtrip takes only 1-2s ● JDWP is well-engineered ● stable debug connection (no pod restart) ● concept can also be applied to other app servers (e.g. tomcat) ● remove JDWP agent and debug port in production
  • 14. Source Reload: Quarkus Live Coding ● start app (in pod) in remote dev mode: – package app in mutable jar format – env setting: QUARKUS_LAUNCH_DEVMODE=true – same as mvn compile quarkus:dev for local dev mode ● intercepts HTTP requests: redeploys app if new code exists – redeploy takes less than 1 second (even for larger applications) ● connect local agent to remote host: mvn quarkus:remote-dev -Dquarkus.live-reload.url= http://my-remote-host:8080 ● sync can be delegated to e.g. Ksync (without url in previous command)
  • 16. Quarkus Live Coding Summary ● full parity: code evolution inside running pod ● no need for additional tools ● very quick roundtrip (< 1s) ● stable debug connection (JDWP) ● do not use dev-mode in production – app must be repackaged for production – env setting and debug port must be deleted
  • 17. Service-C (Pod) Service-B (Pod) swapped Service-A (Pod) Service-B (Pod) Swap Deployment local Kubernetes Env Volume Env Volume
  • 18. Swap Deployment ● debugging a service mesh ● substitutes K8S pod with a two-way network proxy ● proxies data from K8S environment (e.g., TCP connections, environment variables, volumes) to local process ● local process has its networking transparently overridden: DNS calls and TCP connections are routed to K8S ● Bridge to Kubernetes or Telepresence https://marketplace.visualstudio.com/items?itemName=mindaro.mindaro https://www.telepresence.io
  • 20. Swap Deployment Summary ● parity broken only on OS or JDK (env, mount, DNS parity) ● local development with local debugging ● no manipulation of image or settings necessary ● Non root account: can be set but a little complicated (Docker or env-settings) ● individual traffic – Telepresence additional service (commercial) – Bridge to Kubernetes out-of-the-box ● main usage scenarios: develop and debug service mesh local with nearly full parity
  • 21. Tool OS/JDK ENV DNS Mount Debug Efficient Source Reload (Local Container) mvn liberty:devc manually --env kubefwd manually --mount Remote Sync Deployment Skaffold Remote Source Reload (Kubernetes Pod) OpenLiberty/ Ksync Quarkus Live Coding Remote Swap Deployment Bridge to Kubernetes telepresence Local Summary