1. 程式人生 > >微服務與單體架構:IT變革中企業及個體如何自處?

微服務與單體架構:IT變革中企業及個體如何自處?

開發十年,就只剩下這套架構體系了! >>>   

當下,企業越來越多地受到競爭對手和他們自己的客戶的壓力,既需要讓應用程式更快地線上執行,同時又要最大限度地降低開發成本。這些不同的目標,迫使企業IT組織必須一刻不停地迅速發展。自20世紀60年代以來經歷了一次又一次的強制演變之後,大量的企業IT已經準備從單體應用架構中走出一步,走上微服務之路。

圖1:傳統單體應用程式和微服務之間的架構差異

更高的期望和更有能力的客戶

那些能夠接觸到全球產品及服務的客戶,現在愈發強勢地希望他們的供應商企業能夠快速響應其他供應商正在做的事情。

CIO雜誌在報道Ovum的研究時曾指出:

在“客戶之旅”中,是“客戶”本身佔據著上風。擁有更多的購物方式,以及開始花費更少的時間在購物上,客戶們需要的不僅是快速地收集資訊和完成交易。他們經常希望能無需進行冗長的對話、甚至在去往某地的途中、在移動裝置上就能快速完成這項工作。

處於壓力之下的IT

這場激烈的全球競爭,也迫使企業尋找新的方法來削減成本或找到更有效的新方法。開發人員在過去其實已經看到了這一切。這只是企業IT十多年來所面臨的“少花錢多辦事”這一永恆號召的當代新版本罷了。他們已經瞭解到,儘管IT總預算增長了,但在新IT服務以及通訊服務這一塊需要的投資也增多了。

圖2:Gartner的2018年全球IT支出增長預測

企業IT組織需要對時代的發展和新的需求作出迴應,這一壓力也使得他們不得不重新審視他們的開發流程。傳統的長達兩年開發週期,或許在過去是可以接受的,但在現階段早已不再令人滿意。沒有人能夠等待。

趨勢的匯合

企業IT也被迫對各種趨勢作出迴應,這些趨勢是分歧和矛盾的。

  • 引入廉價但高效能的網路連線,讓分散式功能彼此之間通過網路進行通訊的速度,與之前可在單個系統內相互通訊的流程一樣快。

  • 推出功能強大的微處理器,可在廉價和小型封裝中提供大型機級效能。在標準化X86微處理器架構之後,企業現在不得不考慮其他架構來滿足他們對更高效能、更低成本、以及更低功耗和熱量的需求。

  • 內部系統記憶體容量不斷增加,因此可以在小型系統中部署大型應用程式或應用程式元件。

  • 外部儲存的使用正逐漸從使用旋轉介質變為固態裝置,這樣可以提高效能、減少延遲、降低總體成本並提供巨大的容量。

  • 開源軟體和分散式計算功能的發展使企業能夠在需要新功能時廉價地新增一系列系統,而不是面對昂貴且耗時的叉車升級來擴充套件中央主機系統。

  • 客戶要求即時、輕鬆地訪問應用程式和資料。

要應對這些趨勢,企業IT部門很快就會發現,他們一直依賴的方法——專注於充分利用昂貴的系統和網路——必須改變了。如今最大的成本是人員、電力和冷卻。二十多年前,企業將重點從單體大型機計算轉移到基於X86的分散式中端系統,誠然那是一次變革,但當下的變化趨勢及變革與那時不同了。

下一步發展在哪?

以下是企業IT為響應所有這些趨勢所做的工作。

他們選擇從使用傳統的瀑布式開發方法轉向各種形式的快速應用程式開發。他們也正在從編譯語言轉向解釋或增量編譯的語言,如Java、Python或Ruby,以提高開發人員的工作效率。

例如,IDC預測:

到2021年,65%的CIO將把敏捷開發/DevOps實踐擴充套件到更廣泛的業務中,以實現創新、執行和變革所需的速度。

複雜的應用程式越來越多地被設計為獨立的功能或“服務”,可以託管在網路上的多個地方,以提高應用的效能和可靠性。這種方法意味著可以解決不斷變化的業務需求,以及可以在無需並行更改任何其他功能的前提下,向一個功能中新增新功能。NetworkWorld的Andy Patrizio在對2019年的預測中指出,他預計“微服務和無伺服器計算將起飛”。

另一個重要變化是這些服務託管在地理位置分散的企業資料中心、雲端或兩者兼有之中。此外,功能可以駐留在客戶的口袋中,也可以駐留在基於雲或公司系統的某種組合中。

這對你意味著什麼?

這些趨勢的到來,意味著企業開發人員和運維人員必須對其傳統方法進行一些重大變革,包括:

  • 開發人員必須願意學習更適合當今快速應用程式開發方法的技術。經驗豐富的“學生”可以通過線上學校快速學習。例如,Learnpython.org提供Python免費課程,而codecademy提供Ruby、Java和其他語言的免費課程。

  • 他們還必須願意學習如何將應用程式邏輯從單體靜態設計分解為獨立但協作的微服務集合,各類線上學習網站依然是不錯的選擇,例如IBM的微服務課程(https://www.coursera.org/learn/intro-ibm-microservices)、Lynda.com等等。

  • 開發人員必須採用新工具來建立和維護微服務,以支援它們之間快速可靠的通訊。善於使用各種商業和開源的資訊傳遞和管理工具,可以大大簡化這一過程。例如Rancher Labs的全開源平臺Rancher為使用者提供Kurbernetes-as-a-service。

  • 運維專家需要學習容器和Kubernetes的編排工具,以瞭解它們是如何讓團隊快速開發和改進應用程式和服務,而又不會失去對資料和安全性的控制。長期以來,運維一直是企業資料中心的守門人。畢竟,如果應用程式變慢或失敗,運維人員就要在此時負責解決這一局面。

  • 運維人員必須允許這些功能託管於他們直接控制的資料中心之外。為了說明這一點,Market Research Future的分析師最近發表了一份報告稱,“2017年全球雲微服務市場價值為5.844億美元,預計到預測期結束時將達到21.467億美元,複合年增長率為25.0%”。

  • 應用程式管理和安全問題現在必須成為開發人員思考的一部分。線上課程又一次地可以幫助個人發展這方面的專業知識。很多網站包括LinkedIn提供瞭如何成為IT安全專家的課程。

非常重要的一點是,IT和運維人員都必須理解IT的世界正在快速發展變革,每個人都必須專注於提升自身的技能和專業知識。

微服務如何使企業受益?

微服務這種分散式計算的最新發展,為企業帶來了許多實際和可衡量的收益。在IT組織採用這種形式的分散式計算後,開發時間和成本花費都可以大大降低。之後,可以根據需要並行開發每個服務並進行細化,而無需停止或重新設計整個應用程式。

開發團隊可以專注於開發人員的工作效率,並且仍然可以快速、線上地提供新的應用程式功能。運維團隊則可以專注於為應用程式執行定義可接受的規則,並通過編排和管理工具強制執行它們。

企業面臨哪些新挑戰?

與任何IT方法一樣,微服務架構的應用在帶來益處的同時也將帶來挑戰。

監控和管理大量“移動部件”,要比處理一些單體應用程式更具挑戰性。採用企業管理框架能有助於應對這些挑戰。除此之外,此類分散式計算的安全性也需要首要考慮。隨著網路上獨立功能的增加,每個功能都必須進行分析和保護。

所有單體應用程式都應該遷移到微服務嗎?

一些單體應用程式很難改變。這可能是由於技術挑戰或可能是由於監管限制。今天使用的一些元件可能來自於已經倒閉的供應商,使得遷移或重構變得極其困難甚至不可能。

對於企業來說,完成整個審計過程既費時又費錢。通常情況下,企業繼續投資舊應用程式的時間,比他們相信自己在節省資金的時間長得多。

企業應該先評估清楚某個單體應用是具體做什麼的,再考慮是不是要分離某些單獨的功能並作為較小的獨立服務執行。這些可以實現為基於雲的服務或基於容器的微服務。

最明智的方法,不是等待並試圖解決整個舊技術,而是進行一系列漸進式的更改,使得增強或替換舊系統的計劃更容易被接受。這與那句古老的諺語非常相似,“植樹的最佳時機,是20年前,其次是現在。”

這些變化值得嗎?

大量已經採用基於微服務的應用程式架構的企業已經證明了,他們的IT成本通常會降低。他們還經常表示,一旦他們的團隊掌握了這種方法,當市場需求發生變化時,新增新功能和特性會更容易、更快捷。

如果您的企業還完全沒有踏上微服務之路,從現在開始瞭解更多資訊也是好的。此外也應該多關注業界的一些新近流行的技術與解決方案,如Kubernetes、Rancher