借助來自許多成熟的公有云服務的精心策劃部署策略的內置工具,企業組織機構的IT團隊可以——而且也應該將他們的測試/開發遷移到公共云服務了。
即使您企業在短期內不會將內部部署的應用程序遷移到云計算,您仍然也可以享受一個云開發環境的好處。許多企業組織正在采取一種混合云的方法:在公共云中運行開發和測試環境,而將生產應用程序保持在企業內部環境。
鑒于現如今的企業組織機構可以從多家云服務供應商處獲得各種各樣的工具,這使得企業的IT團隊構建按需基礎設施、部署代碼并運行一系列的應用程序測試,以確保其是為生產做好了充分準備,要比前幾年容易得多了。
云開發/測試的優勢
無論其是一款簡單的、運行在一臺單一服務器上的應用程序,或是一款復雜的、需要一個復雜的測試環境、如亞馬遜網絡服務(AWS)和微軟的Azure這樣的云計算平臺才能夠大大加快開發進程的多層應用程序。
公共云服務供應商可以使得企業能夠很容易地啟動虛擬機。一款單一的應用程序編程接口調用將為開發人員或測試工程師們提供一臺虛擬機,以通過一系列的測試來部署和驗證應用程序。但并不是所有的應用程序都這么簡單。
有些企業應用程序需要大量的配套基礎設施,以便為本地生產環境模仿合適的真實測試。而其應用程序團隊——開發人員和IT運營人員——需要了解通過最接近的具體環境以掌握應用程序在真實世界的性能,進而才能夠更準確地預測應用程序的相關運行狀況,如延遲性。而諸如AWS和Azure這樣的成熟的平臺,則聲稱使用了基于JSON的模板,以通過企業用戶自定義的網絡、存儲、虛擬機實例等等,支持更復雜的自動化基礎設施環境。運營團隊可以實現幾分鐘內在云中復制完全配置的企業內部部署生產環境。這個概念被稱為基礎設施即代碼(Infrastructure as Code),其在AWS上被稱為CloudFormation,而在Azure上則被稱為Azure資源管理器模板。
當在為開發和測試團隊分配資源時,數據中心管理人員總是面臨硬件方面的約束。測試環境的硬件規格必須與您企業在生產中部署的硬件規格相類似。您還必須保持這些物理系統的正常運行。硬件和配套的外圍組件最終失敗,而當這種情況發生時,其只是減緩了測試代碼的進程,直到運營團隊可以更換或修復組件。借助云計算的開發環境,物理硬件被抽象出來,連同其相關的所有維護任務。開發人員可以在其所選擇的云平臺上根據實際需要啟動盡可能多的虛擬服務器。
維護物理設備以運行開發和測試工作負載意味著IT企業組織需要為閑置時間的物理設備買單。這些物理設備占用了數據中心空間,即使在不使用時也可能消耗功率。而如果時利用云計算的話,企業用戶只需為他們所使用的資源買單。環境根據實際需求建立并拆除,從而使得企業組織只需要在他們使用資源時買單支付即可。
許多的持續集成(CI)和應用程序生命周期管理工具均與云平臺以及擁有的服務器進行了集成整合。諸如AWS和微軟這樣的供應商們都有一套DevOps工具能夠與愜意內部部署以及基于云計算的服務器兼容,緩解了從開發到生產的混合過渡。
推動混合云產生的工具
如果您企業是從頭開始,不妨考慮采用一款工具鏈,將能夠建立一個完全自動化的軟件發布渠道。
源代碼控制。Git是最被廣泛使用的源碼控制工具,其提供了一個分布式版本控制系統。許多連續測試和集成工具都能夠與Git輕松兼容工作,您會發現有很多企業用戶都在使用GitHub,這是一款基于Web的Git倉庫托管服務。應用程序團隊可以建立公共和私有源代碼庫,基于代碼庫協作,并最終被推送到測試和生產環境。
持續集成。當涉及到在云中的測試環境的自動化代碼部署時,我們建議您企業不放嘗試采用一臺CI服務器。CI服務器可以被設置為提交源代碼控制存儲庫——即提交應用程序代碼的更改——然后根據最新的更改觸發一系列階段。例如,您企業可以使用開源的Jenkins CI服務器或其競爭者TeamCity、Travis CI、CircleCI或Codeship,以便為一款應用程序申請GitHub庫。當一項更改被提交后,Jenkins運行一段代碼,執行單元測試,然后通過發起CloudFormation模板觸發一個測試環境的部署。環境一旦運行起來,另一項工作將在測試環境中部署應用程序到服務器。這將保持應用程序代碼關閉生產服務器,直到其通過所有的測試,在這一點上,運營團隊要么可以手動部署服務器;要么可以激活一個自動化的任務來執行這一工作。
性能、負載和用戶界面測試。性能或用戶界面(UI)測試有助于確保一款應用程序可以在生產過程中處理預期的用戶負載,并且其功能能夠適當的規模化。流行的工具可以在企業內部部署環境和由Apica公司和BlazeMeter公司提供的基于云的資源中運行負載和性能測試。Ghost Inspector是一款相當棒的工具,能夠捕捉網站bug和其他用戶界面問題。
原生云的DevOps工具
AWS和微軟均已經創建了簡單的原生云軟件生命周期管理工具,以實現在混合云使用企業內部部署的基礎設施和公共云服務對于應用程序的靈活管理。
AWS CodeDeploy將應用程序代碼自動部署到亞馬遜彈性計算云實例或企業用戶自有的服務器。AWS CodePipeline在云中構建一個持續交付(CD)的管道,其為更改、開始構建或在CI服務器上測試、然后在云中為開發實例推出代碼和在專用服務器運行CodeDeploy代理提交一個源代碼控制庫。
微軟公司基于云的Visual Studio團隊服務產品的工作方式類似于AWS的DevOps工具集。其所發布的管理功能使得企業組織的IT團隊能夠創建一個自動發布的管道,以便使得應用程序團隊可以將代碼部署到任何服務器上。
一款CI服務器既可以運行在企業內部部署環境,也可以運行在云中。此外,云服務器不必是一款單一的云:企業內部部署的服務器可以使用不同的云平臺而不必使用開發和測試服務器。例如,沒有任何東西能夠阻止您企業在一臺Azure 虛擬機上運行AWS CodeDeploy代理。
使其在現實世界發揮作用
今天,我們已經擁有一款混合開發和測試云部署的技術了。而其中最大的挑戰之一可能是環境的復雜性。
團隊成員需要一定的資源來完成這項工作。這可能包括在公共云平臺上進行的培訓,以及針對形成應用程序的管道的特定的CI/CD工具所進行的培訓。
請務必讓您企業內部的全部團隊都參與到該方法中來。例如,可能存在您企業內部的網絡或安全團隊需要了解企業的數據流來自于企業內部部署環境遷移到云服務時需要遵守相關監管法規或內部安全策略的案例。不管是什么原因,推動DevOps團隊之外的良好工作協作關系的構建將有助于確保公共云服務成功轉型到您企業的生產服務器。讓企業所有的團隊都參與進來,可以有助于您企業實現更廣泛的目標,并應該讓所有團隊共同努力把工作做好。