sponsored links

Uber 是如何安全快速地進行全球化部署的

Uber 是如何安全快速地進行全球化部署的

本文要點

  • 優步的基礎設施平臺讓數千名工程師能夠在不犧牲穩定性的前提下並行更改系統。
  • 我們擴充套件了原有的系統,並隨著業務增長逐漸將抽象級別從單個主機提升到跨多個區域的眾多地區。
  • 從日常運維工作中抽象出物理主機和區域,讓我們大大減少了在優步執行一系列無狀態服務時產生的摩擦。
  • 部署流程不僅運作起來簡單、輕鬆,而且其自動化特性是整個無狀態基礎設施實現大規模自動化的關鍵所在。
  • 統一到一個單一的託管控制平面後,我們極大提升了優步跨多個可用地域高效管理無狀態負載的能力。

在 QCon Plus 上,優步的軟體工程師Mathias Schwarz展示了優步如何在全球級規模上安全、快速地部署。優步是一家大型企業,擁有多種產品。在大多數情況下,它們會被部署到全球數十或數百個市場。我們最大的產品是Uber Rides——優步叫車產品,只需點選一個按鍵,它就能帶你從城裡的這個地方到達那個去處。每天,優步會完成 1800 萬個出行訂單——這還只是 2020 年第一季度的數字。除了優步叫車平臺上的出行服務外,優步還有用於送餐的Uber Eats——優食。

Uber 是如何安全快速地進行全球化部署的

為了運營所有這些產品,優步擁有大量後端服務。大約有 4000 個不同的微服務部署在優步多個數據中心的機器上。

在優步,我們每週要做 58,000 次構建,每週對生產環境進行 5,000 次更改。換句話說,優步的每一項後端服務平均每週要在生產環境中部署一次以上。

由於執行服務升級過程需要一段時間,這也意味著系統每時每刻都至少會對我們的一項後端服務進行一些升級。

區域和地域

對於優步的基礎設施,我們會將它拆分成許多層來考慮。最底層是各個伺服器。伺服器是單獨的機器,是執行每個程序的硬體。伺服器的物理實體會放置在某個區域(zone)內。區域可以是我們自己擁有的,比如說優步的資料中心,也可以是雲區域,其中機器屬於 GCP 公有云或 AWS 的一部分。

一個區域永遠不會跨越多個提供者——它始終只有一個提供者,且一組區域組成一個地區(region)。地區本質上是物理上彼此靠近的一些區域的集合,因此這些區域內的程序之間的呼叫延遲較低,這意味著你可以期望從一個區域到另一個區域的請求具有較低的延遲。這些地區共同構成了我們的全球基礎設施。因此,當你要將新構建部署到生產環境時,基本上就是將這些新構建全域性部署到優步基礎設施所有區域中的所有相關伺服器的過程。

早期:非結構化部署

當優步開始構建他們的部署策略和部署系統時,一開始的做法與其他大多數公司是類似的。優步的每個服務團隊都有一組特定主機,他們會在其中部署新構建。然後,每當他們想要釋出更改時,都會手動訪問這些伺服器,或者使用Jenkins指令碼將構建部署到伺服器,並確保他們已經升級了所有程序,然後再發布新構建。然而這種方法有幾個缺點。例如,當伺服器出現故障時,團隊需要手動清理。更糟糕的是,如果正在推出的更改中存在錯誤,就意味著團隊必須在將錯誤的更改從生產系統中移除後做一番清理,讓系統恢復到良好狀態。

重要的部署系統特性

2014 年,我們退後一步,開始思考如何建立一個部署系統來將所有這些操作自動化,讓我們的工程師更容易保持高頻率部署節奏,同時確保安全性。我們提出了一系列希望系統能夠完成的要求。我們希望我們的構建保持一致,此外還有:

  • 希望構建看起來都是一樣的,無論它們使用的是什麼語言、什麼框架,以及構建服務的是哪個團隊。構建應該與部署系統是一致的,這樣管理起來更方便。
  • 此外,我們希望所有部署都具有零停機時間,這意味著當你想要部署你的構建時,你希望系統能夠自動管理伺服器的部署順序。我們希望系統在不干擾進入服務的流量的情況下,儘量不要停止更多的程序。
  • 想要讓預防停機措施成為這個系統的一等公民。從本質上講,我們希望系統能夠在我們將新版本部署到生產環境時及時發現並響應可能存在的問題。
  • 最後,我們希望系統能夠讓我們的後端恢復到良好狀態。總體而言,我們希望工程師能夠輕鬆部署新的更改,並能信任系統,讓系統來處理這些部署的安全性。

使用 uDeploy 進行結構化部署

基於這些需求,優步開始構建Micro Deploy系統。Micro Deploy 於 2014 年上線。在那一年,我們將所有後端服務轉移到了這個新平臺。在 Micro Deploy 中,我們將所有構建都設為 Docker 映象。我們還搭配使用了內部構建的,稱為Makisu的構建系統來做到這一點。從本質上講,這兩個系統結合在一起意味著我們所有的 Docker 映象看起來都是一樣的,並且在部署的系統中有著相同的表現,從而顯著簡化了部署管理。

Uber 是如何安全快速地進行全球化部署的

部署到區域中的叢集

在優步,我們還改變了工程師的抽象級別。我們告訴他們,他們無需擔心具體要部署到哪些伺服器上,而只要告訴我們他們需要哪些區域以及每個區域中他們想要的容量即可。也就是說,我們並不要求工程師找到特定的伺服器,而是給這些區域提供容量。然後我們會部署到目標區域內。每當出現伺服器故障時,我們都會更換它,並且服務將被轉移到這些新伺服器上,全過程無需任何人工干預。我們在 uDeploy 中做到了這一點,結合了名為Mesos的開源叢集管理系統,以及我們在優步內部構建的,名為Peloton的無狀態負載排程程式(後者已開源)。今天,你可以使用 Kubernetes 實現類似的目標。

安全-監控指標

我們還決定將安全機制直接構建到已部署的平臺中,以儘可能提升部署的安全性。我們在已部署平臺中內建了我們的監控系統,uMonitor。我們所有的服務都會發出由 uMonitor 攝取的指標。uMonitor 按時間序列持續監控這些指標,並確保指標不會超出某些預定義的閾值。如果我們看到資料庫指標突破了這些預定義的閾值,就會開始回滾到安全狀態,這一操作將在 Micro Deploy 系統中自動執行。Micro Deploy 會捕獲系統之前的狀態,然後在啟動回滾時自動將服務恢復到其舊狀態。

安全-白盒整合

此外,對於優步最重要的那些服務,我們還進行了白盒整合測試。我們使用了內部開發的,稱為Hailstorm的系統。當你將第一個例項部署到一個新區域時,它將在生產環境中對這些特定例項執行負載測試,並執行白盒整合和負載測試。這種測試是在釋出程式碼之前執行的大量整合測試之外的一種補充。

Uber 是如何安全快速地進行全球化部署的

這些整合測試會針對已部署服務的 API 端點,並確保 API 仍按我們預期的方式執行。在部署到某個區域的前幾個例項上執行此操作後,我們就可以在生產環境中的問題影響多個主機之前發現它們。如果其中一些測試失敗,我們還可以回滾到服務的先前已知的安全狀態。

安全-連續黑盒

最後,我們構建了所謂的黑盒測試。黑盒測試本質上是在優步產品所在的所有城市不斷髮生的虛擬出行訂單。黑盒測試會執行這些虛擬出行訂單,如果我們發現某個城市訂單無法完成,就會向一位工程師彈出一個頁面。然後,這位工程師必須手動決定是回滾還是繼續部署。他們還必須找出是哪些服務可能導致平臺上的出行訂單突然開始出現問題。所以黑盒測試是我們問題檢測機制的最後一道防線。

Micro Deploy 為我們提供了大規模的安全性保障。即便個別伺服器出現故障,它也能為我們提供服務的可用性。幾年前,我們發現我們花費了越來越多的工程時間來管理服務。工程師仍然必須弄清楚在他們應該在哪些區域放置服務。例如,他們是要在 AWS 還是在我們自己的資料中心上提供服務呢?他們需要多少個例項?等等。兩年前,服務管理仍然是一項需要大量人工干預的任務。

提升規模效率

因此,我們又一次退後一步開始思考,如何構建一個能夠為我們的工程師自動完成所有這些日常任務,並確保平臺能夠自我管理的系統?

我們提出了三個要構建到系統中的原則:

  1. 首先,我們希望它是真正的多雲架構,這意味著無論服務執行我們自己的資料中心還是某個公有云的主機或伺服器上,對工程師來說都應該是一樣的,沒有什麼區別。我們應該能夠毫不費力地在任何地方進行部署。
  2. 其次,我們還希望它是全託管的,這意味著我們希望工程師只需要作出更改,確保這些更改有效,並將它們推到生產環境中就完事。我們不再指望他們來處理在區域中定位、擴充套件服務之類的人工管理任務。同時,我們仍然希望部署系統行為是可預測的。
  3. 最後,我們仍然希望工程師能夠了解和預測他們的服務會發生什麼事情。因此,即使我們決定更改縮放比例或將它們移動到雲區域,我們也想告訴工程師到底發生了什麼事情,以及為什麼會這樣做。

Up 提升基礎設施效率

基於這三個原則,我們開始在優步構建我們使用至今的部署平臺,名為 Up。在 Up 中,工程師在管理他們的服務並部署更改時需要考慮的抽象級別又進了一步。例如,我們並不會要求他們關心具體的區域,而是詢問他們要部署到哪個物理地區。這樣,使用 Up 的工程師只需指明他希望服務部署到哪個地區,然後 Up 就會負責其餘的工作。對於我們今天的工程師來說,這套流程是下面這個樣子。

Uber 是如何安全快速地進行全球化部署的

我們可以看到,這個服務被部署到一個金絲雀中,並被部署到了兩個不同的地區,在本例中它們分別稱為“DCA”和“PHX”。我們不會告訴工程師物理伺服器是在雲區域中執行還是在我們自己的資料中心中執行。我們只是告訴他們有這兩個地區,在這兩個地區中一共有多少例項。

當工程師對生產環境進行部署時,如果系統決定對服務進行更改,他們就會看到這樣的計劃。該計劃列出了已經執行的步驟,因此你可以看到服務到目前為止具體發生了什麼事情。其次,它顯示了當前正在發生的事情。例如我們目前正在為該服務升級哪個區域,以及我們的具體升級進度。最後,在應用當前更改之後,會有一個稍後將應用的更改列表——這意味著工程師完全可以預測在整個部署過程中會發生什麼事情。

讓我們新增一個新區域

我們希望 Up 系統做到的一件事,是讓我們的後端工程師不用再關心基礎設施,特別是底層基礎設施的拓撲。具體來說,我們希望新增或刪除區域的操作不會影響工程師。如果這裡有一個地區,並且我正在向現有地區新增一個新區域,如下圖所示。

基礎架構團隊將設定物理伺服器,設定儲存容量,並將區域物理連線到現有基礎架構。現在的挑戰是讓 4000 個服務所有者和 4000 個服務,或者至少其中的一部分轉移到新區域,以使用我們在該區域所有的新容量。在 Up 面世之前,需要數十名工程師才能完成一個新的區域部署工作,整個過程需要耗費大量人力和時間,所以我們希望 Up 為我們自動化這一步驟。

宣告式配置

假設我們有一個如前所述的新區域;然後,工程師將僅根據地區及其在地球上的物理位置配置他們的容量。他們會告訴我們,他們想要 DCA 地區中部署 250 個例項,在 PHX 地區中部署 250 個例項。此外,他們可以告訴部署系統一些關於它們對其他服務的依賴關係的基本資訊,以及他們是否想為這些服務使用金絲雀。然後,Up 負責檢視這一配置並不斷評估服務的當前位置和當前配置是否適合各個服務。Up 將不斷地將基礎設施的當前拓撲與這些宣告式服務配置進行比較,並找出如何以最佳方式放置此服務。

有了這個配置和持續的評估迴圈,當我們新增一個新區域時,系統會發生什麼事情呢?首先,Up 系統會自動發現更好的部署位置;比如說對於某些特定服務,可能有一個新區域可用,其容量比現有區域大得多。然後在評估這些限制並確定有更好的位置之後,我們還有一個 Balancer,負責啟動從該地區內的一個區域到另一個區域的遷移任務。工程師不再需要花時間手動移動這些服務,因為我們的 Balancer 會自動為他們完成這項工作。

總結

本文介紹了我們從由工程師來管理各個伺服器的小規模系統,到可以自動管理伺服器的,基於區域抽象的 Micro Deploy 系統的歷程。彼時,整體來說服務管理仍然是我們工程師日常需要維護的一項任務。最後,到我們的新 Up 系統面世後,我們在區域層面實現了完全自動化。你可以安全地每週向生產環境部署 5,000 次更改,並且你可以輕鬆管理像優步後端這麼巨大規模的系統。讓它在實踐中發揮作用的關鍵是自動化。它的抽象級別讓你可以自動執行很多原本需要工程師手動管理的任務。這意味著無論是部署位置、主機提供商選擇以及服務的擴充套件方面,我們都可以將工作完全交給機器。

作者介紹

Mathias Schwarz 在優步擔任基礎設施工程師已超過 5 年。他和他的團隊負責開發被整個優步工程團隊所使用的無狀態服務部署平臺。Mathias 擁有奧胡斯大學程式語言組的計算機科學博士學位。

原文連結:Safe and Fast Deploys at Planet Scale

分類: 財經
時間: 2022-02-09

相關文章

普渡機器人完成C2輪融資,C1和C2輪累計融資額近10億元

普渡機器人完成C2輪融資,C1和C2輪累計融資額近10億元
9月14日,深圳市普渡科技有限公司(普渡機器人)正式宣佈完成C2輪融資.本輪投資人包括美團.大灣區共同家園發展基金.深投控資本.紅杉中國等.泰合資本繼續擔任獨家財務顧問.這是繼今年5月份完成5億元C1 ...

奇安投資完成10億元二期基金首關 致力於成為網安行業最專業、最具影響力的投資機構
日前,專注於網安行業投資的新銳基金奇安投資宣佈完成10億元人民幣二期網安基金首關,投資人包括國內最大的網路安全上市公司奇安信科技集團.軍民融合發展產業投資基金.北京新動力股權投資基金.上海產業轉型升級 ...

富安娜老闆離婚,老闆娘持股10億元,90年代初從南京來深圳追夢

富安娜老闆離婚,老闆娘持股10億元,90年代初從南京來深圳追夢
富安娜老闆離婚了. 近日,富安娜公告稱,林國芳與陳國紅經友好協商已辦理離婚手續,公司實際控制人也由林國芳.陳國紅變為林國芳,目前二人為富安娜第一.二大股東.依公告當日收盤價,老闆娘陳國紅持股市值高達9 ...

《長津湖》票房破10億元
截止到10月2日晚上7時45分,抗美援朝題材戰爭鉅製<長津湖>的總票房達到了10億元.在所有的國慶檔電影中遙遙領先. <長津湖>9月30日公映,上映首日就取得了領先地位.此後兩 ...

環旭電子年投10億研發享技術優勢 營收年增長率淨利潤率均居行業前列
長江商報訊息●長江商報記者沈右榮 持續加碼研發,全球性公司環旭電子(601231.SH)形成了核心競爭力. 環旭電子是一家電子產品領域提供專業設計製造服務及解決方案的大型企業,集蘋果概念.無線耳機.M ...

“奇安投資”完成10億元二期基金首關
36氪獲悉,日前,專注於網安行業投資的基金"奇安投資"宣佈完成10億元人民幣二期網安基金首關,投資方包括奇安信科技集團.國投創合.北京新動力股權投資基金.上海產業轉型升級基金.共青 ...

萬事利:擬10億元投建絲綢數碼印花人工智慧工廠專案
萬事利:擬10億元投建絲綢數碼印花人工智慧工廠專案 中證網訊(記者 王博)萬事利(301066)10月8日晚間公告,公司擬成立子公司,使用自有或自籌資金等方式購置土地並進行廠房建造,實施萬事利絲綢數碼 ...

玉龍股份變身國企,其全資子公司擬8億至10億元取得帕金戈金礦控制權
魯網·泰山財經10月9日訊(記者 於雅雯)據山東玉龍黃金股份有限公司(玉龍股份.601028.SH)8日晚間公告,隨著海南厚皚科技有限公司將其持有的3915萬股玉龍股份轉讓給濟南高新控股集團有限公司( ...

8月全國二手車市場交易量149.82萬輛 交易金額達971.10億元

8月全國二手車市場交易量149.82萬輛 交易金額達971.10億元
人民網北京10月10日電 據中國汽車流通協會訊息,2021年8月,全國二手車市場交易量149.82萬輛,交易量環比增長2.69%,交易金額為971.10億元.今年1-8月,二手車交易量為1139.15 ...

曉鳴股份最新公告:擬10億元投建智慧農業產業示範園專案
曉鳴股份公告,擬在吳忠市紅寺堡區投資10億元建設曉鳴股份紅寺堡智慧農業產業示範園專案,專案包括西部蛋雞種業產業園.優質肉雞生態養殖產業區.飼料加工產業區.家禽屠宰與健康食品加工產業區.電商平臺與冷鏈物 ...

硬科技投向標|小米產業基金投資車規級MCU企業雲途半導體 寧德時代擬投135億元擴產
<科創板日報>18訊,本週,硬科技領域投融資重要訊息包括:元戎啟行獲3億美元融資,阿里戰略領投:靈明光子完成數千萬元B1輪融資:傳寧德時代擬3.77億加元收購加拿大鋰業公司等. >& ...

1個月僅門票收入就近10億元!園區裡廣告無處不在,遊客仍冒雨跑步入場…北京環球影城為何如此“吸金”?

1個月僅門票收入就近10億元!園區裡廣告無處不在,遊客仍冒雨跑步入場…北京環球影城為何如此“吸金”?
籌備二十年,環球影城的"中國夢"終於實現了. 每經記者搶先體驗北京環球影城 儘管開業時間一拖再拖,北京環球度假區(包含"北京環球影城".城市大道.酒店)9月20 ...

潘石屹的“包租公”生意:9個專案每年租金收入超10億元

潘石屹的“包租公”生意:9個專案每年租金收入超10億元
SOHO中國每年租金收入過10億,經營狀況卻很糟糕,如今出售計劃也泡湯了 自從潘石屹傳出要"跑路"的訊息之後,網上對他罵聲一片.但是隨著黑石集團與SOHO中國收購的交易終止,潘石屹 ...

選址日報:英特爾投200億美元建晶片廠;大族鐳射投25億元建基地

選址日報:英特爾投200億美元建晶片廠;大族鐳射投25億元建基地
英特爾投資200億美元建晶片工廠 據最新訊息稱,半導體巨頭"英特爾"決定在美國西南方亞利桑那州,投資200億美元建設兩座晶片工廠,用於外部代工晶片生產,以此加強與臺積電的競爭.(v ...

再投7億元!華為第三家超聚變公司成立

再投7億元!華為第三家超聚變公司成立
資料圖 2020年9月15日這一天,是美國下發的對華為晶片管制升級令正式生效的日子.也就是從這一天起,華為手機開始陷入了無芯可用的局面.晶片斷供,手機受阻,市場份額也已跌出前五--如今的華為正面臨著前 ...

電影《長津湖》票房破10億元
e公司訊,據貓眼專業版實時資料顯示,電影<長津湖>上映第三天,總票房突破10億.

奇安投資完成10億元二期基金首次關閉
據介紹,奇安一期基金已完成全部投資,投資專案數近20個,覆蓋資料安全.工控安全.雲安全.密碼安全.網路靶場.安全運維和服務等多個領域.其中,投後公司永信至誠已於近日申報科創板IPO,3個專案已實現併購 ...

e籤寶完成12億元E輪融資,發力供應鏈金融,紅杉中國、IDG資本、普洛斯隱山資本領投

e籤寶完成12億元E輪融資,發力供應鏈金融,紅杉中國、IDG資本、普洛斯隱山資本領投
隨著數字化程序加速,電子簽名已經成為整個數字經濟的基礎設施.特別是疫情以來,遠端辦公的普及讓電子簽約行業"二度翻紅".9月15日,在e籤寶.金格科技戰略併購釋出會上,e籤寶創始人兼 ...

滴滴被罰後,曹操出行獲38億元融資
中國經濟週刊-經濟網訊(記者 呂江濤) 曾經,滴滴近乎壟斷的市場地位讓其他網約車平臺的存在感很低.而隨著近期滴滴出行因嚴重違法違規收集使用個人資訊等問題遭受一系列處罰,其競爭對手們也迎來了一個絕佳的視 ...

雷軍董明珠押注造車,“新10億賭約”誰會贏?

雷軍董明珠押注造車,“新10億賭約”誰會贏?
2013年,雷軍董明珠曾立下10億元賭約,比拼2018年營業額,當時,格力以總營收2000億元贏了小米的1749億元.但董明珠沒要雷軍的10億元,雙方約定,賭下一個五年. 2021年,董明珠與雷軍在新 ...