軟件定義幾乎已經成為當今IT圈里開口必談的詞匯之一,人們對其的關注度已經絲毫不亞于云計算、大數據等主流的趨勢,從這一點也可以看出它也已經成為了大眾普遍認同的發展方向。
軟件定義之緣起
“軟件定義”之所以會越來越成為大眾普遍接受的理念,我認為服務器虛擬化的迅速成熟與普及,讓業界已經可以清晰看到“軟件定義”的威力所在,以及它所能帶來的想像空間(時至今日,軟件定義已經不局限于虛擬化的范疇),可謂功不可沒。而另一方面,時代的進步與社會的發展,也在從需求的層面對“軟件定義”進到了助推的作用,因為它是可以看到的最有效的綜合手段來應對未來的IT挑戰。
在這一過程中,一個很重要的原因就是互聯網與移動化潮流的興起,當互聯網將越來越多的設備和人連接在一起后,遍布其上的信息入口與出口也就帶來了極為動態與彈性的信息流,與之對應的就是一個個在后臺進行信息匯總與處理的數據中心。很多人在用手機App熱火朝天之時,可能往往想不到,遠處某個地方的數據中心正因此進行復雜的IT資源管理,以確保用適用的成本投入來更高效的滿足前端的應用需求。因互聯網帶寬提速與普及而誕生的公有云服務商,其數據中心更是如此,否則以傳統僵化的資源管理模式,公有云服務在成本與響應速度方面絕對是不可用的。
由此,必須要經歷的就是以計算為中心的自動化,它所關注的是IT生產力的提升,而在此之后則將是進一步的互聯時代,這會將若干個自動化的計算資源整合起來,從而有效的降低成本,而最終則就是“以人為本”——專注于服務與產品的快速交付,并因此進一步促進當前云與智能設備的變革。
軟件定義數據中心已經成為未來IT發展之必然
在這一演進過程中,數據中心的角色并沒有變。在早期它可能直接與相應的前端設備來連接,提供基礎的計算與數據功能,而如今,最終的設備在外延(比如智能終端),人們也更多的在關注于應用的交付,從而在設備與數據中心之間,又加入了新的內容,但無論如何,數據中心仍然將是應用與數據的大本營,也就注定了數據中心內部的變革不可避免,否則不可能有效的支撐起新的設備應用模式與相應的服務。
軟件定義之路
從數據中心的內部來看,其IT基礎設施主要就三個部分:負責應用執行的服務器、負責應用數據保存的存儲系統、負責應用與數據互聯的網絡,無論IT的形態如何變化,在可預計的未來,這三個基礎的要素都是 不可或缺的,唯一可能的變化就其存在的形態。傳統的IT都是由物理化的IT設備組成,管理人員都是直接與物理設備打交道,但是物理設備無法做到高效的動態化,其相應的IT資源(計算、存儲、網絡)也 會因物理的限制而無法高效實現自動化的供給與調配,快速的自動協同更是不可能。
因此,現在越來越多的硬件開始向軟件定義方向發展,它們大多可以用SDX來表述(也因此,SDX成為了軟件定義)。比如軟件定義網絡(SDN,Software Defined Network)、軟件定義存儲(SDS,Software Defined Storage)等等,它們追求的是將設備的邏輯功能和管理性,與設備的物理性相剝離,物理設備最終只是一個執行的角色(業界稱之為“數據層”Data Plane),高級的資源整合、調度與自動化協同將由上層的軟件來實現(業界稱之為“控制層”Control Plane) 。這樣做的好處就是,硬件可以更直接的服務于相關的應用,或者說應用可以更好、更直接的利用并控制IT資源。
由此可以看出,軟件定義其實是IT發展過程中的一個必然選擇。而如果要實現軟件定義,肯定就要從基礎設施著手,因為它是數據中心的組成要素,它不能很好的被軟件定義,那么軟件定義的數據中心(SDDC,Software Defined Data Center )也無從談起,依附其上的IT交付模式的創新也就將是“空中樓閣”。
軟件定義之痛
雖然很早就知道軟件定義要從基礎做起,但在現實中,這條路走的并不順利,原因就在于“硬件不懂軟件”與“硬件標準過于豐富”。
比如服務器,如果要把服務器內的計算資源虛擬化,就等于對CPU調用的方式的顛覆,從某種角度上說,它對于CPU來說是一種新“語言”。而在現實中,我們都知道,對于不懂的語言,需要翻譯,但這又需要時間,而在IT中也是如此。當硬件不能很好的理解軟件的意圖時,軟件就必須繞個圈子,將新的指令用一種原來硬件能聽得懂的語言表達出來,這顯然就要耗費更多的時間,體現在IT結果上,就是效率的降低。測試表明,當時的服務器在虛擬化之后,性能下降達30%之多,很多用戶看到這一結果,采購的決策也就可想而知了。這帶來的后果就是服務器虛擬化在誕生后的很多年里,市場普及率仍然少得可憐。
而在網絡層面,在較早以前存在著大量的專有芯片,它們由相應的廠商獨自研發,只在通用協議與指令方面兼容,但很多高級特性,則無法相通。對于這些硬件,針對每款芯片進行軟件定義,顯然并不是一件可行的事情,也因此也無法從根本上在網絡世界中普及真正意義上的軟件定義,最多是各廠商自己的發揮,但從全局來看,則明顯是各自為戰,并沒有帶動軟件定義網絡的真正普及。
在存儲領域,可以說較網絡有過之而無不及,每個存儲廠商都有自己獨有的存儲架構與管理軟件。多年以前,存儲系統的主控芯片也是五花八門,雖然基礎的指令集一樣,但高級的硬件功能也是各不相同。也因此在它們之上,想做統一的軟件定義,也是一件費力不討好的事情,雖然可以通過某種方式實現存儲虛擬化(如前掛統一訪問的控制器),但基本上也是以喪失下層存儲系統高級功能為代價的。
然而,軟件定義美好的愿景也一直在驅動產業的共同努力,而這一內在動力也帶動著必然的規律——硬件為軟件定義而優化,并逐漸向某一標準化的開放平臺聚攏。
很典型的例子就是CPU虛擬化的硬件加速,它讓CPU可以直接理解虛擬化管理器(Hypervisor)的指令,并迅速執行。比如英特爾推出的VT-x就是這樣的技術,它的推出反過來也促進虛擬化廠商在開發中進一步優化,從而讓服務器虛擬化后的性能只下降不超過5%,實用性大為提升,直接帶來的就是迅速的普及。
這一例子充分表明了“皮之不存 毛將焉附”的道理,軟件功能雖然可以越來越強大,但如果沒有理想的硬件平臺,其效果肯定會讓你大失所望(或者說,沒有強大的硬件也不可能有強大的軟件),也將會大大拖慢整體的軟件定義普及進程。因此,在我們向往SDX的同時,也必須要正視其發展道路是不平坦的,而如果要平坦則必要從硬件做起,如果軟件定義了我們的未來(X),那么硬件也將決定軟件定義之“痛”!