阿里巴巴徐冬晨:JVM-Sandbox會讓你腦洞大開
原創(chuàng)【51CTO.com原創(chuàng)稿件】七年一劍,華麗蛻變。自2012年起連續(xù)6年15場峰會,凝聚大量技術(shù)專家,博觀而約取,厚積而薄發(fā)。2018WOT全球軟件與運維技術(shù)峰會揚帆起航,圍繞12大核心熱點,匯聚海內(nèi)外60位一線專家,打造高端技術(shù)盛宴!在5月18-19日的2018WOT全球軟件與運維技術(shù)峰會上,來自阿里巴巴的測試開發(fā)專家徐冬晨女士將為我們帶來題為《JVM-sandbox穩(wěn)定性體系的構(gòu)建》的主題演講。
日前,徐冬晨接受了51CTO的采訪,搶先與大家分享在構(gòu)建JVM-sandbox過程中的酸甜苦辣。連續(xù)參與6年天貓雙十一的她,在服務(wù)端穩(wěn)定性方面,經(jīng)驗豐富、見解獨到。
阿里巴巴測試開發(fā)專家徐冬晨
建模歷時一年困難重重
JVM-SANDBOX從有想法到最終成型,大概經(jīng)歷了一年的時間。在2016年中,天貓雙十一催動了阿里內(nèi)部大量業(yè)務(wù)系統(tǒng)的改動,恰逢徐冬晨所在的團(tuán)隊調(diào)整,測試資源保障嚴(yán)重不足,迫使他們必須考慮更精準(zhǔn)、更便捷的老業(yè)務(wù)測試回歸驗證方案。開發(fā)團(tuán)隊面臨的是新接手的老系統(tǒng),提出測試方案不允許業(yè)務(wù)代碼架構(gòu)以滿足可測性的特殊要求,也迫使很多現(xiàn)有測試框架無法應(yīng)用到現(xiàn)有業(yè)務(wù)系統(tǒng)架構(gòu)中。更精準(zhǔn)、更便捷、更無感的需求,需要新的測試思路和測試框架,所以也推動了徐冬晨歷時一年,苦心研發(fā)出JVM-SANDBOX。
研發(fā)的過程中***的挑戰(zhàn)是考慮和適配現(xiàn)有不同架構(gòu)的業(yè)務(wù)系統(tǒng),一開始徐冬晨打算采用SpringAOP的方式來完成相對業(yè)務(wù)代碼透明的AOP織入方式,但很快發(fā)現(xiàn)并不是所有業(yè)務(wù)代碼都托管在Spring容器中,而且更底層的中間件代碼、三方包代碼無法納入到回歸范圍。更糟糕的是測試框架會引入自身所依賴的類庫,經(jīng)常與業(yè)務(wù)代碼的類庫產(chǎn)生沖突。
最終,她跳出原有思路,撇開SpringAOP,在更底層的JVMTI來完成這套AOP邏輯的實現(xiàn),破壞了雙親委派原則來實現(xiàn)類的隔離策略。在這一層實現(xiàn)AOP,尤其是attach的啟動模式,對現(xiàn)有的AOP字節(jié)碼編織方案都做了限制,JDKProxy、CgLib等常見的AOP實現(xiàn)框架都無法滿足需求,所以我們用ASM構(gòu)造了一套精巧的字節(jié)碼編織策略。
JVM-Sandbox能為我們做什么
在JVM-Sandbox的世界觀中,任何一個Java方法的調(diào)用都可以分解為BEFORE、RETURN和THROWS三個環(huán)節(jié),由此在三個環(huán)節(jié)上引申出對應(yīng)環(huán)節(jié)的事件探測和流程控制機(jī)制。不僅如此還有LINE事件,可以完成代碼行的記錄?;贐EFORE、RETURN和THROWS三個環(huán)節(jié)事件以及LINE事件,可以完成很多類AOP的操作。
例如,它可以感知和改變方法調(diào)用的入?yún)?、可以感知和改變方法調(diào)用返回值和拋出的異常、可以感知一個請求按順序執(zhí)行了哪些行、可以改變方法執(zhí)行的流程等。
在方法體執(zhí)行之前直接返回自定義結(jié)果對象,原有方法代碼將不會被執(zhí)行;在方法體返回之前重新構(gòu)造新的結(jié)果對象,甚至可以改變?yōu)閽伋霎惓?;在方法體拋出異常之后重新拋出新的異常,甚至可以改變?yōu)檎7祷亍?br />
談及JVM-Sandbox的應(yīng)用場景時,徐冬晨如是說,JVM沙箱還能幫助你做很多很多,取決于你的腦洞有多大了。它的應(yīng)用場景例如:線上故障定位、線上系統(tǒng)流控、線上故障模擬、方法請求錄制和結(jié)果回放、動態(tài)日志打印、安全信息監(jiān)測和脫敏、行鏈路計算和覆蓋率統(tǒng)計等。
JVM-Sandbox為阿里提速增效
使用了徐冬晨的JVM-Sandbox之后,阿里業(yè)務(wù)在很多方面有所提升:例如故障演練方面,2017年故障演練平臺在JVM-Sandbox基礎(chǔ)上僅耗時1周即完成故障注入部分的系統(tǒng)重構(gòu)。重構(gòu)后的系統(tǒng)在掛載效率和掛載成功率方面有了明顯的提升,極大的縮短的故障演練的時間,演練效率提升了數(shù)十倍。與16年故障演練數(shù)據(jù)對比,17年的故障演練平臺,覆蓋BU提升了1.6倍,覆蓋應(yīng)用提升了5倍,覆蓋場景提升了37倍。
2017年強(qiáng)弱依賴自動化檢測平臺誕生。它提供了依賴檢測、強(qiáng)弱分析、依賴掃描、故障注入等多種能力,底層能力基于JVM-Sandbox在1周內(nèi)完成功能開發(fā)。強(qiáng)弱依賴梳理方面,承載了淘寶的系統(tǒng)強(qiáng)弱依賴梳理工作,260+個應(yīng)用一鍵接入系統(tǒng),并實現(xiàn)了0人工成本的自動化、智能化梳理。
在錄制回放方面,線上錄制隔離回放不僅極大的縮短的業(yè)務(wù)回歸的耗時,把業(yè)務(wù)測試同學(xué)從繁瑣的數(shù)據(jù)準(zhǔn)備和接口自動化腳本的編寫過程中解放出來,而且極大的拓展了覆蓋范圍,使回歸的范圍更貼近用戶,且場景更豐富。在精準(zhǔn)回歸方面,2017年在JVM-Sandbox的基礎(chǔ)上,利用LineEvnet實現(xiàn)了行鏈路識別和標(biāo)記,有效的提升了錄制回放的精準(zhǔn)度和效率。
歷時一年,精心編寫,徐冬晨的這一套JVM-Sandbox是動態(tài)非侵入AOP解決方案屏蔽了字節(jié)碼增強(qiáng)技術(shù)的高門檻,降低了研發(fā)運維成本,同時又能支持上層多個工具平臺功能的快速實現(xiàn)和動態(tài)管理,無疑為阿里巴巴的多項業(yè)務(wù)開展提供了有力保障。
想要了解更多?5月18-19日,北京o粵財JW萬豪酒店,全球最值得關(guān)注的IT技術(shù)盛宴與您不見不散。2018WOT全球軟件與運維技術(shù)峰會一定是您發(fā)現(xiàn)全新思路、挖掘***思想、拓展人脈的重要平臺。
目前我們的各項票種已全面發(fā)售。需要提醒您的是,購票越早,折扣越大!與KOL零距離交流,呈現(xiàn)不一樣的"英雄盛宴"!
點擊官網(wǎng)了解詳情:wot.51cto.com
8折預(yù)售中,搶票從速。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】