大資料實用DevOps/UML圖概述
大資料架構的文件化可能需要重新使用經典的軟體架構描述符號,並輔以適當的符號來隔離和識別大資料應用程式的資料密集型特性。從這個角度來看,DICE生態系統提供了大量現成的工具和符號來解決各種質量問題(效能、可靠性、正確性、隱私設計等)。為了利用這些工具,使用者必須使用我們定義的顯式符號來支援他們的場景。所討論的符號包括構建特定的UML圖,並使用特定的配置檔案對其進行豐富,即標準UML機制用於設計特定領域的擴充套件——在我們的案例中,該機制用於在DICE配置檔案中定義構造型和標記值,並且特定於建模資料密集型結構、功能和特性。DICE配置檔案將UML元模型調整到大資料應用程式領域。例如,類的通用概念可以變得更具體,即具有更多語義,方法是將其對映到一個或多個具體的大資料概念和技術特徵,例如,從更抽象的角度來看的計算和儲存節點或Storm Nimbus節點。除了表達能力之外,由於我們使用UML標準定義的元模型及其關係,DICE配置檔案背後的模型的一致性仍然得到保證。從本質上講,這些圖及其各自配置檔案的作用是雙重的
- 提供大資料領域(例如,叢集、節點……)和大資料技術(例如,Cassandra、Spark……)特定概念的高階抽象;
- 定義一組由工具檢查/評估的技術(低階)屬性。
上述活動所包含的方法步驟至少包括以下建模和文件活動
- 詳細說明資料密集型應用程式的高階結構架構檢視的基於元件的表示(即DPIM元件圖)——在DICE範圍內,這是使用UML配置檔案的簡單且熟悉的符號完成的,使用者從中繪製必要的構造型和結構來指定其資料密集型應用程式節點(源節點、計算節點、儲存節點等);
- 用關於該表示的屬性和非功能規範來增強基於元件的表示;
- 使用技術決策來細化同一個基於元件的表示——這些決策本身代表了選擇哪種技術來實現哪個資料密集型應用程式節點。例如,<<CassandraDataStore>>概念構造型與DPIM架構檢視中的<<StorageNode>>相關聯;
- 關聯幾個資料密集型技術特定的圖,這些圖表示每個資料密集型節點的技術結構和屬性。這些圖本質上“分解”了技術節點幷包含特定於這些技術節點的資訊。例如,DPIM架構表示中的<<StorageNode>>可以在其DTSM對應物中成為<<CassandraDataStore>>;最後,DTSM層將包含另一個圖,更具體地說,是Cassandra叢集的資料模型。這些單獨的技術特定“影像”用於允許資料密集型應用程式分析和驗證;
- 詳細說明一個部署特定的元件部署圖,其中幾個技術特定的圖根據其基礎設施需求到位。該圖屬於DDSM層,包含構建可部署和可分析TOSCA藍圖的所有必要的抽象和屬性。遵循我們的<<CassandraDataStore>>示例,在此級別,從之前的DPIM <<StorageNode>>結構細化的DTSM <<CassandraDataStore>>節點最終與DDSM圖相關聯,其中叢集的配置完全指定(即VM型別和數量、軟體元件到VM的分配等);
- 最後,一旦資料密集型部署特定的元件圖可用,就可以使用DICE部署建模和連線的生成技術(DICE部署建模)來實現該圖的TOSCA藍圖。
模型驅動開發(MDD)是一種眾所周知的方法,並且已在軟體工程的許多領域得到廣泛應用。例如,Web和移動應用程式開發,例如WebRatio[1]方法,以及多雲應用程式的開發,例如MODAClouds專案,該專案提供了一種名為MODACloudsML的建模方法來指定建模和部署雲應用程式及其基礎設施需求(例如,VM、資源等)所需的結構和概念。
此外,最近在文獻中提出了許多工作,試圖在Big Data應用程式的上下文中利用MDD的概念和技術。在其他相關文獻中,提出了一種有趣的方法,旨在允許Hadoop MR應用程式的MDD。在定義了Hadoop MR應用程式的元模型(可用於定義應用程式模型)之後,該方法提供了一種自動程式碼生成機制。輸出是一個完整的程式碼框架,資料密集型應用程式的開發人員必須透過實現主要的應用程式級Hadoop MR元件(Map和Reduce函式)來詳細說明該程式碼框架,以根據生成程式碼中的佔位符進行說明。主要目標是演示MDD如何能夠顯著減少開發Hadoop MR應用程式的偶然複雜性。Stormgen[2]提供了類似的支援,其目標是提供一種用於定義基於Storm的架構(稱為拓撲)的DSL。
這項工作利用Ecore構建元模型,利用Xtext生成語言的語法。Stormgen還使用Xtend語言(Java的一種方言)提供自動程式碼生成。同樣在這種情況下,使用者必須為Storm拓撲的每個元素(Bolt和Spout)指定所需的實現,因為主要重點是設計拓撲。該方法的作者計劃使用eclipse GMF(圖形建模框架)將圖形DSL與文字DSL耦合。
雖然這些方法提供了MDD在資料密集型應用程式上下文中實用性的初步證據,但它們都專注於依賴於單一底層技術。此外,它們側重於開發階段,並且不針對部署方面,這將需要開發和運營團隊對支援技術元件執行的平臺節點及其對具體計算和儲存資源的分配進行推理。
相比之下,在DICE技術空間中,利用UML建模進行資料密集型應用程式設計的開發人員將需要為其架構結構檢視(DICE DPIM)生成(至少)一個元件圖,併為其技術特定結構和行為檢視(DICE DTSM)生成兩個(或更多)圖,並注意為其架構結構檢視(DICE DPIM)中的每個技術節點生成兩個圖(結構檢視和行為檢視),只要需要分析即可。DICE UML建模不鼓勵生成許多圖,例如出於重新記錄的目的——DICE的重點是資料密集型應用程式的質量感知設計和分析。因此,DICE UML建模促進了所有且僅對需要特定分析關注和質量意識的技術節點的建模。最後,設計人員將需要使用部署特定的結構和決策來細化其架構結構檢視(DICE DDSM)。
例如,對於一個簡單的WordCount應用程式,它包含一個源節點、一個計算節點和一個儲存節點,所有三個節點都需要特定的分析和質量改進。因此,設計人員需要在(DICE IDE)中生成總共7個圖:(1) 應用程式的整體架構結構檢視,包含三個節點(儲存、計算和源)以及它們的屬性和QoS/QoD註釋;(2) 每個需要分析的技術的結構和行為技術特定檢視 - 讓我們假設分別為儲存、計算和源節點技術生成一個類圖和一個活動圖。最後,需要使用適當的部署特定構造、對映和註釋來細化在(1)中生成的圖。
下一節將提供上述建模過程的實際使用場景,以闡明DICE建模過程。
作為一個玩具示例,我們參考我們自己裝置的一個簡單的Storm應用程式,稱為WikiStats,它將壓縮的20GB XML格式網頁流作為輸入,其中包含維基百科所有文章的快照。然後,應用程式處理該流以得出文章統計資訊。讓我們假設我們最初對儘快部署我們的應用程式感興趣,而不是分析其行為;
我們玩具示例的DPIM模型是兩個節點的基於元件的聚合:一個計算節點(負責處理維基頁面)和一個儲存節點(負責儲存和呈現結果)。為了節省空間,我們不提供此簡化的DPIM層。
此時,DPIM模型被用作細化DIA建模的基礎,並進行適當的技術決策;在我們的例子中,代表DIA節點的DPIM元件圖元件使用額外的特定於技術的構造型進行刻板印象,在我們的例子中,即DPIM中唯一計算節點的<<StormApplication>>構造型;這意味著該元件被設定為Storm計算節點。類似地,代表儲存節點的DPIM元件圖元件使用額外的構造型進行刻板印象,即<<CassandraDataStore>>構造型;這意味著該元件被設定為Cassandra叢集。
此時,我們需要“展開”我們使用技術決策細化的DPIM中的兩個節點 - 我們需要做的就是建立一個新的類圖,並進一步詳細說明兩個節點的技術細節內部(例如,<<StormApplication>>的Storm拓撲細節和<<CassandraDataStore>>的模式)。因此,我們準備一個新的類圖,其中建立一個帶有<<StormApplication>>構造型的新類,並立即將其與WikiStats所需的bolt和spout關聯;類似地,為bolt準備資料模式並連結到一個<<CassandraDataStore>>類,我們假設不需要進一步的內部細節。
此時,DTSM中使用的技術被對映到物理資源,並應用自動化部署以獲得可部署的TOSCA藍圖(有關其他部署功能,請參閱DICER工具和DICE交付服務)。此步驟中的DDSM建立涉及使用DDSM配置檔案構造型建立或細化UML部署圖。可以使用持續的OCL輔助建模以半自動方式細化UML部署圖。在典型場景中,DICE使用者從DTSM圖中隨機選擇一項技術,並例項化一個部署節點以在其上應用該技術構造型。隨後,DICE使用者可以檢查該圖是否滿足DICE-DDSM OCL約束,解決該技術的任何缺失依賴項以及任何缺失的部署規範(例如,其他節點、防火牆、缺失的特性和屬性等)。DICE使用者應重複此過程,直到DTSM中的所有技術也在DDSM級別建模。最後,一個表示DIA可執行例項本身的部署工件應結束DICE DDSM層的建模。現在開始使用DICER工具的“一鍵部署”功能建立自動TOSCA藍圖 - 此功能允許在準備好的DDSM工件上啟用DICER +部署服務管道,以便可以立即進行部署。
DICE UML建模旨在使用標準UML圖提供對質量感知和資料密集型應用程式的連貫且完整的概述,以充分表達和闡明所需的細節。在這些細節中,我們包括:(a) 資料密集型架構的結構檢視;(b) 同一架構的行為檢視;(c) 架構的技術特定構造的結構和行為檢視;(d) 所述架構的基礎設施設計。
上述模型旨在記錄和支援資料密集型應用程式的質量感知設計和操作。