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

Streamline Cloud-Native App Development Using CDEs

Streamline Cloud-Native App Development Using CDEs

Developing cloud-native applications is inherently challenging, but tools like Minikube, Kind, Skaffold, or Tilt can help make this process more manageable. We can further streamline the process with the advent of Cloud Development Environments (CDEs). In this session, I will share my experience with open-source and managed CDEs, along with the "Development Environments as Code" standards, such as Dev Containers, using a practical example to explore how they streamline the development of cloud-native applications.
In this session, I will discuss the advantages of Cloud Development Environments (CDEs) and Development Environments as Code standards. When used in conjunction with cloud-native application development, CDEs can help developers make development workflows simpler, more manageable, and reproducible.
This session does not focus on theories but also includes a practical example.

Avatar for Saeed Zarinfam

Saeed Zarinfam

May 26, 2025
Tweet

Other Decks in Technology

Transcript

  1. About Me - Software Engineer - Technology Evangelist - Technical

    Writer @ Consultant Software Engineer @ Saeed Zarinfam @zarinfam @zarinfam
  2. Open GitHub repositories in the cloud! • GitHub Codespaces, Gitpod,

    Coder, DevPod, and more • AssertJ Support for MockMvc in Spring Boot 3.4
  3. What happens if we want to open a Cloud-native app

    using CDEs? • Microservices • Many interconnected services • Multiple repository • Different programming languages
  4. 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.
  5. 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
  6. 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
  7. 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
  8. We invented more tools to fix , run, and deploy

    locally • Consequences of Dev/Prod Parity for the inner dev loop
  9. 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
  10. 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?
  11. 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"
  12. What is Cloud Development Environments (CDEs)? • Vagrant and NixOS

    • Remote development • SSH • IDEs • Language servers • IaC • VMs • Containers • Cloud infrastructure • Automation
  13. 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
  14. 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
  15. 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
  16. 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
  17. Dev Environment as Code • From IaC to EaaC to

    DEaC • Standards • Devcontainers (Codespaces, DevPods, Gitpod, Coder) • Devfile (Amazon CodeCatalyst, Eclipse Che) • Nix (Project IDX)
  18. 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
  19. Dev Containers • Base image: • Docker image • Dockerfile

    • Docker compose • Encapsulation: • Features • Templates
  20. Dev Containers • Customizations: • IDE settings • IDE extenstion

    • Lifecycle hooks: • “postCreateCommand” • And more
  21. 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 • employee-app
  22. Multi-repository (service) cloud- native app • One parent dev container

    file and folder, and one dev container file in each service
  23. Multi-repository (service) cloud- native app • One parent dev container

    file and folder, with one dev container file for each service in it
  24. 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
  25. 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