分享實錄 | 單人開發場景下的測試環境實踐
在軟件研發過程中,“測試環境”是部署最頻繁、也是開發者使用最頻繁的一種運行環境,穩定而易用的測試環境能夠極大提高開發者的工作效率和幸福感。為更好的將阿里巴巴在測試環境管理方面的實踐和經驗跟廣大開發者分享,《雲效說碼》策劃了《阿里巴巴Kubernetes測試環境開源工具箱》系列直播視頻,由阿里巴巴技術專家林帆(金戟)和鄭雲龍(砧木) 來為大家講述。 本系列分享共有三節內容,本文整理自砧木的第二次分享《單人開發場景下的測試環境實踐》。 【以下為分享實錄,有刪節】 《阿里巴巴測試環境管理概述》要點回顧 在正式開始本次分享之前,我們首先回顧一下上一次分享中我的同事金戟分享的要點。在測試環境管理中,我們主要遇到兩個問題,第一個是本地與集群雙向互通的問題,在阿里巴巴集團內部主要通過基於CNI(Conteinre Network Interface)機制改造Kubernetes的IP邏輯實現的“扁平化的內網IP”這個方法來解決,這種方式更適合大型集團企業。第二個問題是多人協作開發時,路由的可訪問性控制問題,在阿里巴巴內部我們是通過“項目環境”與“隔離域”實現的。 程序員小黑的困擾:測試環境不穩定導致集成效率低下 本次分享,我們將把視角從阿里巴巴集團內部轉向外部開發者,特別是廣大開發者所在的中小團隊,聊聊他們如何解決前文中提到的“本地與集群雙向互通”的問題。 我們先來思考一個問題:在本地開發的時候,有哪些讓你感到痛苦的事情? 為了幫助大家更好回憶,我們假象了一位主人公——程序員小黑。小黑所在公司採用了微服務相關的技術實踐,公司的平臺根據業務情況被劃分為多個“服務”,小黑所在團隊負責的是其中單獨一個業務領域。小黑團隊會使用平臺中的一些公共服務,同時他們也會為平臺中的其它服務提供標準的API,方便其它服務調用數據。 為了降低整個平臺的運維成本,小黑公司使用了阿里雲提供的Kubernetes服務來搭建他們的測試環境及生產環境,通過雲效提供的項目協作“看板”管理項目的需求及迭代進度。同時雲效也提供了DevOps相關的能力支持,打通了從代碼開發到軟件發佈上線的端到端的過程。小黑公司基於這套DevOps體系,不斷的對產品進行迭代和優化。 相對於採用“DevOps”之前,小黑公司的研發效能已經得到極大提升,但近期小黑卻遇到了一些困擾。他發現,由於測試環境不穩定,讓他浪費了大量的時間在“集成”這件事情上。 其實,團隊中的每位成員都希望儘快完成本地開發的功能的驗證工作,目前情況下,小黑團隊成員只能先將代碼提交到代碼倉庫,然後通過流水線將代碼部署到測試環境,因此“代碼提交”會變得非常頻繁,也就意味著在大部分時間裡,你的測試環境會處於更新、發佈狀態中,整個測試環境的可用性就會變得非常差。甚至有的時候,因為個別成員在本地開發完成後,對代碼沒有進行充分驗證就進行了測試提交,導致整個測試環境“掛掉”。有時因為有緊急的需求需要快速上線,測試環境會被這些緊急變更獨佔。小黑只能在測試環境可用的短暫的時間裡儘可能地去驗證自己開發的功能,這就導致小黑最近情緒很低落。 小黑的困擾一:聯調其它服務。 其實小黑的需求很簡單,他希望在本地代碼開發完成之後,能夠儘可能快的跟其它服務進行聯調,來驗證他開發的功能是否OK,但是現在他唯一能依賴的就是那套“公共環境”。 在本地完成代碼開發後,如何高效的與其它服務進行聯調呢?經過分析發現,在本地進行聯調效率最高,使用公共環境進行測試成本最低,兩全其美的辦法就是,在本地直接訪問雲上集群的環境進行測試。對這個“命題作文”,開發者和企業有很多不同的選擇,除了在第一次分享中我同事介紹的方法外,我們還推出了一個更輕量的方式通過KT-Connect工具實現。 KT-Connect是阿里巴巴雲效團隊研發的面向Kubernetes的本地開發者輔助工具(已經開源),通過“Connect”命令可以實現一鍵連接雲上任意的Kubernetes集群。連接完成之後,可以快速建立本地到集群的VPN網絡,同時將Kubernetes集群的DNS解析能力整合到本地,開發者可以像在集群中一樣可以直接通過PodIP,ClusterIP以及DNS域名訪問到集群內的服務。 小黑的困擾二:其它服務調用我 […]