8 April 2020 - DevOps

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.

Case info

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.

Project requirements

The project plan included the following:

  1. Migrating the existing containerized microservices with Ruby on Rails apps to a new cloud platform (AWS) using Helm
  2. Implementing the CI/CD pipeline using Jenkins to automate software delivery and updates
  3. 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
  4. 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. 

Results

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.

Conclusions

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.

Contact Us




Our website uses cookies to personalise content and to analyse our traffic. Check our privacy policy and cookie policy to learn more on how we process your personal data. By pressing Accept you agree with these terms.