孫昕:解讀傳統企業如何引入DevOps以及Jazz的概念
原創在前一段時間我們從DevOps業務談敏捷開發、軟件工程及新角色中探討了DevOps的出現改變了一些傳統的協作方式,在構建協作和點到點的理解過程中,引入自動化而構建的工具,傳統軟件工程的前后端擴展以及新角色的有效流程。
而在本次與IBM Rational中國區技術總監 孫昕老師的交流過程中,我們將詳細的分析DevOps落地需具備的那些條件和規劃,廣義的DevOps在傳統企業中軟件交付的問題,以及Jazz的出現如何來解決了這些問題。
以下是采訪內容:
記者:目前企業要落實DevOps,應該需要具備哪些條件?
孫昕:這是個好問題,DevOps我也怕有時候會讓客戶,或者讓一些人迷惑。DevOps是一個很大的概念,但是其實就像我們做事的方法一樣,我們可以把東西規劃的很長久,任何事情都要一點一點的去做,如果一個成熟度非常低的企業,即便做傳統的軟件工程的時候我們都會建議他不可能什么都上。對于DevOps,有的企業大老板會覺得這個概念很好,來吧,我們來個DevOps,無疑是不可能的。實現一定是個漫長的周期,只是說在這個階段它會有一個pattern,什么樣類型的企業在這個框架下是先上哪部分更好,而且這種跟以前傳統的軟件工程pattern是有一個繼承化。比如說我們看到的DevOps通用的企業我認為首先你有沒有對基本的軟件工程基礎性的平臺,比如像配置管理、一些自動化的測試工具。然后再慢慢的可以考慮到,你的業務需求變更是不是很頻繁,你是不是以市場為驅動,為導向的公司。如果我的需求為了支撐固定的用戶,已經把我的東西做成產品化,但是它是這種高可靠性的應用,這時候你要關注你的運維了,因為你經常會出現發版的問題,發版過去之后出的問題能不能及時回饋回來,你的生產系統不能宕機,你要提升到24小時,這時候可能要關注一些監控,甚至剛開始的時候你多點開發,成熟度足夠高多點開發的時候,你也可能不一定把這些數據從最開始全部打通,這可能需要很多的時間慢慢的,我覺得每個企業確實都不一樣。
記者:是的,只要有了一個長久的規劃,才能一步一步的去實現。
孫昕:我覺得這就是咱們剛才說的,它的落地一定是一點一點的落地,但是這個落地我需要強調一點,一定要有一個大的規劃好,你不能說以前軟件工程的時候,現在我跟有些客戶在一起,我說你們管理性的工具,其實我們把這個產業有的人我是開發人員,我就用Lisp或.NET,這是我的一畝二分地,測試人員我就用QTP,LoadRunner這些我覺得都OK,這是Dev這一級的,但是對于整個團隊從他的業務規劃到需求到發布,所有東西要貫穿起來,它會有一個team,大家都要用的一個管理性的平臺在,這個管理性的平臺一定是在不同的階段都有的,然后管理性的平臺一定要考慮到你將來數據要能融會貫通,要能打通,你不能說今天就好象說,我家里裝修今天在這個屋買個這個廠商的東西,明天在那個,我真合在一起合不起來,DevOps在企業要去落地的話,一定要想你要買的東西要好,你要用開源的東西也好,還是你要買廠商的東西,你是咨詢服務也好,你***所有落地的服務你將來這些所有的數據要能夠集成,這一點是最重要的。否則有的人搭DevOps,這個是用這家的東西,那個用那家的東西,***其實他還是每個環節在各干各的,將來就會出問題。
記者:那么在廣義上DevOps涉及哪個方面?其實我指的是一些行業之間,現在咱們只在互聯網行業比較多一些,那么在金融行業,以及其他的一些傳統行業是如何區分的?
孫昕:傳統行業也會很多,確實在不同的行業有一定的區分,但區別不大,不過會有幾大類行業。***大類我們還是更多的以技術來分,在我們看***是IT類的行業,無論你是互聯網還是金融,所謂IT類的行業就是說基本上他的應用都是裝在電腦上,我要跑系統等等,還有一類我們的行業我們叫做系統行業,系統行業就是聚焦了傳統我們認為的很典型的,比如制造業,還有電信設備商,像華為、中興,制造業甚至包括了電子產業包括一些家電制造業,還有航空航天等等,這部分的行業實際上它跟傳統的IT行業不一樣的。他的軟件大部分都是要依賴于硬件,它是綁在一起的,嵌入式的,這時候你看DevOps在這個上頭和在這個上頭會有一些差異,我認為落地的時候一定會有一些差異,因為在傳統的系統行業比如說我講在像海爾、海信這樣的制造業,他們一定都有大量的PDM【產品數據管理】系統,那是他們的主要系統,在這個PDM系統上DevOps又是跟他們怎么結合的,我們現在落地DevOps畢竟還是在軟件這一部分,怎么管理怎么發布,這部分是軟件。從規劃可以有硬件的部分,硬件呢,機械設計和電子電器設計都是在PDM系統,PDM系統PRM的這些東西跟DevOps為核心的這些東西他們的數據怎么打通,這個需求在IT行業是看不到的,這個是有蠻大的區別的。
記者:你覺得哪個需求更大一些呢?IT行業跟傳統行業?
孫昕:都很大,這個沒有辦法去比較,因為現在尤其到了互聯網的時代,軟件經常都是跑在系統上,而且我們其實也很關注怎么跟系統包括怎么跟PRM廠商的工具怎么打通,有意思的是,就好像剛才在談DevOps,我們在講數據要說話,其實我在那個片子里頭我講到了Jazz這個概念,英文翻譯過來就是爵士樂。Jazz是什么概念呢,我就大膽的說一句,如果沒有Jazz提出來其實也不會有今天的DevOps真正大的出現。我為什么會這么說,我稍微花一些時間。***我們在說Jazz,Jazz我現在把它比喻成軟件工程的ESB,數據總線,說白了就是數據總線,為什么這么說,因為以前的軟件工程,我們在講需求管理、配置管理、變更管理、構建管理等等,包括一些測試管理。這些東西實際上各個廠商之間都很難把它所有的數據集成在一起,所有的集成都是點對點,比如說我買兩個工具,他們之間就要做一個集成的插件,做一個集成,再買第三個麻煩了。當我買七八個工具的時候我會崩潰,崩潰到什么程度呢,05、06年的時候當年Rational能夠把自己的工具從頭到尾數據全部集中起來,在當年已經是***,沒有人能做得到,但當年其實也算一個內幕,當年我們在做開發者大會的時候,我們在開發者大會上演示了一個demo,從最開始的一個需求,一個小的到***自動化的測試,全做成了,當時幾千人的會場覺得很震驚。但我們為了搭這個集成環境,我們一個Team的人花了好多時間,后來有時候我們在想我們這些都是高手,在這個領域都是十幾年甚至二十年的人,我們都得花這么多時間,對于很多企業來說他花在集成上的成本有時候甚至都大于他的收益了。那時候軟件工程就像生產汽車一樣,是一條流水線,這是一個很美的詞,但真的落地的時候是有點慘不忍睹。IBM認識到這個問題,IBM認為這個領域如果靠工具與工具之間的點對點集成,一定是死路一條,因為每個工具甚至都是不同廠商收購過來的,它的存儲模型不一樣,數據模型不一樣,存儲展現的方式都不一樣,有的是CS結構,有的是Web客戶端,完全都不一樣,這時候點對點集成累死你,而且一個工具要換全部都要改。
后來IBM認為其實我們應該做一個軟件工程領域的一套標準,一套國際化的標準,其實后來已經不是軟件工程領域了,當時大概有30多個廠商聯合做了一個行業的標準,它叫OSLC,就是生命周期的協議,說白了就是說它包括了很多領域,比如說軟件工程的配置管理領域、項目管理領域、測試領域,甚至到PDM很多廠商,像西門子都是這個協議。這是一個國際化的標準,后來這個標準IBM把它落地就叫Jazz,相當于是說你現在再買IBM的產品,就不會說買三個每兩個產品還做集成,它每個產品就是一個小芯片,就好像插電腦一樣,這是我的主板,我插到這個上頭這是顯卡,這是網卡,他們兩者之間不用聯線,因為底層都是這個主板,這個主板叫Jazz。而它后頭就是國際化的標準,就是OSLC。那么參加OSLC的有哪些廠商呢?你甚至可以看到西門子很多廠商,這些已經不是軟件工程廠商,是PDM的廠商,他們的數據已經很多東西可以跟你軟件工程當中的需求,一些開發管理打穿,你就不用點對點的再去做開發,這個就是未來,這是DevOps未來,也是在系統領域你的PM怎么跟DevOps落地將來怎么做,一定要有Jazz或者OSLC標準,遵照這個標準大家都知道你的數據怎么表現過來,我的數據怎么交給你,你才能讀得懂,這是一套國際化的協議。這套框架已經好多年了,已經有個五六年甚至六七年了,IBM把它的產品全部都遷移到Jazz這個平臺上,就是OSLC這套國際化的框架下。不僅是IBM,西門子很多東西也在上頭,你看在別的領域也在上頭,但實際上我們就能夠打穿,這就是ESB,ESB做到了這一天,這是一個頂層設計。當時我們開句玩笑話說也只有IBM當時有這個財力和物力敢做這個事情,如果始終只是一個廠商來做,別人不遵照你沒用的,你只能把你自己做的很好,框架很好又怎么樣,當時IBM自己也是聯合了很多廠商一起來做。
記者:那在Jazz上,比如剛剛的例子,如果我的顯卡或者網卡出現問題了呢?
孫昕:我可以換一塊,它的底層一定要依賴于像Jazz這個平臺,如果沒有這個平臺的話,我有什么技術手段換了這個立刻數據還在?比如說我這塊是Oracle,那個說我這塊是DB2,又要做復雜的集成,而且這些都是硬拷貝、硬連接,數據的復制一定都出問題。但是在Jazz這個概念下,講一點,比如說你是這個工具,我如果要去消費這邊的數據,因為他想拿這邊數據的時候,他并不是把這個數據拿到他這里測,是因為大家都基于這個框架。我知道你的數據源是存在底層Jazz后頭的數據庫,一個大數據庫,我的也存在這兒,大家都知道數據在哪里,所以直接暴露出來一個引用,一個數據源,立刻我在這邊就把你相關的數據讀過來了,速度也快,且不用復制。就算換了別的工具擱這里也是一樣,因為大家都是在說英文,或者都是在說中文,聽得懂,這就是Jazz做的事情。而且Jazz做的事情不僅僅是我們說的軟件工程在做,PDM廠商也在做,將來跟這個領域硬件、軟件、機電軟一體化相關的領域如果都做這個事情,大家如果都是用相同的協議在說話的時候,這個集成量就會很小,這個是做軟件將來未來,這是一個頂層設計,這是IBM一直考慮跟這些幾十個公司大家為什么花這么精力要搞OSLC國際化的框架、標準,很多年前就在搞這個事情,就是因為IBM很多像一些院士這樣的人他就考慮到這樣的問題,軟件工程如果像傳統發展,再過五年就永遠走不下去了,客戶不會去用。我們也是看到從最早一直在變,包括Jazz提出來,我們也在學,這個行業變化還是挺大的,可能有些講的我只是舉了一些例子,沒辦法講的太細。
#p#
記者:是的,沒有規矩不成方圓,DevOps也是一樣。其實現在很多企業很多的相關項目都用DevOps,已經實踐這個東西了,您覺得實踐起來有沒有很多難的地方。
孫昕:就好像說中國比國外要晚個兩三年,我們現在看到的DevOps這個概念剛剛開始,有時候客戶不知道這個概念,實際上我們現在給他做軟件開發、軟件測試、軟件發布的很多東西已經是在這個框架下,他可能并不知道,沒有意識到,我們也沒必要說一定為了救這個名詞而去做,哪個東西能夠讓你用起來,能夠加速你的開發過程這個就是你要的,所以從這點來說DevOps其實落地的過程當中還是我們以前能夠看到的傳統的一些問題和挑戰,這是正常的。比如說大家對工具去改變自己工作方式的程度,還有工具怎么能夠跟你業務跟你這個行業的很多地方相關。舉個例子,這是我們看到的挺大的,當然IBM現在做的還不錯,這個過程當中其實是蠻艱辛的,DevOps當中我是有點救這個名詞了,我們先不說DevOps。我們說軟件開發最重要的就是你的需求,后來我們認為其實不僅僅是軟件開發最重要的是需求,所有的產品設計最重要的都是需求,但我們發現在一個客戶當中,他甚至不做軟件開發,但是他的需求重要到已經變成他的核心關鍵,因為他將來的研發、設計、采購、組裝所有都是依據他的需求。
你也知道中國造這種很復雜飛機的企業,造飛機其實已經跟軟件,軟件只是其中一部分,這時候我們會發現碰到的困難和我們在其他領域都是類似的,當你把你的系統和方法應用在客戶場景當中的時候,舉個例子,客戶從飛機頂層的拆解,飛機要拆多少個模塊、子系統、系統、部件,每個部件應該什么樣的規格,這些系統之間的需求應該有什么樣的關聯性、依賴性,這些完全是行業的知識。但它應該怎么拆解,應該怎么把它的行業知識應用到你的工具上,當時對我們其實提出了非常大的挑戰。因為我們不懂飛機,我們不懂飛機的設計,所以就需要這些行業的專家能夠了解這套方法,能夠去應用,當時IBM從全球找到了很多,甚至給波音、給空客做一些設計的人來幫助中國做這個事情,回過頭來說這個是一個極端的例子,完全跟軟件一點關系都沒有,但我們看到大多數的客戶都是可能會有一些自己特定的東西。這個怎么應用到工具上,可能是我們需要落地的時候特別關注的,這里頭又碰到了一個現實的挑戰,中國大部分的客戶可能不愿意把很多的錢投入到服務上,因為我賣給你一個系統,這個系統實際上是需要應用到你的督脈上的,這是需要你的人能夠去學習方法,我的人要學習你的知識,怎么一塊傳幫帶做起來,需要大量的投入,所以你看到在國外為什么很多軟件會應用的非常好,因為他們基本上是,老外的客戶是他買一分錢的軟件,他自己就會去買兩分錢的服務,他一定要讓他的團隊都用的起來。在中國哪怕你拿比例反過來是2:1都不可能,基本上客戶是說你如果買了10塊錢的軟件產品,他掏一塊錢去買服務就已經阿彌陀佛了。我們看到更多不是純粹,剛才我說的是業務知識的問題,怎么應用,然后同時跟現在的服務的重視程度的現狀,客戶不重視,所以會導致很多落地實施的時候就會出問題。
記者:其實關鍵還是要提高客戶認識服務的重要性的。在前一段時間IBM的技術峰會上,我記得特別清楚的一句話:DevOps已經成為幫助企業實現移動和云計算轉型的一個關鍵,能說一下你自己的想法,你怎么認為?
孫昕:其實對于移動和云計算我確實不是云計算的專家,很難說給一個很準確我自己的觀點。我的理解是,移動的開發不僅僅只是說我手機上寫一些程序做IOS還是android開發,因為作為一個企業級應用的時候,舉個例子,比如說我手機上有訂機票的一個應用,現在其實很多人都在用,就像航旅縱橫,有意思的是如果我要做這么一個應用,實際上這個應用它要在去做moblie開發之前,你要連國航、南航,這些航空公司的接口有沒有給你?其實都沒給你,很多人是不給你的。***你要跑測試的時候他才把接口數據能給你就不錯的,這么一個小應用就這么復雜,對于一個企業級的應用可能更是這樣,將來企業級的應用怎么變成moblie化,這里頭你要有架構考慮的設計,你要考慮到應用的靈活性設計,彈性的設計,在這些領域其實都體現出來傳統軟件設計、軟件開發管理當中的難題是一樣的。所以我覺得DevOps從這個角度來說確實能幫助做這些,比如說我剛剛舉的例子就是說你要提前做接口測試,但是接口都沒有你怎么做測試?你開發的程序接口數據都沒有你怎么跑?所以必須要做模擬測試。以前國內的客戶就用一些沒辦法的辦法,在銀行自己去寫一些程序,模擬別人寫一串數據,它叫擋板測試,但是現在其實虛擬化測試已經是DevOps當中落地的一個很好的實踐,就是你可以模擬各種各樣的協議,我覺得萬變不離其宗,將來移動和云一定是越來越復雜,它的這種技術會越來越多,新技術的涌現,這個過程當中個人已經不容易管理了,在這種情況下DevOps一定是能夠幫他們。
記者:為針對將來實踐的過程做好準備,現在個人開發還是蠻多的。
孫昕:對。
記者:如果開發一個應用或者游戲,還需要整合很多像業務這塊的東西。
孫昕:沒錯。我覺得我們說更多的DevOps不完全是,互聯網企業是非常大的,DevOps將來可能落地的受眾群體,但是在我看到我的這些客戶,互聯網企業往往都是少數客戶,在我的這個比例當中。為什么呢?坦率的說,互聯網企業大部分大一點的互聯網企業人員素質比較高,他們對新技術的掌握、應用都很快,所以他們有很多的技術實力,包括很多敏捷甚至都是從他們開始的。但是相反中國更多數企業不是他們這種企業,他們更需要這種東西,工具、方法結合在一起去幫助,所以IBM的大部分客戶倒不是互聯網企業。
記者:***能否說一下DevOps發展前景的看法。
孫昕:DevOps的發展前景我覺得,在我看可能也會有一些階段性,現在大家的關注點已經開始慢慢的從最開始的開發轉移到了狹義當中的DevOps這個概念。因為這個詞很新,有些人開始了解覺得這個概念很好,開發人員和運維之間打通,在下一個階段你會發現可能很多人談DevOps就是在這個領域上去實現。而且這個領域有時候會很快見到成效,因為這是在做自動化,自動化能夠替代很多人工工作的時候,這個是很容易量化,短期內就能看到效果。我覺得這部分肯定是下一階段的重點,不管是產品還是一些新的理論方法,一些應用的范圍都會很容易見得著,換句話說DevOps更大的概念當中是我們往業務端的擴展,實際上可能有一些重點領域我們會去做嘗試,至少我們的這個團隊會去做嘗試。***個嘗試是在業務規劃當中,比如在系統客戶當中我們會嘗試,叫產品線工程,產品線工程其實很多是在規劃怎么跟軟件得到***的交付,綁的更緊,應該會有一些能夠落地的東西解決方案出來。我覺得在業務規劃往前推,開發我們剛才是說往后,往前推在我看是一些對大的企業在一些重點的行業可能會有一些落地,但它可能會比這個要滯后一些,當這些都成熟的時候,可能監控的東西才能慢慢的變得更加豐富和成熟,當然這純粹是我個人的觀點,絕對不代表IBM的一些觀點。這是我個人對這個行業的感覺,可能在DevOps不同的框框里,他的成熟度市場的適用程度節奏會有點不一樣,但是無疑這些東西都會慢慢增長,需求也會慢慢增長,長到一定程度的時候,他們融合的需求也就越來越大,DevOps慢慢的就會越來越熱門,這就是我的感覺,也許過五年之后,所有人都知道DevOps,這需要一個過程。
記者:現在的人還是談DevOps比較少。
孫昕:現在你一談DevOps,大部分人都覺得不要談這個概念,這個概念你能幫到我什么呢?別談這些虛的。而我們因為畢竟在這個圈子里時間太長,十幾年了,有些東西我們知道這個方向應該是不錯,這真的不是虛的,而且有些東西可以落地。但是你為了解釋這個得花上兩個小時、三個小時,還不如告訴客戶先不談這個,我先讓哪個地方能幫你落地,最簡單,有時候我也不會去說這個東西不是虛的,我覺得這種整爭執是沒有意義,假設它就是一種框架而已,哪個地方先能落地我們就先落地。
記者:還是階段性的過程。
孫昕:對,我們在談軟件的時候我們也在談頂層設計,模型驅動,以前在傳統軟件的時候我們也在談這些,DevOps也是,問題是整體框架不設計好的話,將來你可以發現其實IBM做事情是蠻系統化的,它會把一個大的框架搭好,這時候你看很多事情就會很順暢的做好,這是IBM的厲害之處。有人說IBM老是談一個理論,想想其實它的很多理論***真的還是能落地,或者說他的有些理論可能是幫到別人了,襯托了一個行業,***在這個里頭其實是一份子,***這個行業。所以我覺得DevOps也一樣,真到一個大的企業做規劃的時候,你要按這個思路去給他做規劃,包括業務的整合,產品數據的整合等,我覺得作為一個企業的管理者來說,他不能說今天這兒有問題就醫這兒,那兒有問題就醫那兒,絕對不能。如果作為一個管理者來說,我會跟他談DevOps,如果他是想做一個長期規劃,我會跟他談,但是如果是作為一個部門我只管這個,我跟談DevOps我覺得意義不大。因為他可能沒有這個職責考慮到整個企業的規劃,我把我這塊做好就行了,我覺得DevOps還是跟什么樣的客戶有選擇的去談。