微服務是否是終點站

所謂微服務指的是一些由API驅動的小型應用程序,它們在追求一個共同目標的前提下負責把一件事情作好。

該定義總結了微服務當下最流行的常見說法。再者,若是處理得當的話,微服務真的能夠作到它們想要作到的 全部美好的事情 。從架構和程序的角度來講,相比於更加單體化的方案而言,微服務在應用開發方面擁有許多有意義的優點。看看那些像Amazon和Netflix這樣成功的企業,發現本身有這樣的想法也就很合情合理了,"微服務!必定是它!"html

不過,我並非很喜歡這個鬆散的定義,由於它徹底忽略了構建微服務背後的一個關鍵動機: 讓團隊可以更快地交付功能到生產環境,而且摩擦變得更少。 微服務只有在正確的軟件文化到位時才能發揮最大效果。一個關注微服務的組織也應該像重視開發和運維生產力那樣接受並實現一些文化方面的重大轉變。git

從總體層面考慮,這裏有三個嚴峻的事實是那些正在調研或實現微服務的組織須要考慮的。並且,不出所料,每一個事實都更多關注在人和文化方面,賽過工具或者架構。編程

  • 除非你是一家以持續增加的名義有動力去吸引和留住優秀人才的公司,不然你沒法作好微服務。 你的目標不必定像 Facebook 大約在2009年那樣地高速成長,可是你確實須要一個真正的決心,持續發展業務,而且可以欣賞優秀的軟件人才,讓他們有用武之地;
  • 在一個走下坡路的背景下,員工還掙扎在生存線的話,你將沒法作好微服務。 生存主義是一種可以扼殺微服務本應會帶來的靈活性和風險性的環境,並且它會積極地勸退那些最有才華的員工。天才的軟件構建者們是一羣渴望嘗試和探索新的最佳實踐的人,而不是去學習什麼該作,什麼不應作;
  • 若是你打算將全部最優秀的開發人員"晉升"到管理崗,那麼你(也許)沒法作好微服務 。微服務架構是由一些超級增加公司設計和推廣流行的,這些企業優先考慮的是工程化,這就意味着微服務須要的是有才華的而且熟練這塊技能的人才致力於這方面的工做。若是你爲他們提供的職業發展機會是技術通道,而非管理通道,他們之中的一些人將能夠和你的業務一塊兒快速發展。

在嘗試推廣微服務時,接受並解決與文化衰退和增加緩慢相關的問題的公司將會好不少。這就是緣由所在。安全

在一些高速增加的企業裏,人就是流程

微服務的神話裏有一個源自於Amazon和Netflix的傳奇故事。這是世界上最有價值而且在當時也是發展最快的兩家公司,他們在採用新架構和基礎架構模型方面的領導地位有助於向世界傳授構建雲原生應用程序的意義所在。可是,當咱們如今回過頭來考慮Amazon和Netflix爲何在微服務上下這麼大賭注背後的動機時,咱們開始看到一副更詳細的畫面,講述了他們爲什麼可以成功轉變。一個很大而未被充分認識的因素即是熟練的開發人員在鬆耦合和我的自治的環境裏可以更快成長。架構

集中式架構將不可避免地發出一些我稱之爲文化超速罰單的東西 - 在一個單體軟件項目中試圖按時交付功能時所產生的缺陷的結果。有才華的開發人員會試圖經過創新和向管理層提出想法來避免這些問題,這有助於保護他們的自由,自主性和研發速度。Amazon和Netflix的微服務並非商業計劃的一部分。它們是軟件工程師和運維人員最終找到的一種減小浪費的方式,而且幫助他們以一種更快,更安全的開發速度構建和運維應用程序 - 沒有超速罰單。運維

對於許多人而言,在一家高速發展的企業裏一個很能引發共鳴的反例就是Initech,這是一部另類經典電影 Office Space 中的虛構僱主。主角就是軟件開發人員,他們因缺少自由和自主而受到扼殺。他們受到焦慮和粗心的困擾,由於他們處在生存模式 - 試圖在一家重視流程甚於人的企業裏繼續努力工做(或至少要玩的開心)。一些管理顧問不斷涌入而且要求他們削減成本,這讓公司的員工感到恐慌,他們以爲有必要爲本身的存在辯護。在現實世界中,就像在電影裏那樣,這種狀況下員工和僱主一般都不會滿意。ide

不少時候,今天的軟件開發領域一樣分紅兩路派系:高增加的科技公司和其餘全部人。 微服務的普遍採用有可能幫助填補這一差距,可是前提是採用微服務的公司是出自合理的原因作出的改變。改善軟件架構的最佳途徑是首先解決公司的文化問題 - 特別是當這種文化會致使微服務發展停滯,而讓員工陷入生存模式的一些歷史遺留流程還會成爲攔路虎。函數

每一個人都想要自由,效率,以及可控

不過,微服務每每停留在想的階段,部分緣由是一些歷史遺留的軟件實踐可能會致使止步不前的文化氛圍。開發人員一直但願的是無需和運維溝通,能夠更自由地自動化基礎架構,而運維人員則但願的是更自由地自動化基礎架構的管理 - 主要是爲了防止開發人員不斷變動致使業務中斷。這些需求源自於管理單體應用程序的共享基礎架構時固有存在的困難。微服務

對這種架構的每次變動都是對系統穩定性的一次考驗。每道護欄都是變動的障礙。在這種軟件文化中,得罪人是一種常態,一我的的粗枝大葉可能致使其餘人在週末時間幫忙收拾殘局。所以,他們對於像微服務這樣的事物的渴望始終存在。得益於雲原生和開源工具的出現,業內不斷涌現出性價比更高,更自動化的基礎設施,讓微服務的部署變得更加容易(若是你想要一些關於如何工做在上雲以前的革命故事,我有不少能夠分享的),可是,改變文化的困難和費用仍然是主要障礙。工具

然而,只是能夠開始在Kubernetes集羣上啓動微服務並不意味着你應該急於立馬這樣作。許多公司沒有意識到的是,花在部署上的時間和精力(多是失敗的),更好是用於首先檢查通往生產的路徑,而且能夠準備將部署流水線作成一個自動化的可重複實踐。若是須要幾周時間才能把第一行代碼部署到生產環境中,那麼你應該考慮升級工具,應用一些像持續交付這樣的實踐。

在將新的複雜度引入架構前,你的出發點應當是爲團隊提供更輕鬆、更高效的生活。

圖片來源: www.slideshare.net/adr ... erl…

試想一下從一個百萬行代碼的單體應用到500個微服務的轉變。這有點像洛杉磯國際機場(LAX)裏每一個廣場只有一個電源插座,成千上萬的乘客在大廳裏走動,但願找到它並使用它。這樣作的話,洛杉磯國際機場也許很快就須要弄清楚該如何從1個出口到其餘另外的至少10,000個出口。要解決這個問題,一種方案是購買大量的延長線而後增長插座的數量。這樣作的話最終是讓電線四處纏繞在走廊裏,就像蛇盤繞在飛機上同樣,全部都是出自一個插口。沒有機場能夠作到這一點,可是咱們在軟件領域每每就是這麼作的。

或者它也能夠選擇作正確的事情:打碎一些牆壁而後把系統重作一下,支持更多的牆壁插座。作正確的事情須要勇氣,並且須要自頂向下思考,「若是被絆倒或者爭奪單一代碼倉庫的控制權的人數會所以減小的話,那麼打碎一些牆壁是值得的。」

新架構須要新文化

不管是經過微服務,函數仍是其餘任何形式,軟件架構的變革均需做出某種類型的轉變,而這種轉變源自一個紮根于堅持一種健康文化的有機過程。在這樣的環境下,微服務實際上能夠作到事半功倍的效果。現在,開發和運維均可以找到本身的角色 - 這意味着更快樂,更高效的團隊,最終實現更高效的數字業務。

那麼要怎麼實現呢?如下是一些能夠上手推進軟件文化改變的事項:

1.鼓勵員工,激勵他們採用新的解決方案而且最大限度地下降犯錯風險來解決問題。

2.使用黑客馬拉松或其餘類型的自由思考練習來加強創造力。

3.經過試驗結對編程等實踐來改善協做。

4.經過在辦公室裏公開採購一些內部工具和開辦會議來創建社區和參與感。

5.經過舉辦技術講座向員工們表達你對他們創造力的重視,他們能夠分享衍生項目或其餘技術興趣。

6.經過啓動綠地項目試驗新的技術和軟件實踐。

7.經過聘請更多元化的團隊,尋找新的想法和觀點。

若是你常常作上述這些事情,那麼你就像是一家爲微服務作好準備的企業 - 由於你正扮演一家想要吸引並留住所需的人才來保持增加的企業。

重要的是要記住微服務不是終點站。 對於尋求在軟件主導的世界中生存的數字業務而言,微服務只是星辰大海的一部分。 升級您的文化與升級您的工具同樣重要

相關文章
相關標籤/搜索