天天看點

Mini-Mesos:一個Mesos的測試基礎架構

本文講的是<b>Mini-Mesos:一個Mesos的測試基礎架構</b>,【編者的話】Mini-Mesos建立在思科Intercloud服務與Container Solutions服務合作的基礎上,它是基于 Apache License 2.0版本下的開源項目。本文主要介紹了在容器解決方案與極限程式設計(XP)之間所存在的一些聯系,以及如何在發展集容器化應用和Mesos架構的同時還開展TDD的核心XP實踐和持續內建,介紹了用于建構Mesos架構的測試工具Mini-Mesos。

大多數人知道我是通過極限程式設計(XP)和XP相關的東西如:面向對象程式設計,測試驅動開發,測試資料管理和高效系統建構。對于一些人來說,我們所做的工作在容器解決方案和XP之間的聯系似乎很弱或根本不存在。但是,仔細想一想,你會發現這兩者之間的聯系是很強的。

極限程式設計所講都是關于縮短回報回路的,這裡是典型的洋蔥圖:

Mini-Mesos:一個Mesos的測試基礎架構

回報回路在XP中是非常重要的,因為該方法試圖幫助開發團隊更快地響應客戶的需求。這就是為什麼,盡管面向對象(或面向元件)的開發并非XP中明确的組成部分,但它是重要的,因為設計良好的對象可以快速地重新組合以服務于新的客戶需求。這就是為什麼重構和測試驅動開發是XP的必要組成部分。

重構是在不改變功能的情況下改進代碼。如果沒有配套的測試來確定代碼以相同的方式運作,這樣做是非常危險的。

測試驅動開發(TDD)是關于設計的。由于先寫測試樣例,我們不得不考慮我們的接口和對象之間的互相作用。在 Steve Freeman 和 Nat Pryce的大力推廣下,對于不斷成長的面向對象系統來說,使用模拟對象的TDD是一個非常好的方法。

TDD的一個很大的副作用是,你将剩下一套像樣的測試用例,這就意味着你可以在或多或少的安全狀态下重構代碼。 (一旦測試用例寫定,測試套件就是一種安全網和檢查的集合,以確定一切都或多或少地如重構之前一樣工作)。

正如使用TDD一樣,我們很多人過去通常為基礎設施編寫測試用例。比如,我過去通常編寫測試用例來ping通所有的資料庫、消息系統以及確定支付系統正常運作等。我們這樣做有兩個原因。首先,如果出現問題,測試套件将會指向問題所在之處,測試用例用來診斷問題。其次,我們這樣做是因為我們經常無法控制基礎設施,這些測試幫我們向監控staging、pre-prodoction和生産環境的運維團隊傳遞資訊。

一旦雲技術開始變得普遍,我們就不得不思考,如何在不破壞我們過去習以為常的緊密回報循環的情況下向雲端部署。換句話說,我們必須仔細考慮如何部署,測試和重構我們基于雲的系統。這确實是很重要的,比如我們如何啟動雲端的虛拟機,然後根據新的使用者需求來更新它?我們如何在本地來重建雲端來解決任何基礎設施的問題?

那麼,對于我們來說,一旦Mesos的時代來臨,一個新的問題将會出現:我們如何在發展集容器化應用和Mesos架構的同時還開展TDD的核心XP實踐和持續內建?

容器解決方案提供了兩個關鍵的服務。一方面,它們能夠在生産環境中順利部署和管理應用。另一方面,他們提供應用開發。是以,我們必須拿出一些工具來幫助應用程式開發和基礎設施設計。

迅速解決操作性問題的一種方法是重制在你筆記本中的完整的開發環境,Docker元件隻需一小步便可實作。不幸的是,它不具有對Mesos的任何支援,這就意味着我們必須建立自己的Mesos叢集,并部署到Docker中,然後手動運作我們的測試,這可能需要幾分鐘,而對于較複雜的架構,可能需要幾十分鐘。是以,XP提供的回報回路被徹底摧毀。我們意識到我們不得不創造自己的測試工具,用于建構Mesos架構。我們稱這種工具Mini-Mesos。

Mini-Mesos有三個主要特點:

它允許開發人員在他們的本地機器上啟動Mesos叢集,來完成他們正在開發的任何架構。

它具有以程式設計方式操作叢集的API。我們稱之為“容器API。”

它具有用于查詢叢集狀态的API。我們稱之為“叢集狀态API。”這個API可以讓我們獲得叢集的狀态以運作自動化測試。

由于這些特征,首先我們能夠建構自己的容器化應用程式和Mesos架構的測試,這提高了設計并使得我們能夠進行快速重構。因為我們可以執行個體化叢集,運作測試套件,并在幾秒鐘内摧毀它,是以我們有一個快速的開發周期;也就是說,在确認我們最近的改變之前,我們并沒有部署到真正的雲端,或者引入我們的代碼。

總之,Mini-Mesos使我們在開發應用和架構時能夠利用我們最喜愛的開發方法:極限程式設計。 

1998年,我還是一個學生,我用Java的反射庫瞎搞出一個測試運作器用來尋找以“test”開頭的方法,後來,我發現了JUnit的,可能當時我傻笑着想竟然讓我偶然發現了一個好方法。

那時候,我們需要建構自己的工具來實踐XP,現在也是如此。我們要打造工具以便允許我們針對雲端來實踐XP。Mini-Mesos就是一個讓我們能夠做到這一點的工具。這是一個新東西,現在已經在我們的工具之列,它幾乎包含了Apache的Mesos,Hashicorp的Terraform,各種CI工具,當然也包括JUnit。總之,這些新的工具和舊的經典工具正在為分布式系統的發展提供新的SDK基石。

原文釋出時間為:2015-10-12

本文作者:YiGagyeong 

本文來自雲栖社群合作夥伴DockerOne,了解相關資訊可以關注DockerOne。

原文标題:Mini-Mesos:一個Mesos的測試基礎架構