伊燁然
隨著云原生和數(shù)字化的快速發(fā)展,各行業(yè)對云服務(wù)的需求進入了快速增長期,因此出現(xiàn)了很多云相關(guān)的專業(yè)縮寫詞,有些看上去甚至還很相似。下面對這些云基礎(chǔ)概念進行詳細的梳理。
云原生(Cloud Native)的概念,由來自Pivotal的Matt Stine于2013年首次提出,被一直延續(xù)使用至今。這個概念是Matt Stine根據(jù)其多年的架構(gòu)和咨詢經(jīng)驗總結(jié)出來的一個思想集合,并得到了社區(qū)的不斷完善,內(nèi)容非常多,包括:DevOps、持續(xù)交付(CD)、微服務(wù)(MicroServices)、敏捷基礎(chǔ)設(shè)施(Agile Infrastructure)和十二要素(The Twelve-Factor App)等幾大主題,不但包括根據(jù)業(yè)務(wù)能力對公司進行文化、組織架構(gòu)的重組與建設(shè),也包括方法論與原則,還有具體的操作工具。采用基于云原生的技術(shù)和管理方法,可以更好地把業(yè)務(wù)根植于云或遷移到云平臺,從而享受云高效和持續(xù)的服務(wù)能力。
DevOps
DevOps是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)、運維和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。它是一種重視軟件開發(fā)人員(Dev)和IT運維技術(shù)人員(Ops)之間溝通合作的文化、運動或慣例。通過自動化軟件交付和架構(gòu)變更的流程,來使得構(gòu)建、測試、發(fā)布軟件能夠更加快捷、頻繁和可靠。DevOps的出現(xiàn)是由于軟件行業(yè)日益清晰地認(rèn)識到:為了按時交付軟件產(chǎn)品和服務(wù),開發(fā)和運維工作必須緊密合作。
CI/CD
持續(xù)集成(CI)是一個讓開發(fā)人員將工作集成到共享分支中的過程,從而增強了協(xié)作開發(fā)。頻繁的集成有助于解決隔離,減少每次提交的大小,以降低合并沖突的可能性。持續(xù)交付(CD)是持續(xù)集成的擴展,它將構(gòu)建從集成測試套件部署到預(yù)生產(chǎn)環(huán)境。使得它可以直接在類生產(chǎn)環(huán)境中評估每個構(gòu)建,因此開發(fā)人員可以在無需增加任何工作量的情況下,驗證Bug修復(fù)或者測試新特性。一旦部署到預(yù)發(fā)布(Staging)環(huán)境中,就可能需要進行額外的手動和自動測試。CI/CD的出現(xiàn)大大提高了開發(fā)團隊的生產(chǎn)效率,縮短了開發(fā)周期,其敏捷、穩(wěn)定、可靠的特性,也越來越被企業(yè)所青睞與需要。
十二要素(The Twelve-Factor App)是由Heroku創(chuàng)始人Adam Wiggins首次提出并開源,由眾多經(jīng)驗豐富的開發(fā)者共同完善,這綜合了他們關(guān)于SaaS應(yīng)用幾乎所有的經(jīng)驗和智慧,是開發(fā)此類應(yīng)用的理想實踐標(biāo)準(zhǔn)。它定義了一個優(yōu)雅的互聯(lián)網(wǎng)應(yīng)用在設(shè)計過程中,需要遵循的一些基本原則,和云原生有異曲同工之處。
微服務(wù)是一個新興的軟件架構(gòu),就是把一個大型的單個應(yīng)用程序和服務(wù)拆分為數(shù)十個微服務(wù)。一個微服務(wù)的策略可以讓工作變得更為簡便,它可擴展單個組件而不是整個的應(yīng)用程序堆棧,從而滿足服務(wù)等級協(xié)議。微服務(wù)是面向服務(wù)的體系架構(gòu)(SOA)架構(gòu)下的最終產(chǎn)物,該架構(gòu)的設(shè)計目標(biāo)是為了分解業(yè)務(wù),使得服務(wù)能夠獨立運行。微服務(wù)設(shè)計原則:①各司其職;②服務(wù)高可用和可擴展性。
SOA
SOA是一個組件模型,將應(yīng)用程序的不同功能單元(稱為服務(wù))進行拆分,并通過這些服務(wù)之間定義良好的接口和協(xié)議聯(lián)系起來。接口是采用中立的方式進行定義的,它應(yīng)該獨立于實現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種各樣系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進行交互。
敏捷基礎(chǔ)設(shè)施是指使用腳本或文件配置計算基礎(chǔ)設(shè)施環(huán)境,而不是手動配置環(huán)境的方法。無需運維人員,全部自動化,通過容器封裝環(huán)境,開發(fā)人員可以直接將所有軟件和依賴直接封裝到容器中,打包成鏡像,生產(chǎn)環(huán)境直接部署鏡像。可以實現(xiàn)所有環(huán)境都一樣。容器調(diào)度平臺管理容器,資源利用率更高,通過配置文件描述環(huán)境,例如要部署8臺Nginx,端口是什么,鏡像用哪個,日志放在什么地方,配置文件用哪個,部署在什么地方?都可以直接描述出來。注意,這個描述文件以前是運維干的,現(xiàn)在開發(fā)就能搞定。