{"id":61158,"date":"2021-04-19T18:27:04","date_gmt":"2021-04-19T15:27:04","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=61158"},"modified":"2021-04-20T13:43:44","modified_gmt":"2021-04-20T10:43:44","slug":"airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/","title":{"rendered":"Airbnb Deploys 125,000+ Times per Year with Multicluster Kubernetes"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#The_need_for_horizontal_scaling\" >The need for horizontal scaling<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#Migrating_Monorail_to_SOA_and_microservices\" >Migrating Monorail to SOA and microservices<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#Scaling_up_with_multiclusters\" >Scaling up with multiclusters<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#Keeping_multiple_clusters_consistent\" >Keeping multiple clusters consistent<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#Want_details_Watch_the_videos\" >Want details? Watch the videos!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#Related_slides\" >Related slides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#About_the_experts\" >About the experts<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"The_need_for_horizontal_scaling\"><\/span>The need for horizontal scaling<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Airbnb\" rel=\"noopener noreferrer\" target=\"_blank\">Airbnb<\/a> is one of the largest online marketplaces for lodging. Founded in 2007, the platform currently has more than 5.5 million listings across more than 100,000 cities and 220 countries.<\/p>\n<p>Initially, a small team of engineers at Airbnb ran a Ruby on Rails monolith, which they called Monorail. Later on, the company grew and started having dependency issues with Monorail. \u201cWe began to experience tight coupling between the modules as our engineering team grew larger,\u201d noted <a href=\"https:\/\/www.linkedin.com\/in\/jessicatai\/\" rel=\"noopener noreferrer\" target=\"_blank\">Jessica Tai<\/a>, Engineering Manager at Airbnb, during a presentation at QCon 2018. \u201cModules began to assume too many responsibilities and became highly dependent on one another.\u201d<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Monolith-Tight-Coupling-Issues.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Monolith-Tight-Coupling-Issues-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-61163\" \/><\/a><small>Increasingly complex dependency tracking (<a href=\"https:\/\/www.infoq.com\/presentations\/airbnb-soa-migration\/\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<div id=\"attachment_61195\" style=\"width: 125px\" class=\"wp-caption alignright\"><img decoding=\"async\" aria-describedby=\"caption-attachment-61195\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Jessica-Tai-150x150.jpg\" alt=\"\" width=\"115\" class=\"size-thumbnail wp-image-61195\" \/><p id=\"caption-attachment-61195\" class=\"wp-caption-text\"><small>Jessica Tai<\/small><\/p><\/div>\n<p>In 2015, Airbnb had over 200 engineers that were adding features to Monorail. With 200 commits deployed to the monolith per day, it would experience an average of 15 hours per week being blocked due to reverts and rollbacks.<\/p>\n<blockquote><p>\u201cAs our engineering team continued to grow, so did the spaghetti entanglement over Monorail code. It became harder to debug, navigate, and deploy Monorail.\u201d<br \/>\n\u2014Jessica Tai, Airbnb<\/p><\/blockquote>\n<p>In response, Airbnb started to break apart Monorail and shifted to a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Service-oriented_architecture\" rel=\"noopener noreferrer\" target=\"_blank\">service-oriented architecture<\/a> (SOA) in Amazon Elastic Compute Cloud (EC2). While this change resolved issues with tight coupling, the company now faced a new problem with scaling. \u201cWe needed to scale continuous delivery horizontally,\u201d explained <a href=\"https:\/\/www.linkedin.com\/in\/melaniecebula\" rel=\"noopener noreferrer\" target=\"_blank\">Melanie Cebula<\/a>, Software Engineer at Airbnb, during a presentation in KubeCon NA 2018.<\/p>\n<p>According to Melanie, each service needed its own continuous delivery cycle. This would enable Airbnb to scale development for engineers by simply adding new services. To address scaling, the company began migrating to Kubernetes in 2017.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Migrating_Monorail_to_SOA_and_microservices\"><\/span>Migrating Monorail to SOA and microservices<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div id=\"attachment_61231\" style=\"width: 125px\" class=\"wp-caption alignright\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Jens-Vanderhaeghe-Airbnb.jpeg\"><img decoding=\"async\" aria-describedby=\"caption-attachment-61231\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Jens-Vanderhaeghe-Airbnb.jpeg\" alt=\"\" width=\"115\" class=\"size-full wp-image-61231\" \/><\/a><p id=\"caption-attachment-61231\" class=\"wp-caption-text\"><small>Jens Vanderhaeghe<\/small><\/p><\/div>\n<p>In its early days, Monorail\u2019s front end was built with Backbone.js as stated by <a href=\"https:\/\/www.linkedin.com\/in\/jensvanderhaeghe\/\" rel=\"noopener noreferrer\" target=\"_blank\">Jens Vanderhaeghe<\/a>, Senior Software Engineer at Airbnb, during GitHub Universe 2018. In 2015, the front end was migrated to Redux and React, while the back end utilized Java services. The Monorail codebase grew rapidly and, at some point, it accumulated to 220 changes deployed daily, 30,000 SQL database columns, 155,000 pull requests merged in GitHub, and 1,254 unique contributors. Eventually, Monorail was divided in two major services: Hyperloop and Treehouse.<\/p>\n<p>In order to reduce complexity and abstract away configurations, Airbnb\u2019s engineering team relied on YAML templates rather than file inheritance. This also made it easier to migrate legacy services and retrain engineers, according to Melanie Cebula.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Abstracting-Configuration-with-Templates.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Abstracting-Configuration-with-Templates-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-61164\" \/><\/a><small>Reducing configuration repetition with YAML templates (<a href=\"https:\/\/static.sched.com\/hosted_files\/kccna18\/1f\/kubecon%202018.pdf\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<div id=\"attachment_61196\" style=\"width: 125px\" class=\"wp-caption alignright\"><img decoding=\"async\" aria-describedby=\"caption-attachment-61196\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Melanie-Cebula-150x150.jpg\" alt=\"\" width=\"110\" class=\"size-thumbnail wp-image-61196\" \/><p id=\"caption-attachment-61196\" class=\"wp-caption-text\"><small>Melanie Cebula<\/small><\/p><\/div>\n<blockquote><p>\u201cWe learned the hard way that it was difficult for our engineers to visualize complex hierarchies with files. We prefer templating for that reason.\u201d <\/p>\n<p>\u2014Melanie Cebula, Airbnb<\/p><\/blockquote>\n<p>Building on the concept of templates to reduce repetition, engineers at Airbnb began storing configuration files in Git. This way, reviewing, updating, and committing configuration files is streamlined. Additionally, Kubernetes deployment best practices can easily be set as default parameters.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Configuration-in-Git.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Configuration-in-Git-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-61162\" \/><\/a><small>Simpler standardization with Git (<a href=\"https:\/\/static.sched.com\/hosted_files\/kccna18\/1f\/kubecon%202018.pdf\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<blockquote><p>\u201cOnce you start storing things in Git, it unlocks so many opportunities. When you start deploying with the same process, you have a standard way of storing and applying configuration.\u201d<br \/>\n\u2014Melanie Cebula, Airbnb<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Scaling_up_with_multiclusters\"><\/span>Scaling up with multiclusters<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In September 2018, Airbnb&#8217;s main production cluster had reached 450 nodes. By December of the same year, this had doubled to 900 nodes. Around this point, concerns around <b>etcd<\/b> began as explained by <a href=\"https:\/\/www.linkedin.com\/in\/benshughes\/\" rel=\"noopener noreferrer\" target=\"_blank\">Ben Hughes<\/a>, Software Engineer at Airbnb, during KubeCon North America 2019. &#8220;It would be bad if our etcd instances were suddenly getting out of memory,&#8221; he added.<\/p>\n<p>Before the end of 2018, etcd in Airbnb&#8217;s Kubernetes deployment would get backed up and fall over. This was caused by multiple problems, including low cache hit rate on the API server or a chain of events overwhelming etcd.<\/p>\n<p>Fortunately, when etcd failed, Kubernetes would just stop any deploy and scaling in process. No workloads got taken down. Issues with etcd were resolved by upgrading to the etcd v3 data format.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Production-Cluster-Growth.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Production-Cluster-Growth-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-61172\" \/><\/a><small>4x growth of the production cluster in less than a year (<a href=\"https:\/\/static.sched.com\/hosted_files\/kccncna19\/46\/KubeCon%202019%20Scaling%20Kubernetes%20to%20Thousands%20of%20Nodes.pdf\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<div id=\"attachment_61194\" style=\"width: 125px\" class=\"wp-caption alignright\"><img decoding=\"async\" aria-describedby=\"caption-attachment-61194\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Ben-Hughes-150x150.jpg\" alt=\"\" width=\"115\" class=\"size-thumbnail wp-image-61194\" \/><p id=\"caption-attachment-61194\" class=\"wp-caption-text\"><small>Ben Hughes<\/small><\/p><\/div>\n<blockquote><p>&#8220;Many of the issues were caused by hitting against limits against the etcd v2 data format. Once we upgraded to the etcd v3 data format and did other things like adjusting <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">quota-backend-bytes<\/code> up to 8 GB, most of our etcd problems went away.&#8221; <\/p>\n<p>\u2014Ben Hughes, Airbnb<\/p><\/blockquote>\n<p>By March 2019, the company&#8217;s production cluster again doubled in size to 1,800 nodes. By April, this increased to around 2,300 nodes. At this point, the engineering team were encountering more issues by increasing the amount of nodes and opted instead to add more clusters.<\/p>\n<p>Airbnb was able to transition to a multicluster environment without much problem. This was largely due to <a href=\"https:\/\/medium.com\/airbnb-engineering\/smartstack-service-discovery-in-the-cloud-4b8a080de619\" rel=\"noopener noreferrer\" target=\"_blank\">SmartStack<\/a>, Airbnb&#8217;s service mesh, and legacy infrastructure not having any colocation requirements.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-multicluster-example.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-multicluster-example-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-61178\" \/><\/a><small>Enabling routability of the pods using the NodePort services (<a href=\"https:\/\/static.sched.com\/hosted_files\/kccncna19\/46\/KubeCon%202019%20Scaling%20Kubernetes%20to%20Thousands%20of%20Nodes.pdf\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<blockquote><p>&#8220;Any of our workloads can run on any of the clusters that we stand up. Our view of clusters is that they are giant pools of compute and memory that we can allocate as we see fit.&#8221;<br \/>\n\u2014Ben Hughes, Airbnb<\/p><\/blockquote>\n<p>In a multicluster environment, workloads are assigned randomly to a cluster during creation. To ensure that individual clusters can scale without getting close to <a href=\"https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/#:~:text=Kubernetes%20v1.,than%20100%20pods%20per%20node\" rel=\"noopener noreferrer\" target=\"_blank\">size limits<\/a>, engineers at Airbnb only allow new services to be added to clusters with less than 400 nodes.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Keeping_multiple_clusters_consistent\"><\/span>Keeping multiple clusters consistent<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To ensure that clusters perform equally, the Airbnb team created <b>kube-system<\/b>, an in-house method for deploying clusters. Components for clusters are written as Helm charts that are templated into a single manifest. Applications are then deployed using <b>kube-gen<\/b>, Airbnb&#8217;s internal framework. Under kube-system, deploys take less than 10 minutes.<\/p>\n<p>To better organize multiple clusters, Airbnb additionally introduced the concept of types. These cluster types serve as classes, whereas clusters serve as instances.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-multicluster-organization.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-multicluster-organization-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-61185\" \/><\/a><small>Organizing multiple clusters by types (<a href=\"https:\/\/static.sched.com\/hosted_files\/kccncna19\/46\/KubeCon%202019%20Scaling%20Kubernetes%20to%20Thousands%20of%20Nodes.pdf\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<blockquote><p>&#8220;Ideally, a user who is deploying a service to one of our clusters should not be able to tell which cluster they are on. We want to avoid people trying to land their services on the good cluster by making all of our clusters good.&#8221; \u2014Ben Hughes, Airbnb<\/p><\/blockquote>\n<p>Since the migration to Kubernetes, Airbnb has reached no less than 125,000 production deploys per year. Since 2019, more than 50% of the company&#8217;s services have been running on over 7,000 nodes across 36 Kubernetes clusters. This includes over 250 critical services. Moreover, the Airbnb team has added over 22 cluster types, such as production, testing, development, special security groups, etc.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_videos\"><\/span>Want details? Watch the videos!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><small>In this video, <a href=\"https:\/\/www.linkedin.com\/in\/melaniecebula\" rel=\"noopener noreferrer\" target=\"_blank\">Melanie Cebula<\/a> discusses Airbnb&#8217;s journey from a monolithic architecture to Kubernetes.<\/small><\/p>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/DhuEc-IHrzo\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<br \/>\n<small>In this next video, <a href=\"https:\/\/www.linkedin.com\/in\/benshughes\/\" rel=\"noopener noreferrer\" target=\"_blank\">Ben Hughes<\/a> explains how Airbnb scaled its services with a multicluster Kubernetes environment.<\/small><\/p>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/ay7NibpRAYU\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<br \/>\n<small>In the video below, <a href=\"https:\/\/www.linkedin.com\/in\/jensvanderhaeghe\/\" rel=\"noopener noreferrer\" target=\"_blank\">Jens Vanderhaeghe<\/a> uncovers Airbnb&#8217;s journey into microservices.<\/small><\/p>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/47VOcGGm6aU\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_slides\"><\/span>Related slides<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><small>Here are the slides from <a href=\"https:\/\/www.linkedin.com\/in\/jessicatai\/\" rel=\"noopener noreferrer\" target=\"_blank\">Jessica Tai<\/a>&#8216;s presentation.<\/small><\/p>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/pguY9n5djFT9r7\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen> <\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/\">Installing Kubernetes with Kubespray on AWS<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/\">Maturity of App Deployments on Kubernetes: From Manual to Automated Ops<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/ensuring-security-across-kubernetes-deployments\/\">Ensuring Security Across Kubernetes Deployments<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_experts\"><\/span>About the experts<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Jessica-Tai-bio-150x150.png\" alt=\"\" width=\"100\" class=\"alignright size-thumbnail wp-image-61204\" \/><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/jessicatai\/\" rel=\"noopener noreferrer\" target=\"_blank\">Jessica Tai<\/a> is Engineering Manager at Airbnb, where she leads the User Platform and Foundation teams. She has presented as a speaker in several conferences, including ScaleConf 2020, QCon London 2019, QCon San Francisco 2018, Women Who Code CONNECT 2018, etc. Jessica also serves as Vice President of Airbnb&#8217;s women in technology group, where she mentors for several engineers and interns.<\/small><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Melanie-Cebula-bio-150x150.png\" alt=\"\" width=\"100\" class=\"alignright size-thumbnail wp-image-61205\" \/><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/melaniecebula\" rel=\"noopener noreferrer\" target=\"_blank\">Melanie Cebula<\/a> is Software Engineer at Airbnb, where she is building a scalable modern architecture on top of cloud-native technologies. Being an an expert in cloud infrastructure, Melanie is also recognized worldwide for explaining radically new ways of thinking about cloud efficiency and usability. She is an international keynote speaker, presenting complex technical topics to a broad range of audiences, both international and domestic.<\/small><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Jens-Vanderhaeghe-bio-150x150.png\" alt=\"\" width=\"100\" class=\"alignright size-thumbnail wp-image-61239\" \/><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/jensvanderhaeghe\/\" rel=\"noopener noreferrer\" target=\"_blank\">Jens Vanderhaeghe<\/a> is Senior Software Engineer at Airbnb. He works on the Continuous Delivery team and is reponsible for building tools that enable fast, safe, and repeatable deployments for all of Airbnb&#8217;s engineering organizations. He was involved in the creation of Merge Queue, an in-house queueing system for continuous integration at a large scale. Jens was part of the long term company-wide migration from a monolithic Rails application to a microservices-based architecture built on Kubernetes.<\/small><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Ben-Hughes-bio-150x150.png\" alt=\"\" width=\"100\" class=\"alignright size-thumbnail wp-image-61203\" \/><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/benshughes\/\" rel=\"noopener noreferrer\" target=\"_blank\">Ben Hughes<\/a> is Principal Engineer at Amazon. Previously, he was Software Engineer at Airbnb, where he served as the technical lead for the Compute Infrastructure and Kubernetes team. Ben also worked on database scaling, Ruby and Node.js performance, and incident responses at Airbnb.<\/small><\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p><center><small>This blog post was written by <a href=\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\">Carlo Gutierrez<\/a>, edited by <a href=\"https:\/\/www.altoros.com\/blog\/author\/sophie.turol\/\">Sophia Turol<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The need for horizontal scaling<\/p>\n<p>Airbnb is one of the largest online marketplaces for lodging. Founded in 2007, the platform currently has more than 5.5 million listings across more than 100,000 cities and 220 countries.<\/p>\n<p>Initially, a small team of engineers at Airbnb ran a Ruby on Rails monolith, which they called [&#8230;]<\/p>\n","protected":false},"author":32,"featured_media":61192,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[26],"tags":[873,815,912],"class_list":["post-61158","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-use-cases","tag-cloud-native","tag-digital-transformation","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Airbnb Deploys 125,000+ Times per Year with Multicluster Kubernetes | Altoros<\/title>\n<meta name=\"description\" content=\"The company can indefinitely scale its online marketplace in a Kubernetes environment that consists of 7,000+ nodes across 36 clusters.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Airbnb Deploys 125,000+ Times per Year with Multicluster Kubernetes | Altoros\" \/>\n<meta property=\"og:description\" content=\"The need for horizontal scaling Airbnb is one of the largest online marketplaces for lodging. Founded in 2007, the platform currently has more than 5.5 million listings across more than 100,000 cities and 220 countries. Initially, a small team of engineers at Airbnb ran a Ruby on Rails monolith, which they called [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-19T15:27:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-20T10:43:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Digital-Transformation-Multicluster-Environment.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Carlo Gutierrez\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Gutierrez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/\",\"name\":\"Airbnb Deploys 125,000+ Times per Year with Multicluster Kubernetes | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Digital-Transformation-Multicluster-Environment.gif\",\"datePublished\":\"2021-04-19T15:27:04+00:00\",\"dateModified\":\"2021-04-20T10:43:44+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Digital-Transformation-Multicluster-Environment.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Digital-Transformation-Multicluster-Environment.gif\",\"width\":1024,\"height\":576},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Airbnb Deploys 125,000+ Times per Year with Multicluster Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442\",\"name\":\"Carlo Gutierrez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg\",\"caption\":\"Carlo Gutierrez\"},\"description\":\"Carlo Gutierrez is a Technical Writer at Altoros. As part of the editorial team, his focus has been on emerging technologies such as Cloud Foundry, Kubernetes, blockchain, and the Internet of Things. Prior to Altoros, he primarily wrote about enterprise and consumer technology. Carlo has over 12 years of experience in the publishing industry. Previously, he served as an Editor for PC World Philippines and Questex Asia, as well as a Designer for Tropa Entertainment.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Airbnb Deploys 125,000+ Times per Year with Multicluster Kubernetes | Altoros","description":"The company can indefinitely scale its online marketplace in a Kubernetes environment that consists of 7,000+ nodes across 36 clusters.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"Airbnb Deploys 125,000+ Times per Year with Multicluster Kubernetes | Altoros","og_description":"The need for horizontal scaling Airbnb is one of the largest online marketplaces for lodging. Founded in 2007, the platform currently has more than 5.5 million listings across more than 100,000 cities and 220 countries. Initially, a small team of engineers at Airbnb ran a Ruby on Rails monolith, which they called [...]","og_url":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/","og_site_name":"Altoros","article_published_time":"2021-04-19T15:27:04+00:00","article_modified_time":"2021-04-20T10:43:44+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Digital-Transformation-Multicluster-Environment.gif","type":"image\/gif"}],"author":"Carlo Gutierrez","twitter_misc":{"Written by":"Carlo Gutierrez","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/","url":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/","name":"Airbnb Deploys 125,000+ Times per Year with Multicluster Kubernetes | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Digital-Transformation-Multicluster-Environment.gif","datePublished":"2021-04-19T15:27:04+00:00","dateModified":"2021-04-20T10:43:44+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Digital-Transformation-Multicluster-Environment.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/04\/Airbnb-Kubernetes-Digital-Transformation-Multicluster-Environment.gif","width":1024,"height":576},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/airbnb-deploys-125000-times-per-year-with-multicluster-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Airbnb Deploys 125,000+ Times per Year with Multicluster Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442","name":"Carlo Gutierrez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg","caption":"Carlo Gutierrez"},"description":"Carlo Gutierrez is a Technical Writer at Altoros. As part of the editorial team, his focus has been on emerging technologies such as Cloud Foundry, Kubernetes, blockchain, and the Internet of Things. Prior to Altoros, he primarily wrote about enterprise and consumer technology. Carlo has over 12 years of experience in the publishing industry. Previously, he served as an Editor for PC World Philippines and Questex Asia, as well as a Designer for Tropa Entertainment.","url":"https:\/\/www.altoros.com\/blog\/author\/carlo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/61158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=61158"}],"version-history":[{"count":68,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/61158\/revisions"}],"predecessor-version":[{"id":61242,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/61158\/revisions\/61242"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/61192"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=61158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=61158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=61158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}