Migration of multiple Ruby on Rails applications to Kubernetes
MICE is Germany based “Airbnb” for events and meeting venues. MICE’s technical team wasn’t happy with their then-current hosting. Platform’s traffic went up and they needed something more flexible and durable.
Besides that, they required a CI/CD pipeline to be implemented in order to enable seamless updates to multiple Ruby-on-Rails apps.
Location: Attenkirchen, Germany
Industry: Venue booking for events and meetings
Partnership period: January 2019 – December 2019
Team size: 1 Team Lead, 2 DevOps engineers
Team location: Kharkiv, Ukraine
Services: AWS infrastructure performance optimization, CI/CD and monitoring implementation
Expertise delivered: Cloud infrastructure management and optimization, monitoring and alerting implementation, CI/CD configuration
Technology stack: AWS, Ruby on Rails, Redis, ElasticSearch, PostgreSQL, Memcached, Kubernetes, Docker, Jenkins, Helm, ELK stack, elastalert, Prometheus, Grafana.
The project plan included the following:
- Migrating the existing containerized microservices with Ruby on Rails apps to a new cloud platform (AWS) using Helm
- Implementing the CI/CD pipeline using Jenkins to automate software delivery and updates
- Building a unified monitoring platform based on Prometheus, Nagios and ELK stack to generate smart alerts on every step of the multiple stages of updates
- Preparing detailed developer documentation and transferring the knowledge to the MICE team
Challenges and solutions
Clear and quick communication with MICE’s CTO helped us a lot to follow a predefined roadmap for the project and pinpoint possible roadblocks. Some additional challenges arose that were outside the initial scope of work, but the Agile approach of IT Svit team allowed to include additional tasks to the project pipeline on the go.
We prepared a Jenkins pipeline for Canary deployment, which created a small-scale staging environment, rerouted a part of traffic there and tested the updates extensively. Successful updates then propagated to the whole environment, while crashes resulted in detailed metrics and logs sent to developers and traffic rerouted to the main production environment.
The next step was choosing the most appropriate components for a holistic monitoring system. Previously, the customer was not able to test certain updates before rolling them into production. We went with Prometheus/Grafana, Nagios, elastalert and Rollbar. This enabled us to monitor the system performance extensively and keep a close eye on infrastructure performance at all times.
MICE’s online platform got a new cloud hosting set up on AWS which helped the platform to sustain heavy traffic loads. Automated CI/CD pipeline enabled development process escalation. On top of everything, there were easy to read monitoring system, and we prepared in-depth developer documentation to help Mice team master the new system quickly.
Our DevOps team gained amazing experience (has further increased our experience) with complex microservice systems. The project allowed MICE platform to serve 30% more customers and reduced timeframes for new platform releases.