如何避開陷阱邁向雲原生

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#888888","name":"user"}}],"text":"在你的雲遷移策略中充分利用開源容器技術和開放規範。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"如今,許多開發團隊仍在數據中心中運行着單體應用程序。那些久經考驗的三層架構真是太棒了!你僱來的開發人員寫好代碼,扔到應用裏,而你請來的系統管理員隨時待命,負責運行這些應用。一般來說,因爲這種工作分配機制,你們每年才能交付和部署一個大版本——如果你們真的很擅長做自己的事情,那麼一年可能會交付和部署兩個大版本。如果你們不是谷歌或Netflix,這樣做完全沒問題——用作者Jim Butcher的那句知名格言來說,你只需要比直接競爭對手更快就行了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"但是要真正超越競爭對手,你需要投資工具鏈和方法,來更快獲得可以讓用戶受益的功能。遷移到雲並充分利用開源軟件和開放規範可以讓你跑得更快、最大程度地減少對供應商的依賴、實現更快的迭代,並促進利益相關者之間的信任。這些好處讓開源方法成爲了一種特別高效的,支持向雲中的容器化應用程序遷移的方式。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"找到上雲之路"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在數字化轉型項目和較小的、更接近戰術層面的項目中,遷移到雲的一大核心動機往往是自助服務。相比需要管理和維護平臺、還要管理部署的IT運維方法,自助服務方法可以讓開發人員從集羣級別的訪問到更類似PaaS的環境中自己處理各種事宜。在這種情況下,容器化微服務至關重要:容器解決了包裝層面的挑戰,而微服務則讓各個開發團隊可以獨立地迭代和發佈他們的服務和功能,這和單體應用中的情況是不一樣的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"這種動態變化需要一些組織層面的調整,尤其是在IT部門內部,因爲團隊必須更加主動和一致地溝通,而不僅僅是通過格式票證來交流,這樣才能促進新功能的發佈。與過去的日子形成鮮明對比的是,IT運營商和開發人員會發現他們的動機是一致的;過去的日子裏,開發人員通常希望最大化功能的交付數量,而運維人員則希望最小化交付數量以保持整個系統的穩定性。當你遷移到較小的部署單元后,由於雲將虛擬機和網絡等構建模塊隱藏在了API的後面,因此開發人員最終將承擔起運維例程的責任,包括安全性、可觀察性,並對所部署的代碼隨時待命。軟件供應鏈的轉變意味着開發人員必須養成良好的運維習慣,例如對應用程序源代碼進行編排以發出日誌、指標和跟蹤,或掃描代碼尋找漏洞。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在這種轉型過程中,請記住在同事之間、管理鏈中以及與合作伙伴和供應商之間建立信任都需要花費時間。向雲遷移所帶來的企業文化變化通常是摩擦最嚴重的部分。新建項目和\/或小型項目在這個過程中是很有用的:你可以快速查看結果、從錯誤中學習,並通過實施DevOps實踐(如小批量工作並承諾快速反饋循環)等來逐步建立信任。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"押注開源和規範"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"免費的開源軟件作爲你的庫的一部分或在服務背後部署時有很多好處——重點在於你可以自己修復有問題的代碼。當然,對我們大多數人來說,維護一個分支並不是完全可持續的行爲,但是比起依靠供應商來處理支持案例,如果能立刻獲得臨時的有效緩解措施的話,生產力自然要高得多。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"如果你選擇以開放規範爲構建基礎(甚至可能是受互聯網工程任務組、萬維網聯盟或雲原生計算基金會等機構認可的標準),那麼另外一個好處是,你可以在本地和雲端使用相同的設置。對於本地設置,你可以部署開源解決方案、開\/閉源混合解決方案,甚至是專有解決方案。在雲中,你將使用基於開源項目或符合開放規範的託管服務。開源示例的列表幾乎是無止境的,包括可觀察性領域的OpenTelemetry和OpenMetrics、用於定義和執行組織或監管策略的OpenPolicyAgent、用於可移植容器包裝和執行的Open Container Initiative映像和運行時規範,以及Kubernetes API、Envoy xDS API或用於容器編排和聯網的Service Mesh接口。另外一個優點是,對於每種規範、API和格式,通常都可以選擇多個開源實現,這樣就擴展了你的選擇範圍。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"開放規範和開源軟件還可以促進遷移本身:當你將負載從數據中心轉移到雲中時,你可以將升級操作系統、庫和安全補丁等基礎架構組件的繁重工作轉移到你選擇的雲提供商上,從而釋放資源,讓你可以專注於你的核心業務和產品。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"爲障礙做好準備"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"除了所有這些優勢,你自然也會面臨一些挑戰。我們來重點看看我在實踐中目睹的兩個最突出的障礙。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"首先是開源軟件不一定像企業服務那樣受到良好的支持。只要覺得合適,任何人都可以使用開源軟件並運行它。但如果你遇到錯誤,或者想要添加功能,或者想要對其進行擴展測試的時候該怎麼辦呢?開源軟件的作者沒有義務爲你提供你需要的補救措施。FOSS(Free Open Source Software)中的“F”表示你被允許並鼓勵使用封閉的專有軟件無法執行的某些操作,但這並不意味着你將獲得免費支持。相反,你可能需要向某些供應商付款才能獲得支持,或者在你的團隊內部加強工程能力來解決問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第二個是與社區相關的挑戰:你需要在一定程度上與項目社區的步調保持一致。以Kubernetes的發佈週期爲例:Kubernetes的小版本每三個月發佈一次,結果你需要每年升級你的平臺兩到三次。這種升級涉及很多核心依賴項,例如羣集附件、託管的應用程序,以及第三方組件(例如運行時掃描器或可觀察性代理),你需要對它們都做好測試才能確保它們都可以在新版上繼續工作。沃德利地圖("},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Wardley_map","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/en.wikipedia.org\/wiki\/Wardley_map"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":")可以幫助你瞭解給定的FOSS產品及其生態系統在商品化與定製頻譜之間處於哪個位置,幫助你瞭解隨着時間的推移,與項目社區保持一致將需要花費多少精力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在採用開源組件推動你的雲原生之旅時,專注於更底層的容器這樣的抽象,而不是更接近PaaS或者FaaS級別的抽象,這是沒有錯的。如果你能根據你的特定業務需求來優化負載,很可能會給你帶來超越競爭對手的優勢。請注意你所使用的抽象級別,並準備好處理這種抽象帶來的後果,因爲它可能會影響可移植性和開發人員的生產力。"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"讓遷移物有所值"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"那麼,如何才能到達雲端呢?首先,應該將遷移視爲一種組織和文化挑戰,而不是技術挑戰。充分利用開放規範和開源軟件,將它們作爲遷移策略的一部分,你就可以增強團隊能力、促成必要的開發運維協作,從而更快地發佈功能,並在遷移至較小的部署單元時明確責任歸屬。它也可以基於自助原則帶來更容易(由人類)擴展的系統。只要保持對開源產品的客觀認識,你就能夠避開陷阱,並充分利用你手頭的工具。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/increment.com\/containers\/cloud-migration-and-containers\/","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/increment.com\/containers\/cloud-migration-and-containers\/"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章