如果在諸多熱門云計算技術中,諸如容器、微服務、DevOps、OpenStack 等,找出一個最火的方向,那么非微服務莫屬。盡管話題炙手可熱,但對傳統行業來說,微服務落地和方法論目前處于起步階段。
本報告于2017年11月份展開,從驅動因素、落地現狀、和容器關系、架構體系、未來趨勢和落地方法論等方面對微服務進行了分析。希望能夠為傳統企業微服務決策、規劃和實施提供依據和解決辦法。
一、驅動因素
傳統行業對IT效率的變革需求是微服務成長土壤,業務模式創新重塑導致系統更新頻繁、應用復雜度急劇升高,傳統架構不堪重負。
微服務架構具有明顯的好處,尤其是在應對復雜業務系統的多變需求方面。在本次調研企業中,每個月都要進行業務系統更新的比例占63%,只有不到20%的企業半年以上更新一次系統。
加快互聯網+步伐成為許多傳統企業的必然選擇。業務場景、用戶習慣和行為在迅速變化,許多傳統行業線上業務出現急速增長。
比如金融行業的移動支付、互聯網理財等,汽車制造行業的營銷、電商、售后服務等線上業務比例迅速提高。IT團隊業務開發、迭代都以每月、甚至每周來計,需要7*24小時響應,這些給系統開發和運維帶來極大挑戰。
在IT對業務的響應和支撐方面,不同行業所面臨的困擾略有不同,但總體差異不明顯。調研顯示,系統支撐方面排在前四的難題分別為:系統復雜性越來越高(28%),運維管理復雜度高,打造一支全棧運維團隊困難(26%),線上訪問壓力大(19%),設備采購維護成本高(19%)。
在傳統單體或SOA架構下,應用如果頻繁升級更新,開發團隊非常痛苦。企業的業務應用經過多年IT建設,系統非常龐大,要改動其中任何一小部分,都需要重新部署整個應用,敏捷開發和快速交付無從談起。
傳統企業在長期的IT建設過程中,通常大量使用外包團隊,這導致采用的技術棧之間差異較大,統一管控和運維要求更高。需要運維7*24小時全天候值守、在線升級,并快速響應。
在此時脫穎而出的微服務技術,面對上述困惑幾乎渾身優點:獨立開發、獨立部署、獨立發布,去中心化管理,支持高并發高可用,支持豐富技術棧,企業可以根據需要靈活技術選型。
二、微服務落地現狀
1、微服務客戶畫像
微服務架構在企業的使用情況可以分為四個層次:初級使用者、輕度使用者、中度使用者、以及重度使用者。初級使用者基本是傳統架構,獨立部署需求不突出,技術堆棧不成熟,需要較長的培育和成長期。輕度使用的企業邊緣業務系統開始使用Spring Boot 或Spring Cloud等框架,但組件的使用尚不熟練。
中度使用者為使用Dubbo或Spring cloud時間較長,但還沒有做周邊配套的工具鏈。重度使用者是那些走在微服務架構改造前沿,具備微服務規劃和體系,有自己研發實力的企業,通常是以技術見長的大型互聯網公司。
2、15% 左右的調研企業引入了SpringCloud、Dubbo等微服務主流開發框架
此次調研中,6%的企業已經部分引入了Spring Cloud 開發框架,Spring Cloud 也被開發者認為是最好的開發框架。另外,9%的受訪企業采用了 Dubbo 等其他微服務框架,也就是說引入了或考慮引入微服務架構的企業達15%。
此外,還有51%以上的企業在考慮往云原生方向轉型。這是由于企業數字化轉型背景下,IT要更好適應線上業務趨勢的必然要求。加上國家政策層面對云服務的支持,傳統企業云化是大勢所趨。
3、微服務四大技術優勢受青睞
從IT技術發展趨勢看,無論硬件、軟件、還是基礎架構都在朝著輕量化的方向發展。微服務通過化整為零的概念,將復雜的IT部署分解成更小、更獨立的微服務。
相對傳統的建設方法,傳統企業更看重微服務如下四方面的優勢:技術選型靈活,更輕松采用新架構和語言(28%)降低系統內部服務冗余,提升開發效率(27%)獨立部署(22%)更好的容錯機制(20%)
在涉及復雜項目時,和單體架構的對比中,微服務從多個角度顯示出了壓倒性的優勢。
4、制造業開始發力、金融小試牛刀
這里所說制造業,是大制造的概念,包括制造、汽車、大型制造以及航空業等。這些行業往引入Spring Cloud、Dubbo等微服務開發框架的企業占比約為10%。制造業開始初步嘗試微服務架構。
能看出制造業向“智造”轉型的影響,今天的制造業結合了物聯網、傳感器、云計算、大數據等技術,人工智能技術正在工業、汽車駕駛等領域應用。大量新興業務場景出現,服務變得復雜,產業的彎道超車帶來了明顯的微服務需求。
其次,需求明顯的為金融行業,包括銀行、保險、證券等。尤其是一些國有銀行、股份制銀行以及城商行等大行都走在架構改造的前列。在自己的創新業務,如手機銀行、微信銀行、互聯網理財等業務上試水微服務架構。在核心業務系統方面,則相當謹慎。一方面是由于監管和政策的原因,另一方面,銀行開發體系龐大,IT架構變革將是一件非常復雜的事情。
5、微服務推進障礙
微服務不是完美架構,會帶來系統的各種復雜度,以及運維要求更高等諸多難點
微服務并不是一項橫空出世的技術,事實上MicroService的概念已經誕生多年。除了組件和技術不成熟,企業業務模式不急迫的因素外,微服務本身也有自己的劣勢。
本次調研,有近一半的企業會談到對微服務的顧慮。比如部署以后的復雜度,后期運維管理的不友好等等。對于團隊來說,搭建微服務架構上手難,運維效率低,運維成本高。另外,還可能帶來團隊之間溝通上的沖突,微服務需要與DevOps同步推進。微服務被分割成一個個獨立的業務模塊后,服務間通信接口設計非常重要。如何科學地將系統部署到服務器上,保證各個服務高效運行,更是難點。
微服務推進過程中有許多障礙。對微服務自身復雜度的擔憂、缺少具備相關經驗的專家、難以招募專業人才和使用相關工具是三個最普遍的障礙。其中對微服務復雜度的顧慮,排名前三的是運維要求和成本高,分布式架構的網絡延遲、容錯等挑戰,以及較強的部署依賴性。
三、Docker與微服務
在接受調研的企業中,2017年在生產環境中采用Docker的比例為9%,測試環境使用達22%。而且規模越大的企業,尤其是服務器規模在500臺以上的,是Docker容器的主要采用者。另外,正在考慮評估中的占到被調研企業的一半以上。企業的關注度急劇升高,Docker使用正在快速普及。
容器和微服務相輔相成,兩大技術成熟的時間點非常契合。容器技術的成熟為微服務提供了得天獨厚的客觀條件。輕量化的容器是微服務的最佳運行環境,微服務應用只有在容器環境下才能保障運維效率的提升。同時,微服務應用架構對外在組件的管理會變得困難,需要用容器平臺去管理中間件,才能發揮出更大價值。
四、微服務化是一個體系,從架構、工具到團隊協同
1、 企業微服務架構改造需要包括周邊配套工具鏈在內的一整套微服務體系
采用微服務架構改造應用系統,不僅僅是選擇開發框架本身,還要建設一套完整的體系架構。既要實現應用模塊之間的解耦,還要實現統一管理。
微服務化體系,包括開發框架、以及周邊配套工具鏈和組件,比如服務注冊、服務發現、API網關、負載均衡、服務治理、配置中心、安全管理、與容器的結合、監控管理等等。一整套的體系建設是微服務真正的難點所在。
落地過程中,受訪企業關注的功能包括,API網關(33%)、服務治理(27%)、配置中心(21%)、分布式任務調度(17%)、應用監控與報警(11%)、高并發(7%)等。這些組件可以根據自身的業務特性選擇使用。
2、微服務落地方法論:咨詢+產品工具+實施
在IT建設中,企業都希望將開發人員的精力放在自身業務系統的開發上,而工具的整合和使用則主要借助外部供應商的力量來做。軟件外包商都有自己的發展歷程,迅速改變技術架構不太現實。
另外,傳統企業都有大量原有IT系統,掉頭和轉向不可能丟掉歷史包袱,全部推翻重新建設。因此,企業一方面有架構之痛,另一方面不得不總是在業務系統快速上線和新架構選擇之間平衡。
對于企業來說,最實際的微服務落地路徑是,首先納入微服務咨詢,引入外部行業技術專家角色,站在企業架構的總體高度,幫助企業進行微服務體系規劃,落地roadmap,然后借助一些產品和工具進行落地實施。
在本次調研中,有的企業鑒于微服務的優勢和業務快速變化的需要,會在新項目建設時直接選擇微服務架構進行開發,落地方法也不例外。
3、企業踐行微服務的三種類型
目前微服務落地的企業可以分為:溫柔型的變革者、業務倒逼型的強硬者、觀望型的探索者。
具體來說,溫柔的變革者從邊緣非核心業務探索嘗試新興技術。漸進式實施、創新靈活多變業務是這類型客戶微服務切入的關鍵詞。也是大部分傳統企業在切入微服務時,選擇的路徑。
本次參與調研的企業多是如此,在切入微服務時,選擇了諸如測試流程、API網關、開發平臺升級、測試環境快速部署等非核心業務進行技術驗證。
業務倒逼型是那些企業核心業務系統在日常支撐中承受著巨大壓力,必須進行架構改造,否則業務運轉舉步維艱。觀望型的探索者,是那些出于業務考量,要看到行業標桿案例,明確收益和價值,以及技術風險和可靠性充分把握的情況下,才會投入資源開始改造。
4.微服務落地需要從上到下推動和密切團隊協同
微服務應用的構建依賴組織結構的變化,它按照業務,而不是技術來劃分組織,在推進過程中會受到從上到下的壓力,因此必須有決策層的支持和推動。同時,需要團隊更好的協同,小團隊作戰,打破團隊間的高墻,減少溝通成本。上了微服務的受訪企業對搭建一支敏捷團隊都感受很迫切。
五、Service Mesh下一代微服務搶灘登陸
預計兩年內服務網格技術將呈現爆發之勢
本次的受訪者中,有42%表示聽說過 ServiceMesh 這一新興技術理念,但只有6%的受訪者對該技術有過一些研究。
微服務帶來的復雜度讓企業頭疼,尤其是服務間通信,如何保證服務間通信的端到端性能和可靠性,催生了下一代微服務Service mesh。2017年,ServiceMesh 經過技術擁躉、技術社區和媒體的反復布道,迅速被業界了解。
Service Mesh 是服務間通信層,可以提供安全、快速、可靠的服務間通訊。在過去的一年中,Service Mesh 已經成為微服務技術棧里的一個關鍵組件,被譽為“下一代微服務”。
Conduit、Istio 等Service Mesh技術在市場上已形成激烈的競爭,國內外企業開始紛紛站隊。國外,一些有高負載業務流量的公司都在他們的生產應用里加入了Service Mesh。國內前沿技術公司開始圍繞SpringCloud等開發體系,為客戶提供成熟的解決方案和工具產品。同時,探索基于 ServiceMesh 的新方案,積極擁抱Istio/Conduit。
當然對于傳統企業來說,技術的先進性是為了保障業務需求的快速變化和發展,而不是一味追求新興。受訪企業表示,一方面會主動關注新技術的最新動向,另一方面在考慮落地時,也要關注新技術的可靠性和有例可循,有無業界最佳實踐背書。
六、結論
微服務的核心使命是簡化開發,提高IT系統對業務的支撐能力。通過本次調研,我們可以得出如下一些結論:
1.傳統行業新興業務對IT效率的變革需求,業務模式創新重塑要求IT快速響應,是今天微服務炙手可熱的主要驅動因素。從目前微服務落地的狀態預估有兩年左右的培育和成長期。
評估一家企業是否需要上微服務,主要考察這五大關鍵要素:數據量和業務復雜度,團隊規模,應對業務流量變化,是否需要足夠的容錯容災,以及功能重復度和差錯成本。
2. 實施微服務的理想技術條件包括:進程隔離、數據庫表隔離,以及通過公開接口訪問。
3. 微服務架構在企業的使用可以分為四個層次:初級使用者、輕度使用者、中度使用者,以及重度使用者。
以技術見長的大型互聯網公司首先引領了微服務的風潮,國內制造、金融等大型龍頭企業中也有佼佼者開始規劃微服務體系,且具備較強的研發實力。大部分企業還處在初步嘗試,不成體系,尋找技術和專家力量探討解決方案的階段。
4. 微服務和容器共生:容器和微服務相輔相成,天生一對。Docker的成熟,讓微服務推廣和落地更加可靠、方便。隨著Docker和微服務架構組件等相關技術的逐步成熟,微服務架構將逐步落地傳統企業。
5. 微服務落地方法論:微服務主要用來解決系統的復雜性問題,企業客戶對于如何實施微服務并不清晰,同時有諸多顧慮。受企業客戶青睞的落地方法是:微服務咨詢+產品工具+實施。
6. 微服務落地策略:微服務正成為許多企業構建應用時的首選。微服務并不缺乏受眾,有的企業將微服務用于新應用開發,有的關注將單體應用遷移到微服務架構。微服務改造循序漸進,快速演化只會適得其反。另外,落地過程中注意開發和運維部門的協同,進行組織內管理創新。
關于調研對象
本次調研我們總計收到了來自182家企業受訪者的調研問卷,并現場調研部分受訪企業。覆蓋制造/航空、金融、互聯網、地產、交通物流和零售等行業,受訪者包括CIO、CTO等IT高管,及開發、基礎架構部門IT人員。