I've had to embed a distributed cache into our product, which is a server customers run themselves... I got it working pretty quickly, then spent lots of time testing everything on Docker containers to make sure the distributed part of it was working.
Finally, I started testing it on Kubernetes because a lot of customers seem to use that in production. That forced me to work on the following things (after I had to learn details of how the cache works and how to configure it correctly, use its API, design a good integration for it into our product etc.):
- Kubernetes basics, like what a pod, service, deployment etc. is.
- Helm charts for configuring everything (lots of YAML).
- Terraform to kick off the infrastructure in the "cloud".
- Minikube to run things locally.
- Using Docker K8s as Minikube didn't work well on my Mac M1 for some "reason".
- Installing Lens, a UI to make sense of the hundreds of pieces I was now juggling.
- Configuring the cloud environment with the right permissions for devs to be able to use it.
- Network configuration so nodes can "talk" to each other, without exposing things on the Internet for no reason.
And probably a few dozen more little things that ate up all the time I had. Designing and writing the code to make things work locally and in a Docker container (running Docker compose) was pretty easy and took me a couple of weeks, including a lot of testing.... but once I started with the k8s, cloud stuff... I've been on it for a few months now :( and things are still not working reliably in "certain cases" (everything that changes seems to break something). It's a real nightmare and took all the fun out of the project for me. Really makes "programming" something else entirely that I would be very happy to leave to a good sysadmin to handle.
Finally, I started testing it on Kubernetes because a lot of customers seem to use that in production. That forced me to work on the following things (after I had to learn details of how the cache works and how to configure it correctly, use its API, design a good integration for it into our product etc.):
- Kubernetes basics, like what a pod, service, deployment etc. is.
- Helm charts for configuring everything (lots of YAML).
- Terraform to kick off the infrastructure in the "cloud".
- Minikube to run things locally.
- Using Docker K8s as Minikube didn't work well on my Mac M1 for some "reason".
- Installing Lens, a UI to make sense of the hundreds of pieces I was now juggling.
- Configuring the cloud environment with the right permissions for devs to be able to use it.
- Network configuration so nodes can "talk" to each other, without exposing things on the Internet for no reason.
And probably a few dozen more little things that ate up all the time I had. Designing and writing the code to make things work locally and in a Docker container (running Docker compose) was pretty easy and took me a couple of weeks, including a lot of testing.... but once I started with the k8s, cloud stuff... I've been on it for a few months now :( and things are still not working reliably in "certain cases" (everything that changes seems to break something). It's a real nightmare and took all the fun out of the project for me. Really makes "programming" something else entirely that I would be very happy to leave to a good sysadmin to handle.