Streamline Cloud-Native
App Development Using
CDEs
Saeed Zarinfam
May 2025
Open GitHub
repositories in the
cloud!
• GitHub Codespaces,
Gitpod, Coder, DevPod,
and more
• spring-docker-compose
What happens if we
want to open a Cloud-
native app using CDEs?
• Microservices
• Many interconnected
services
• Multiple repository
• Different programming
languages
About Me
- Software Engineer
- Technology Evangelist
- Technical Writer @
Consultant Software Engineer @
Saeed Zarinfam
@zarinfam
@zarinfam
A brief history: What
is the cloud-native
application?
• A cloud-native
application is built from
the ground up to take
advantage of cloud
infrastructure,
services, and
scalability.
A brief history: What
is the cloud-native
application?
• From 12 factors to 15
factors
Inner dev loop and
outer dev loop
• Outer loop
• Deployment pipelines
• Inner loop:
• Local infra (dev/pro parity)
• Development Environment
“Developer Experience on Kubernetes”, by
Mauricio Salatino and Thomas Vitale
Inner dev loop and
outer dev loop
• Outer loop
• Deployment pipelines
• Inner loop:
• Local infra (dev/pro parity)
• Development Environment
• Easier to scale (Scalability
and Elasticity) - Outer loop
in SDP
• Faster development – Inner
loop in SDP
Many tools have been
invented to handle the
outer loop complexities
• CI/CD Platforms (GitHub
Actions, Argo CD and …)
• Helm
• GitOps and Deployment
Automation
• Observability
• IaC and EaaC
• Mnaged services (K8s and …)
• And more
• ✅ Under control
We invented more
tools to fix , run,
and deploy locally
• Consequences
of Dev/Prod Parity for the
inner dev loop
We invented more
tools to fix , run,
and deploy locally
• Consequences
of Dev/Prod Parity for the
inner dev loop
• Minikube, kind and more
• Skaffold, Tilt, Odo,
Okteto and more
• And more tools
We invented more
tools to fix , run,
and deploy locally
• Consequences
of Dev/Prod Parity for the
inner dev loop
• Minikube, kind and more
• Skaffold, Tilt, Odo,
Okteto and more
• And more tools
And again:
• More resources need
(locally)
• More complexity
• ❓ Did our development
process really get faster?
Why not use cloud
infrastructure for
development?
• Inner dev loop on the
cloud
• Use cloud resource
elasticity
A Persian proverb says:
"The potter drinks from the broken jar"
The closest conceptual equivalent in English is:
"The cobbler's children go barefoot"
What is Cloud
Development
Environments (CDEs)?
• Vagrant and NixOS
What is Cloud
Development
Environments (CDEs)?
• Vagrant and NixOS
• Remote development
• SSH
• IDEs
• Language servers
• IaC
• VMs
• Containers
• Cloud infrastructure
• Automation
Benefits of CDEs
Consistency and
Repeatability
Flexibility and
Scalability
Portability (Code
From Anywhere)
Faster onboarding
for new
developers
Simplified
environment
management
Enhanced security
and backup
Seamless
collaboration
Cost
CDEs Architecture & Components
IDE or a
browser as a
client
JetBrains IDEs
(Gateway)
VS Code and VS
Code-based
IDEs (Cursor,
Windsurf, and
…)
…
Protocol
SSH
Remote
development
tools
Language
servers
Debugger
…
Remote
machine
VM
Container
K8s
Hybrid
DEaC
standards
Dev Containers
Devfiles
Nix
Terraform
Orchestrator
or without an
orchestrator
K8s
Control Plane
Runner
Agent
Client-only
CDEs Architecture & Components
GitHub Codespaces
DevPod
Proprietary
and open-
source CDEs
• GitHub Codespaces
• DevPod
• Gitpod
oGitpod classic (deprecated)
oGitpod desktop
• Coder
• Project IDX (Firebase Studio)
• JetBrains CodeCanvas
• Amazon CodeCatalyst
• Red Hat OpenShift Dev
Spaces (based on Eclipse Che)
• CodeSandbox
Let's see it in
practice
• polar-devcontainer-springio25
• Polar Bookshop
• Java 17, Kind, Tilt and more
• Use DevPod on a remote
machine
• “Cloud Native Spring in Action, With Spring
Boot and Kubernetes” by Thomas Vitale
Dev Environment
as Code
• From IaC to EaaC to
DEaC
Dev Environment
as Code
• From IaC to EaaC to
DEaC
• Standards
• Devcontainers (Codespace
s, DevPods, Gitpod, Coder)
• Devfile (Amazon
CodeCatalyst, Eclipse Che)
• Nix (Project IDX)
Dev Containers
• It's a Microsoft spec, quickly adopted
in CDEs and IDEs.
• Codespaces, Devpod, Coder, Gitpod
Flex, and CodeSandbox
• Run locally on the Docker engine
• Nix also supports Devcontainers
(devenv)
• Devbox
• Devcontainer CLI
Dev Containers
• Base image:
• Docker image
• Dockerfile
• Docker compose
• Encapsulation:
• Features
• Templates
Dev Containers
• Customizations:
• IDE settings
• IDE extenstion
• Lifecycle hooks:
• “postCreateCommand”
• And more
Multi-repository
(service) cloud-
native app
• 💡 Do NOT restructure
your project for a DEaC
standard.
• One parent dev
container file and folder
for all services
Multi-repository
(service) cloud-
native app
• One parent dev
container file and folder,
and one dev container
file in each service
Multi-repository
(service) cloud-
native app
• One parent dev
container file and folder,
with one dev container
file for each service in it
Multi-repository
(service) cloud-
native app
• Use Docker Compose to
share services
• docker-in-docker, docker-
outside-of-docker, and
other templates
• Git submodule or a
parent repo
• Mount the parent folder
(repo)
• 👾 Bank of Anthos project
(my fork) using DevPod
Conclusion
Benefits
• Scalability and shared
resources
• Preconfigured, reproducible,
and isolated dev environment
• GitOps practices for
development env
• Less magic and faster
onboarding for complicated
microservices
• And more
Limitations
• Network (latency, …)
• IDEs limitations
• Mobile development
• Multi service
• Data Privacy and Security
Concerns
• Costs
Q &A

Streamline Cloud-Native App Development Using CDEs​.pptx

  • 1.
    Streamline Cloud-Native App DevelopmentUsing CDEs Saeed Zarinfam May 2025
  • 2.
    Open GitHub repositories inthe cloud! • GitHub Codespaces, Gitpod, Coder, DevPod, and more • spring-docker-compose
  • 3.
    What happens ifwe want to open a Cloud- native app using CDEs? • Microservices • Many interconnected services • Multiple repository • Different programming languages
  • 4.
    About Me - SoftwareEngineer - Technology Evangelist - Technical Writer @ Consultant Software Engineer @ Saeed Zarinfam @zarinfam @zarinfam
  • 5.
    A brief history:What is the cloud-native application? • A cloud-native application is built from the ground up to take advantage of cloud infrastructure, services, and scalability.
  • 6.
    A brief history:What is the cloud-native application? • From 12 factors to 15 factors
  • 7.
    Inner dev loopand outer dev loop • Outer loop • Deployment pipelines • Inner loop: • Local infra (dev/pro parity) • Development Environment “Developer Experience on Kubernetes”, by Mauricio Salatino and Thomas Vitale
  • 8.
    Inner dev loopand outer dev loop • Outer loop • Deployment pipelines • Inner loop: • Local infra (dev/pro parity) • Development Environment • Easier to scale (Scalability and Elasticity) - Outer loop in SDP • Faster development – Inner loop in SDP
  • 9.
    Many tools havebeen invented to handle the outer loop complexities • CI/CD Platforms (GitHub Actions, Argo CD and …) • Helm • GitOps and Deployment Automation • Observability • IaC and EaaC • Mnaged services (K8s and …) • And more • ✅ Under control
  • 10.
    We invented more toolsto fix , run, and deploy locally • Consequences of Dev/Prod Parity for the inner dev loop
  • 11.
    We invented more toolsto fix , run, and deploy locally • Consequences of Dev/Prod Parity for the inner dev loop • Minikube, kind and more • Skaffold, Tilt, Odo, Okteto and more • And more tools
  • 12.
    We invented more toolsto fix , run, and deploy locally • Consequences of Dev/Prod Parity for the inner dev loop • Minikube, kind and more • Skaffold, Tilt, Odo, Okteto and more • And more tools And again: • More resources need (locally) • More complexity • ❓ Did our development process really get faster?
  • 13.
    Why not usecloud infrastructure for development? • Inner dev loop on the cloud • Use cloud resource elasticity A Persian proverb says: "The potter drinks from the broken jar" The closest conceptual equivalent in English is: "The cobbler's children go barefoot"
  • 14.
    What is Cloud Development Environments(CDEs)? • Vagrant and NixOS
  • 15.
    What is Cloud Development Environments(CDEs)? • Vagrant and NixOS • Remote development • SSH • IDEs • Language servers • IaC • VMs • Containers • Cloud infrastructure • Automation
  • 16.
    Benefits of CDEs Consistencyand Repeatability Flexibility and Scalability Portability (Code From Anywhere) Faster onboarding for new developers Simplified environment management Enhanced security and backup Seamless collaboration Cost
  • 17.
    CDEs Architecture &Components IDE or a browser as a client JetBrains IDEs (Gateway) VS Code and VS Code-based IDEs (Cursor, Windsurf, and …) … Protocol SSH Remote development tools Language servers Debugger … Remote machine VM Container K8s Hybrid DEaC standards Dev Containers Devfiles Nix Terraform Orchestrator or without an orchestrator K8s Control Plane Runner Agent Client-only
  • 18.
    CDEs Architecture &Components GitHub Codespaces DevPod
  • 19.
    Proprietary and open- source CDEs •GitHub Codespaces • DevPod • Gitpod oGitpod classic (deprecated) oGitpod desktop • Coder • Project IDX (Firebase Studio) • JetBrains CodeCanvas • Amazon CodeCatalyst • Red Hat OpenShift Dev Spaces (based on Eclipse Che) • CodeSandbox
  • 20.
    Let's see itin practice • polar-devcontainer-springio25 • Polar Bookshop • Java 17, Kind, Tilt and more • Use DevPod on a remote machine • “Cloud Native Spring in Action, With Spring Boot and Kubernetes” by Thomas Vitale
  • 21.
    Dev Environment as Code •From IaC to EaaC to DEaC
  • 22.
    Dev Environment as Code •From IaC to EaaC to DEaC • Standards • Devcontainers (Codespace s, DevPods, Gitpod, Coder) • Devfile (Amazon CodeCatalyst, Eclipse Che) • Nix (Project IDX)
  • 23.
    Dev Containers • It'sa Microsoft spec, quickly adopted in CDEs and IDEs. • Codespaces, Devpod, Coder, Gitpod Flex, and CodeSandbox • Run locally on the Docker engine • Nix also supports Devcontainers (devenv) • Devbox • Devcontainer CLI
  • 24.
    Dev Containers • Baseimage: • Docker image • Dockerfile • Docker compose • Encapsulation: • Features • Templates
  • 25.
    Dev Containers • Customizations: •IDE settings • IDE extenstion • Lifecycle hooks: • “postCreateCommand” • And more
  • 26.
    Multi-repository (service) cloud- native app •💡 Do NOT restructure your project for a DEaC standard. • One parent dev container file and folder for all services
  • 27.
    Multi-repository (service) cloud- native app •One parent dev container file and folder, and one dev container file in each service
  • 28.
    Multi-repository (service) cloud- native app •One parent dev container file and folder, with one dev container file for each service in it
  • 29.
    Multi-repository (service) cloud- native app •Use Docker Compose to share services • docker-in-docker, docker- outside-of-docker, and other templates • Git submodule or a parent repo • Mount the parent folder (repo) • 👾 Bank of Anthos project (my fork) using DevPod
  • 30.
    Conclusion Benefits • Scalability andshared resources • Preconfigured, reproducible, and isolated dev environment • GitOps practices for development env • Less magic and faster onboarding for complicated microservices • And more Limitations • Network (latency, …) • IDEs limitations • Mobile development • Multi service • Data Privacy and Security Concerns • Costs
  • 31.