Contact Us
Search:

Container adaptation on Kubernetes with Rancher

yemeksepeti

Challenge

Founded in 2001, Yemeksepeti is the first and biggest online food order company in Turkey. As of May 2015, Yemeksepeti was acquired by the world's biggest food ordering platform Delivery Hero. Yemeksepeti has 25.000 contracted delivery restaurants across 69 cities in Turkey and Cyprus, has more than 12 million registered users, and serves an average of 450.000 orders daily. 

Yemeksepeti wanted to scale efficiently by leveraging automation. We have worked with the Yemeksepeti team for several options that will help them achieve their targets. Those included:

  - Automation on Infrastructure
  - Automation on CI/CD
  - Making better use of Kubernetes

After several sessions and PoCs, the Yemeksepeti team chose Rancher as a Kubernetes Container Platform to modernize their infrastructure with containers and Kubernetes.

The main reasons for the Rancher decision were:

  - Programmable Infrastructure with Rancher API
  - Rich Terraform Capabilities
  - Catalog/Application Options
  - Enterprise Authentication Solutions like ActiveDirectory
  - Ease of the Integration and Abstraction of VMware

Besides, Rancher was capable of native integration with Yemeksepeti’s existing enterprise applications like Pure and Datadog. Rancher Catalog helped in deploying these applications easily and efficiently.

Müşteri: Yemeksepeti (Delivery Hero)

Proje: Container adaptation on Kubernetes with Rancher

Website: www.yemeksepeti.com

Solution

After the planning sessions, we have defined the following main areas to proceed with:

  • DevOps Transition: 
    • Implementing idempotent infrastructure as a code for each environment (devtest and production) (Terraform/Shell/RancherAPI)
    • Measuring everything on the clusters
    • Integrating Kubernetes as a cloud manager via VMware to automate 
    • Doing maintenance at the node level
    • Adapting the teams to the Kubernetes environment via Rancher interface (Project and Namespaces)
    • Preparing recreatable environments for microservices
  • Container Adaptation
    • Migrating dotnetcore applications to least privileged and lean containers
    • Tuning networking and application layer capabilities on Kubernetes
    • Deploying storage-based applications to Kubernetes
    • Autoscaling applications efficiently in clusters
  • CI/CD Re-design and improvements
    • Creating isolated deployments for feature branches
    • Running CI/CD jobs on dynamic runners (Jenkins)
    • Setting up Helm Repository (artifact versioning of k8s packages) and separating  deployment jobs 
    • Serving on-demand environments for each microservice in each step of the deployment processes
  • Resource Optimization on dynamic environments
    • Using Rancher to provision dynamic environments to achieve flexibility 
    • Making time-based dynamic deployments of environments and detecting changes to recreate them to achieve resource optimization
    • Merging similar changes between microservices into the same environment to remove development overhead and utilizing resources better.
Rancher logo
yemeksepeti-delivery-hero

Results

After transitioning their environment to Kubernetes with Rancher, Yemeksepeti team has increased their agility and effectiveness dramatically. 

  - Their deployment times are now 80% faster than before. After transitioning to Kubernetes, their deployment times are decreased from approximately 25 minutes to 5 minutes.

  - The average time between microservices decreased from around ~43ms to around ~30ms.

  - They have started to deploy more frequently using dynamic test environments and because of that, teams can test new versions of their applications faster. They can deploy approximately between 15 and 20 times to their test environments daily and can run between 8 and 10 test environments daily. Teams can move their work to the production environment faster. The delays adding up to a day every month are eliminated, allowing deployment to the test environment approximately 15-20 times a day. When performing load tests, the production environment had to be used. After transitioning to Rancher, setting up environments anytime to perform test was possible. Also, thanks to Rancher, each development team now has the capability to set up environments such as Test and RC in accordance with the requirements of their projects anytime.

  - We had several servers to carry the predicted loads for our applications. Teams had to manually manage their expansion or reduction. Applications can be scaled per their requirements after this transition as we increase our node count. Before the change, manual adjustments for scaling were required after increasing or decreasing resource capability. After the transition, applications became auto-scaling.

Some of our results 
  • <80% 
    Deployment time
  • ~30ms
    the average time between microservices 

Contact