Alex enjoys building, mentoring, growing teams and then lead them into deep water to tackle challenging problems 🚀 He is keen to experiment with ways of working and innovative technical approaches. It is important for Alex to be committed to highest standard in every initiative he is involved in 🧨
When working with applications, one of the required things are - development environment. This may not be obvious at first, but great developer experience can ultimately save you money. Hence having working, reliable and automated development environment is key to increase developer's experience and hence productivity.
Below we'll review few options, and make decisions based on your needs.
This is simplest setup, you only need to install Docker locally. Choose this approach for relatively simple environments. For example, I would pick this approach for system that has up to 6 components e.g. couple of services running together with API Gateway or Rails app with database and redis. I wouldn't use docker-based environment trying to wire 10 microservices together.
Choose k8s-based environment when:
This approach would require more powerful local workstations.
It is not uncommon to adopt Docker-based environment for development purposes. But when you need to test how application is executed in Kubernetes (without going thru CI/CD loop) you build docker image locally and test deployment on a local Kubernetes cluster. This approach allows for developer-friendly approach initially and the trade-off is time spent testing k8s-related pieces separately.
This is the most complex setup across approaches mentioned here. Because it involves multiple moving pieces and you also want to address security implications of remote development environments:
Fully remote
Partial remote
When done right, this approach provides an excellent and reliable developer workflow. Because in addition to lighter resource consumption on local, developers use their remote environments for collaborating with their fellow developers (pair programming, coaching), product managers (feature review) and QA engineers (reproducing bugs, doing initial testing)