天天看點

企業雲遷移暗藏風險,1人如何扛起性能測試大旗?

小編了解到某家大型社交電商公司在2020年底完成了雲遷移的動作,有幸與他們的性能測試負責人張哥(化名)進行了深入交流,為大家帶回了一線情報。

1次雲遷移,每年可以節省500萬的硬體成本投入,做麼?

先别急着回答,遷移的成本、新平台的可靠性、過程的安全性些都是需要深思熟慮的。

企業可以運用雲計算技術推動業務創新,實作靈活、靈活管理,降低IT成本,以提高企業在新常态下的發展動力和競争力。 企業上雲不再是新事物,但随着自身業務發展以及雲計算服務産品的不斷變化,為了以更低成本獲得更好的服務,越來越多的企業需要面對雲平台之間的遷移挑戰。

​該如何安全高效地進行雲遷移呢?

小編了解到某家大型社交電商公司在2020年底完成了雲遷移的動作,有幸與他們的性能測試負責人張哥(化名)進行了深入交流,為大家帶回了一線情報。出于資訊保護,以下我們簡稱該電商公司為A。

敲定遷移方案,功能測試驗證

2020年底,A公司做出了一項重大決策,要将公司業務從阿裡雲平台遷移至華為雲平台。公司現有業務包含上百個應用以及數十PT的資料都要進行遷移,如何安全高效地完成遷移成了大家最關心的問題。

若遷移之後業務在雲上無法正常開展,那損失将不可估量,是以首先要做的就是敲定遷移方案。

為了更好地檢驗遷移方案的可行性,測試一次肯定是不夠的,更不可能直接上生産環境進行測試。A公司測試團隊先在華為雲上搭建了一套最小單元的測試環境,用來測試不同方案的可行性以及完成華為雲的中間件和阿裡雲中間件的對比驗證。

先遷服務再遷資料的方案行不行?

涉及跨雲功能測試,測試團隊将資料庫、redis緩存這些保留在阿裡雲上,将應用服務先遷移至華為雲。業務上需要跨雲調用,由于兩個雲端通路時延較大,響應時間是正常的三倍以上。結果顯而易見,先遷服務再遷資料方案是不可行的。

是以最終采用停機全量遷移的方案。

測試團隊将所有服務、測試環境的資料同步上去,開始進行整個業務流程的功能測試。測試覆寫了像商品能不能建立活動,能不能正常下單,下完單後訂單、資金、客服售後等全場景的流程能否跑通。

業務流程正常跑通,功能實作上沒有問題,那麼接下來要做的就是系統性能測試,驗證系統能不能達到高可用性,高穩定性及預期的性能名額。

挑選最優性能測試方案

“我們當時得出的結論是,用跟阿裡雲同一套應用代碼和同一套資料來做壓測,友善做資料對比,得到的性能測試結果也是最準确的。”正式開展性能測試前,測試團隊針對多種測試方案展開了詳細讨論。

在這裡遇到整個項目中最為核心的問題——如何處理壓測資料?我們來看看在當時主要讨論的3種方案有何差別。

方案一:

将阿裡雲的業務與資料1:1搬遷至華為雲,在生産環境直接利用現有資料進行性能壓測,完成後隻對壓測過程産生的測試資料資料進行清理處理。

方案二:

同樣是将阿裡雲的業務與資料1:1搬遷至華為雲,在生産環境直接利用現有資料進行壓測, 不同的是壓測資料的清理更加簡單粗暴,将資料層的資料庫,檔案,緩存,消息中間件等全部清理掉,重新全量同步一份。

方案三:

第一步依舊是将阿裡雲的業務與資料1:1搬遷至華為雲,然後引入生産環境全鍊路壓測技術,對壓測資料做辨別,壓測過程中對壓測資料做隔離,達到壓測資料不污染業務資料的效果。

方案被提出和讨論,必定是有其對應的優勢和劣勢,項目組在做決定前,也做了多次對比和論證。

先看方案一。這個方案的挑戰點是複雜度極高,并且很容易對正式資料産生污染,具體有如下幾點:

  1. 壓測涉及資料表很多,很容易漏清理或者錯清理,清理腳本的調試和清理後的驗證也是一大工作量;
  2. 除了資料表裡的壓測資料,消息隊列,緩存也會有壓測資料,都給清理帶來了極大的複雜度;
  3. 對于主鍵自增型的表還會影響後期增量資料的同步;
  4. 即使清除了壓測資料,報表類應用仍會受到壓測資料幹擾,除非對報表類應用做些硬改造。
企業雲遷移暗藏風險,1人如何扛起性能測試大旗?

再來看方案二。這個方案雖然也可行,但是這裡面有兩個問題,一是二次同步後沒經過測試仍然存在風險,還是需要再進行次回歸測試;二是資料遷移周期比較長,要完成數PT資料、檔案遷移、緩存遷移預熱等動作,動辄幾周。這期間需要同時租用兩邊雲環境的1:1機器,硬體成本投入是筆不小的開支,此外資料遷移需要各個業務線配合,二次遷移造成的人力資源的重複投入與浪費不容忽視。

最後我們來看看方案三。生産環境全鍊路壓測技術的引入使得遷移新雲環境性能測試這件事情變得很簡單了。在壓測前将所有業務的調用鍊路梳理出來,不用更改業務代碼,利用數列科技的探針agent進行生産環境資料隔離,就能放心大膽地在生産環境去做壓測,不必擔心資料污染問題。

企業雲遷移暗藏風險,1人如何扛起性能測試大旗?

數列的ForceCop生産壓測資料隔離能力,現在支援數百款中間件,也包括雲原生的中間件,能夠讓生産環境壓測資料流入提前配置好的影子緩存,影子消息隊列,影子庫表裡,不用擔心影響業務資料。配合流量施壓平台,壓測控制台,能夠在生産環境模拟海量使用者進行操作,跑所有業務調用鍊路,測試結果自然真實可靠。

經過綜合考量,最終標明方案三進行性能測試,成本投入最少也最為安全。

1個人的生産環境全鍊路壓測實踐

基于以上方案的讨論,兼顧A公司人員配置,最終項目組決定,完成性能壓測這個光榮的任務就交給了性能測試工程師張哥。

影響着200萬商家生意和1500萬使用者體驗的大工程,之前也沒有可複制的經驗,1個人如何扛起這支大旗?有遇到什麼特别棘手的問題嗎?在聊到這些問題時,張哥神色輕松。

第一步就是制定合理的壓測目标,為保障業務的順利開展,華為雲的性能起碼要與阿裡雲不相上下。為此張哥以2020年的大促性能目标為基準,将流量慢慢遞增來做壓測。參考之前做過的全鍊路壓測性能表現資料,在同等流量條件下對比阿裡雲和華為雲的響應時間,以此為依據去找尋網關、連接配接池、帶寬、資料庫等一些可以優化的地方。

1個人肯定無法完成所有的工作,那最棘手的就是内部人員協作的問題。為了友善配合全鍊路壓測結果及時進行性能優化調整,張哥特意将性能壓測時間定在技術團隊發版後的1-2個小時。這時大部分的技術人員都在,可以及時配合起來解決相關問題進行性能優化。

測試工作在張哥的調配下按計劃進行,耗時十多天,完成了幾輪生産環境全鍊路壓測後,确實發現了不少的問題。

企業雲遷移暗藏風險,1人如何扛起性能測試大旗?

作為電商企業,高并發是業務的突出特性,加上A公司對Redis的依賴比較重,很多Redis接口都是循環調用的,是以對Redis連接配接數的要求就比較高。測試到一半的時候,突然出現Redis連接配接上不去的現象,通過排查發現是華為雲的Redis的最大連接配接數配置有問題,無法滿足其使用場景。

除此之外最讓人印象深刻的就是華為雲網關負載均衡問題,測試結果顯示為曲線。華為雲上有3套主ELB和8個子ELB,可是壓力永遠隻會在第1個ELB上,這個ELB打滿了才會到第二個ELB上,單台伺服器cpu 65%其他伺服器15%,負載嚴重不均衡。

這倆典型的配置和環境問題如果不通過全鍊路壓測是很難找出來的。A公司技術團隊聯合華為雲的駐場從業人員一起根據壓測結果進行調試整改,最終成功完成所有性能優化。