In our small team we have being using containerized development environments which include code editor, terminal and many other tools. Dockerized environments helped us to create team workspaces with everything set up and configured and onboard new members faster. This helped during lockdown a lot.
The only problem was that making customized docker containers with the toolset you need is quite hard and requires a lot of Docker knowledge and effort. So we made a base image, CLI tool and a web app hosting collection of installation scripts, which allowed to install required tools in the workspaces with a single command, abstracting away the complexity of Docker.
If you need dev environment with VScode and postgres, you need only 2 lines in Dockerfile: "RUN wrk install openvscode" and "RUN wrk install postgresql". And we can add tools to the workspace container even at runntime! We have already couple hundreeds of such apps in our library, that can be installed with just one command.
Yes, you can use docker-compose for this. We have used it too. Before. But having it in one docker image makes things much easier, because a single image can be pushed, pulled, saved and shared. One image, instead of many. Without the extra hassle of docker-compose.
Another notable feature that I added to the base workspace image – was the ability to give access to the workspace over the Internet. Even when workspace is running on my laptop! Pair coding session, where you can grant access to VSCode, terminal, Jupyter notebook, PGadmin with a single click. Because workspace is containerized, the security is not an issue.
But where we got the main win was Kubernetes. Later we have realised that hosting such environments in k8s cluster is even more convenient. You can code from anywhere, from any PC or laptop. Our containerized worskpaces turned out to be very suitable for the self-hosted cloud development platform. Without workspace we would set up postgres, pgadmin, vscode, cassandra, mongodb, spark, kafka, redis deploying separate helm charts. Just for making a development environment for a single person it would be an overkill.
Instead we deploy workspace with a single helm chart and let developer install the toolset directly in the workspace.
submitted by /u/Bluxmit
[link] [comments]
from Software Development – methodologies, techniques, and tools. Covering Agile, RUP, Waterfall + more! https://ift.tt/YXRnhwb