DevOps是微服務的祕方

ALEX HANDY

讀完需要

6

分鐘

速讀僅需 2 分鐘

作者丨Alex Handy

譯者丨大白

策劃丨中生代技術社區

1

   

DevOps

遷移到微服務通常需要數量龐大的自動化,自動化意味着運維部署。在當今雲開發、敏捷開發爲主的情況下,運維正朝着優秀的 DevOps 實踐邁進。自然地,自動化需要代碼,並且如今的運維工程師擁有一些有史以來最強大的工具和系統,可以將比如說環境複雜性降低爲更容易編程的模塊。

但是,要實現這一目標, 微服務的真正研磨是必須有複雜的編織系統到位,負載均衡,網關監控,並在第一個微服務部署之前將整個應用程序堆棧中分發安全模型;這有點像一個廚師需要一個乾淨的、有廚具的廚房,以準備晚餐服務。這甚至延伸可以到服務員和點餐系統,工作人員需要把那些精心準備的牛肉盤子端給飢餓的顧客。

DevOps 的技能不是爲了成爲一名出色的廚師,而是成爲一名出色的管理者:管理服務員,管理送餐窗口,管理廚師和管理賬目,並且整個流程鏈,產品和人員完全可視化。

在微服務領域,這意味着通常由 DevOps 負責建立構建大規模環境所需的所有基礎架構。這意味着 Web 應用程序服務器,註冊表和存儲庫,操作系統和容器映像,虛擬化網絡,防火牆,負載平衡器,消息隊列和反向代理。DevOps 團隊還必須支持開發團隊所需的新技術:HTTP2,GRPC 和可靠的 SSL。

GitLab 首席執行官 Sid Sijbrandij 說:“隨着微服務的爆炸式增長,越來越多的項目湧現。公司發現,他們不僅必須自動化 DevOps 生命週期,而且還必須實現自動化。對於每個項目,您都必須設置創建工具,打包和管理。如果您每次都必須這樣做,那將花費很多時間。微服務複雜性不斷提高,因此需要在開發和運維之間進行更緊密的協作,達成共識更爲重要。”

2

   

是數據啊,笨蛋!

一個可能變得棘手的地方是數據。從使數據庫在 Kubernetes 中可靠地大規模運行到開發人員在通過微服務體系結構釋放時可以採用的外部數據存儲的突然激增,對於基於雲的基礎架構來說,數據都是一個大問題:問題如此之多,以至於最早的雲時代就有了關於“從應用程序中刪除狀態”的整體性建議。

今天,我們知道有狀態和無狀態應用程序都可以在雲上愉快地共存,但是管理數據的實際日常工作並不總是那麼容易。Kasten 產品負責人 Georgi Matev 說:“我們看到的是數據遵循的模式與計算端相同。隨着事務分解成更小,更合乎邏輯的組件,在數據端亦如此。”

雖然聽起來不錯,但敏捷的移動數據與移植代碼完全不同。Datical 首席技術官 Robert Reeves 說,這不是不自動化數據層的藉口。“每個人都可以更快地編譯部署應用程序。但是,他們仍然依靠手動更改數據庫來支持該應用程序。這導致速度差。Reeves 說:“您的房子中有一部分按時離開家,而房子的另一側(數據庫人員)則處於自殺觀察狀態。”

準備微服務有點像廚師需要一個正確清潔,工具齊全的廚房,以便準備晚餐服務。

Reeves 說:“我們需要讓人們擺脫困境。我們需要消除人工干預。過去系統管理員認爲構建服務器就像構建手工咖啡桌一樣。‘看看這佈線!看看咱們數據中心的有多漂亮?’今天,誰在乎,老兄?”

Reeves 說:“首先需要克服的想法是,我們需要人工來手動查看和執行我們的 SQL 腳本。” “我們的第一個企業客戶是一家非常大的銀行。當我們的執行發起人開始與 DBA 交談並說:“嘿,您如何看待數據庫的自動化,”他說,“那不是我們在這裏做事的方式。”

Reeves 說:“我們是微服務的忠實擁護者,但您需要將更新這些服務和支持微服務的數據庫的力量交給產品團隊。” “我們有使用 Pivotal 的客戶,他們可以在幾秒鐘內更新,但是必須等到外部服務團隊可以在數據庫上運行腳本之後再進行。他們需要等待 10 至 12 天。重點是什麼呢?”

3

   

複雜問題

更加複雜的是引入 Kubernetes 作爲容器編排的新標準。隨着採用 Kubernetes 的應用不斷增長,圍繞它的一些與現有基礎架構模式相適應的問題尚未完全解答。儘管如此,還是由 DevOps 來理解和管理 Kubernetes,以便開發人員可以按需獲取他們的數據庫,管道和部署。

IBM 只是已經在 Kubernetes 上建立基礎架構的衆多公司之一。例如,Istio 項目允許 DevOps 團隊完全控制其微服務周圍的數據和流量。Daniel Berg 是 IBM 傑出工程師,負責容器和微服務,在給 newstack 的電子郵件中寫道,“在 open community[theopencommunity.org],[IBM 公司]曾與其他頂級技術公司,如谷歌和 Lyft 建立 Istio,把業務流程層裝備在開發與容器上,以更好地保護和流量監控。我們還與 Google 合作推出了 Grafeas,這有助於在部署和使用容器時保護圍繞容器的供應鏈代碼。”

IBM 的工作還致力於使 Kubernetes 更易於使用,因此不必通過在複雜的系統上旋轉旋鈕來壟斷 DevOps。“儘管使用 Kubernetes 構建基於容器的解決方案仍然存在學習上的彎路,但我們正在 IBM 內部以及與社區一起開發工具和功能,以使其更容易在 Kubernetes 中開發應用程序而不必成爲 Kubernetes 專家,”Berg 寫道。

所有這些服務的背後都需要一套統一的流程。投資於公司內部微服務的各種團隊需要開放的溝通渠道,並且需要以無可避免的方式來實施它們。這是一項工作,它是將人類行爲編碼到自動化,部署和開發管道中。

Nginx 的微服務工程首席架構師和高級總監 Chris Stetson 表示:“您必須圍繞應用程序開發方式改變思維方式。最近,我們一直在做的事情之一就是創建一個統一的開發和部署過程,在此過程中,您的應用程序開發人員將在 Docker 化版本的應用程序中工作,並基本上在該 Docker 環境中進行編碼和測試,這非常類似於我們將最終爲客戶部署的環境。Stetson 說:“建立這一流程使開發人員輕鬆上手非常有價值。”

Stetson 說,Nginx 已經實施了一個幾乎古老但有效的解決方案。“我們使用 Makefiles,我們一直在使用 Makefiles 來封裝更復雜的 Docker 組合命令,這些命令已經組合在一起,成爲前端開發人員能夠進行 Webpack 前端開發的構建目標。他們重新連接到他們需要動態重新加載正在使用的更改的所有服務,我們喜歡使用 Makefile,因爲它本質上類似於聲明性的 Bash 腳本,” Stetson 說。

4

   

作者簡介

4.1

   

Alex Handy

Alex Handy 是擁有 20 年經驗的資深技術記者,他的作品發表在 Wired, the Atlanta Journal Constitution, and The Austin American Statesman. 他還是位於奧克蘭的非營利性電子遊戲博物館藝術和數字娛樂博物館(themade.org)的創始人和總監。他在 VonGuard.net 進行諮詢。

原文鏈接:https://thenewstack.io/devops-is-the-secret-ingredient-to-make-microservices-cook/


推薦閱讀

 

波波老師大解密:如何成爲優秀的架構師?

 

阿里如何面試MySQL優化CPU消耗

 

DevOps落地成不成,關鍵不在持續集成?

 

阿里高工流生 | 雲原生時代的 DevOps 之道

 

新炬首架樑銘圖:從70萬字SRE神作提煉出7千字精華與君共勉


福利贈送,中生代技術社區提供內推服務,直接內推到技術大廠用人部門,

有需求請添加社區社區專屬服務小姐姐Elsa的微信

申請備註(姓名+公司+技術方向)通過後溝通!

   END     
#接力技術,鏈接價值#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章