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