10 Reasons Local Dev Environments Don’t Work in a Kubernetes World
As fast as kids outgrow their sneakers, more companies are discovering that — as they scale — local dev environments are unable to meet the accelerated pace of cloud development, and management of complex microservices architecture.
There are several reasons why local development can be a problem for cloud developers: First, it can be a problem to set up a local development environment that mirrors the production environment — this can lead to subtle bugs that only occur in production. Second, local development environments can be slow, making it a problem to test code changes and manage complex microservices running in parallel. Third, it can be difficult to collaborate with others when everyone is working in their own local development environment.
But maybe the biggest problem with local developments is that they don’t work with Kubernetes. Kubernetes is a container orchestration system that is designed to run in a cloud environment. Therefore, it is simply not possible to run a cloud system like Kubernetes in a local development environment.
Bottomline is cloud developers need to work with cloud-based services and tools, which can be difficult to use in a local development environment. Cloud developers need to be able to quickly iterate and deploy code changes, which can be a problem when it comes to managing multiple microservices that comprise today’s complex cloud applications.
Discover how shifting to a cloud development environment can accelerate developer velocity and drive innovation by 50%!
Local Dev Environments Impeded monday.com’s Development Processes
In the case of monday.com, their local development environment could no longer support the processing of a monolith application along with dozens of associated microservices — each with its own set of configurations and local databases. Complicating matters was that the company's containerized development environment meant each developer needed to create a Docker network to interact with services.
Each monday.com Docker composition deployment was so resource-heavy that collectively they were killing laptops like a Halloween horror movie. Unfortunately, deploying a LocalStack to mimic AWS didn’t help much. At some point, it became impossible for the development team to run more than a couple of microservices simultaneously.
How a Kubernetes Dev Environment Manages Multiple Microservices in Parallel
Fortunately, a cloud development environment allowed the monday.com engineering team to work on multiple microservice components with instantaneously synced changes without needing to commit, build or push. Ultimately, with the help of Okteto, monday.com accelerated developer velocity by 50%.
“Having a good development environment can be hard, but the impact is huge once you get it right,” says Lior Rabin, Infrastructure Engineer, monday.com. “That's why we always aim to improve deployment times, make sure sync is working and stable, and invest in our documentation and knowledge sharing, allowing everyone in our R&D team to work together and make a great product.”
Today, more organizations demand "enterprise-ready" cloud-based Kubernetes development environments that can scale, spin up fast and replicate. Fast inner-loop flows — with the ability to run multiple microservices in parallel and a dev environment that mirrors production — further ensures developer success. Cloud overcomes the limitations of local dev environments and frees developers so they can strive for innovation excellence.
Ten reasons why local dev environments don’t work in a Kubernetes world
1. Can not mirror the production environment.
2. Do not work with Kubernetes.
3. It’s a challenge to collaborate with others when everyone is working in their own local development environment.
4. Difficult managing different versions of code and dependencies.
5. Hard to simulate different user types and permissions in a local development environment.
6. Complicated to test code that interacts with external services.
7. Tricky to integrate code changes from different developers working in their own local development environments.
8. Problematic to find and fix bugs and troubleshoot code that only runs in a local development environment.
9. They are slow, making it challenging to test code changes or manage multiple microservices in parallel.
10. Impossible to keep a local development environment up-to-date with the production environment.
Discover Why Enterprises Are Switching to Cloud Development