很多企業開始了其數字化轉型之旅,并想知道什么是云原生以及為什么需要它?行業媒體發布了一篇名為“走向云原生:人們需要知道的6個基本內容(Going Cloud Native:6 Essential Things You Need to Know)”的文章,討論了解術語“云原生”的關鍵方法,并描述了如何利用云原生功能來加快開發團隊的工作效率,并提高企業的創新能力。
云原生簡史
根據用戶的要求,云原生可能意味著很多不同的事情。十年前,這是由Netflix公司創造的術語,這個公司利用云計算技術,從一家DVD光盤郵購公司發展到全球最大的按需消費內容網絡交付商之一。Netflix公司開創了人們稱之為“云原生”的先河,對于云計算軟件進行重新設計、轉換、擴展。
由于Netflix公司獲得了驚人的成功,并且能夠更快地為客戶提供更多功能,很多企業希望知道他們如何采用云原生技術以獲得如此巨大的競爭優勢。
從本質上講,云原生是一種提高業務速度的方法,也是一種構建團隊的方法,可以利用Kubernetes和容器等云原生技術提供自動化和可擴展性。
云原生架構:它是什么樣子的?
(1)單片架構與微服務架構
Netflix公司前云計算架構師Adrian Cockcroft在錯誤進行了一次災難性發布之后,該公司將他們的整體架構從單片架構轉移到微服務架構。
單片架構的問題是,當開發和測試新特性時,要將這些更改部署到生產環境中,需要付出相當大的努力:
•需要多個團隊來協調他們的代碼更改。
•同時部署多個功能需要大量的前期集成和功能測試。
•開發團隊僅限使用一種或兩種語言。
向微服務的轉變使Netflix公司開發人員能夠更快地向客戶提供新功能。
微服務產生了一個具有有界場景、松散耦合的、面向服務的架構。這意味著,如果必須同時更新每個服務,那么它不會松散耦合;并且沿著相同的線路,如果用戶對于周圍的服務需要進行更多的了解,那么就沒有“有界場景”。
(2)微服務、Docker和Kubernetes
Docker容器非常適合微服務。通過在單獨的容器中運行微服務,如果愿意的話,它們都可以獨立部署,甚至可以使用不同的語言。容器化消除了語言、庫或框架之間產生摩擦或沖突的風險。由于容器是可遷移的,并且可以彼此隔離地操作,因此使用容器創建微服務架構并在需要時將其遷移到另一個環境非常簡單。
(3)容器編排
一旦有大量的微服務在Docker容器中運行,企業就需要一種方法來管理或協調這些容器,以便它們作為應用程序更有意義。這就是企業需要一個協調器(集群管理器)的地方,比如Kubernetes、Docker Swarm等。
在過去的一段時間里,企業必須做出一個明智的選擇,選擇使用哪一個容器編排。谷歌公司發布的Kubernetes則名列前茅。所有主要云計算提供商都通過易于安裝的解決方案為Kubernetes提供支持。
這個討論的要點是,為了讓大多數公司具有競爭力,他們必須圍繞微服務構建應用程序,并在Kubernetes集群中運行它們,盡管有些公司也在其他編排器上運行Docker容器。
(4)自動部署
隨著應用程序在容器中運行并在Kubernetes中進行協調,下一步是自動部署。持續自動化的功能流是DevOps與其他軟件開發理念和實踐(如瀑布模型)的區別,后者的開發將遵循有序的階段序列。
連續性并不意味著工程師們正在無時不刻地更新代碼,或者他們在每次代碼行更改時都在部署更新。從這個意義上說,連續性是指通過自動化的連續集成和持續部署管道(CI/CD)定期推出的軟件更改和新功能。
可以在構建持續交付管道中找到更多用于構建持續部署管道(CI/CD)的DevOps策略。
(5)監控應用程序和微服務
使用容器和微服務,監控解決方案必須管理比以往更多的服務和服務器。不僅需要管理更多對象,而且云原生應用程序還會生成大量需要跟蹤的額外數據。
從由如此多的移動部件組成的環境中收集數據是復雜的。Prometheus是這些動態云環境的最佳現代解決方案。它專門用于監控大規模容器中運行的應用程序和微服務,并且是原生的容器化環境。
(6)文化變遷
將云原生技術和DevOps最佳實踐實施到組織中的成功在很大程度上取決于其現有的公司文化。內部團隊不僅要學會采用跨功能方法,確保軟件以連續的節奏進行迭代,而且還要補充組織的業務目標。實際切換到云原生可能是其旅程中最簡單的部分;讓這些更改保持不變,并在整個組織中傳播它們很可能是流程中最困難的部分。
人們了解有關云原生的更多信息,需要了解以下這些內容:
•采用云原生堆棧的企業的好處
•將云原生策略付諸實踐時會發生什么
•云計算基金會(CNCF)的作用
•云原生如何與DevOps相關