歡迎光臨
每天分享高質量文章

微服務和容器——企業持續交付指南

很大程度上,當今的企業需要依靠軟體應用來促進大量的商業需求。在大多數企業中,一個軟體應用往往提供了數百項功能——所有這些功能都集中在一個大型單體應用中。例如,ERP和CRM平臺具有統一的架構,有效地服務於數百種功能。但是,由於多個依賴項重疊並創建集群,故障診斷、擴展和升級它們的任務變成了噩夢。有時,企業會為了方便而調整這種單體應用,因為單體應用一旦陷入瓶頸,便不再為任何真正的業務目的提供服務。這時,企業開始尋找實現應用程式現代化和採用靈活性的架構方法。
微服務的崛起

 

企業對微服務架構的需求越來越大,以實現向現代交付的轉變。在此架構下,功能被設計為獨立的微服務,這些微服務之間松耦合,以創建一個能夠執行多任務的應用程式。這種方法有助於大規模地構建應用,在組件級別進行更改變得容易,而不會幹擾應用的其他部分。
Netflix是最大的、也是最有趣的成功案例之一,它從單體架構過渡到基於微服務架構的應用。這家媒體服務提供商永遠不會忘記2008年的一天,一個分號的丟失導致了重大的資料庫損壞,導致整個平臺癱瘓了幾個小時。Netflix意識到他們必須改變架構方法,從而考慮從單體架構轉向微服務架構。
儘管Netflix從2009年開始轉向微服務架構,併在2011年成功地運行了基於雲的微服務架構,但微服務這個術語在2012年之前並沒有出現。直到2014年Martin Flower和該行業的其他領軍人物開始討論這個問題時,它才開始流行起來。
Netflix的首席雲工程師Adrian Cockcroft是一位有遠見的人,他在架構格局的變化中扮演了重要角色,他將微服務解釋為“具有有限背景關係的鬆散耦合的面向服務的架構”。
由於他大膽的決定轉向微服務,Netfix在可擴展性上取得了巨大飛躍。2016年初,Netfix宣佈將服務擴展到130多個新的國家。

 

微服務如何使企業應用受益

 

從單體架構到微服務的過渡可以為企業打開一個充滿各種可能性的世界,例如:
  • 能夠創建支持服務且獨立運行的組件,這樣,每個組件自身都是獨立的,但是它們都通過API耦合在一起,作為應用程式以統一的方式工作。

  • 獨立測試和運行的組件,你可以很輕鬆的對一個組件運行測試與更改,而不必更改任何其他組件。

  • 互連組件的同步工作,組件使用簡單的通信通道和協議作為個體單元共存並協同工作。

  • 一個非集中化的應用程式,每個組件都是獨立的,可以單獨開發和部署。因此,消除了由於一個小缺陷而導致整個應用程式崩潰的風險。

  • 分散的資料管理 ,每個組件都有自己獨立的資料庫,因此,可有效地防止資料泄露導致接管整個應用程式,並將其限制在一個組件中,這增強了應用程式的安全性。

  • 靈活和可伸縮的應用程式,應用程式的部分升級或擴展,無需對已經存在的組件進行任何更改。

儘管微服務架構有很多優點,但它也有自己的局限性。微服務面臨的最大挑戰之一仍然是如何大規模的提供這些服務。這種分段應用的持續集成和交付變得非常複雜,因為需要大量的協調才能同步地集成和部署一組微服務。只有非常高效的DevOps團隊才能實現這一壯舉。關鍵是在微服務和它們賴以運行的基礎設施之間擁有無縫的通信通道。為了充分挖掘微服務的價值,必須將它們作為可自我維持和可移植的交付單元,這些單元由容器支持。

 

對於微服務,為什麼選擇容器

 

“容器簡化了微服務的持續部署”——這句話經常被技術專家重覆。但是究竟什麼是軟體容器?它們是如何簡化微服務的交付的?
容器所做的與物理容器完全相同,但是更加數字化。簡而言之,容器允許你將微服務放入專用的盒子中,其思想是將類服務及其所需的基礎設施打包到其中。容器在虛擬化操作系統中提供了一個獨立的工作負載環境。通過在單獨的容器中運行微服務,可以獨立地部署它們。由於容器在隔離的環境中操作,因此可以使用它們部署微服務,而不考慮用於創建每個微服務的代碼語言。因此,容器消除了語言、庫或者框架之間的任何摩擦或衝突的風險,從而使它們兼容。
由於容器非常輕量且可移植,因此可以使用它們快速部署微服務。通常,應用程式由小型自包含的微服務組成,每個微服務充當一個單一功能的應用程式,通過不依賴於特定語言的API一起工作。因此,容器在這種情況下提供了所需的隔離性,從而支持組件協同。
作為微服務使用容器好處的支持,Docker報告表明,使用Docker容器的軟體發佈頻率增加了46%。
這些容器可以通過容器編排平臺進行編排,如Kubernetes、Docker Swarm、Helios等。這些平臺可以根據需要創建多個容器,並使它們易於應用的順利部署。編排還控制如何連接容器,以便從多個微服務構建複雜的應用程式。

 

展望,前方的道路

 

雖然容器和編排平臺是當今熱門話題的一部分,但更大的問題是企業如何以及何時可以開始在生產中使用它們。這兩種技術都為應用交付的速度、規模和頻率設定了新的基準,如果沒有自動化和流程標準化,這將很難實現。這可以通過選擇一個高效的應用交付平臺來實現,該平臺可以為現有應用和未來的雲原生應用提供容器化,並無縫地將它們匯入Kubernetes,從而實現應用交付過程的自動化。這樣可以簡單的規範APP的交付流程,加快容器原生交付的關鍵環節,實現微服務的持續交付。
原文鏈接:https://hackernoon.com/https-medium-com-spruha-pandya-of-microservices-containers-6f0ea25dac3

赞(0)

分享創造快樂