How we tackled the challenge of migration from Cloud Foundry to Kubernetes


Lukasz Szymik: Software Architect, DevOps Director at co.brick

How we tackled the challenge of migration from Cloud Foundry to Kubernetes

In the middle of last year we were confronted with a huge challenge. The cloud provider of one of our strategic partnerships had announced that the Cloud Foundry offering would be shut down at the end of November. The timeline was aggressive. We had two choices: find a new Cloud Foundry provider or migrate to Kubernetes. The first thing was to evaluate what we already have, and check if the Cloud Foundry would suit future needs. Since we are never afraid of any challenge or deadline, the decision was simple: play hard and migrate everything to Kubernetes on Google Cloud Platform.

Our solution

The work started immediately after defining the target architecture, which creates a solid base for future growth. The terraform had been prepared for the whole infrastructure. As soon as the Kubernetes cluster was running, we started migrating our workload. The migration of services from Cloud Foundry to Kubernetes was very straightforward. We adjusted the code to work with the Google Pub-Sub instead of RabbitMQ. Google JIB did an excellent job for us.

No one can deliver an excellent cloud-native solution without proper observability. The whole monitoring and logging was built from scratch using Prometheus, Grafana, Loki. The observability was improved a lot. All the data from services, Linkerd, Trafic, K8S in a single place gave us power.

Our conclusions

What did we achieve in the process? Better monitoring giving a holistic view of the whole headless commerce solution. The cloud costs were reduced, and simultaneously, the system's overall performance went up.

What was the most critical part of the migration? We were obligated to migrate customers on the fly with minimal impact on their business. We achieved it based on custom tooling and good coordination of the process. The impact on a single customer was below 5 minutes.

Overall: challenge was accepted, and the mission was delivered. Did we have left-overs? Of course. The next steps included improvement of the whole CI/CD pipeline. We did not do everything at once, but we knew the exact following steps.

Like this story? Stay tuned for more information about our work and exciting challenges we face. Make sure to follow our social media.