云原生是什么(圖文)
云原生從字面意思上來看可以分成云和原生兩個部分。云是和本地相對的,傳統的應用必須跑在本地服務器上,現在流行的應用都跑在云端,云包含了 IaaS,、PaaS 和 SaaS。
原生就是土生土長的意思,我們在開始設計應用的時候就考慮到應用將來是運行云環境里面的,要充分利用云資源的優點,比如?云服務的彈性和分布式優勢。
圍繞云原生的對話會直接潛入諸如容器化和微服務之類的技術選擇中。這些絕對是云原生項目的潛在組成部分,但絕對不是全部。在本系列文章中,我們將從幾個不同的角度探討本機云,當然包括技術和基礎架構,還包括架構,設計,以及可能最被忽略的人員和流程。用最簡單的術語來說,云原生意味著不僅要遷移到云,還要充分利用云基礎架構和服務的獨特性來快速交付業務價值。
在該術語本身開始使用之前,就已經存在云原生概念。從某種意義上說,云原生始于公共云供應商開始提供對彈性計算能力實例的輕松且負擔得起的訪問。問題就變成了,如何利用該新基礎架構的靈活性來編寫應用程序,以及由此帶來的業務收益?
在過去十年中,云原生方法和技術發生了很大變化,并且仍在不斷發展,但是云原生應用程序要實現的核心技術和業務目標卻保持不變。這些包括:
敏捷性和生產力:實現以業務指標為指導的快速創新。降低維護風險,并使環境保持最新狀態。
彈性和可伸縮性:以自我修復和無停機的持續可用性為目標。提供彈性縮放和無限容量的感知。
優化和效率:優化基礎設施和人力資源的成本。啟用位置和提供者之間的自由移動。
當我們回顧云原生的“為什么”時,我們將在后面的文章中進一步細分這些目標,但是希望即使是從這個簡單的定義來看,也應該清楚的是,云原生的范圍比僅僅向新的類型遷移還廣。基礎設施。但是,盡管這些目標是準確的,但很難看出它們專門適用于本機云。我們需要做更多的工作來定義云原生的真正含義。
與云原生相關的流行參考點(例如微服務)和較早的清單(例如 12factor 應用)可能會讓您得出結論,云原生是對體系結構樣式的描述,其他選擇也隨之而來。毫無疑問,云原生架構確實存在。但是,為了在云原生平臺上取得成功,公司必須采取更全面的看法。除了架構和基礎架構決策外,還存在組織和流程決策。
微服務
微服務解決的是我們軟件開發中一直追求的低耦合+高內聚,記得有一次我們系統的接口出了問題,結果影響了用戶的前臺操作,于是黎叔拍案而起,靈魂發問:“為啥這兩個會互相影響?!”
微服務可以解決這個問題,微服務的本質是把一塊大餅分成若干塊低耦合的小餅,比如一塊小餅專門負責接收外部的數據,一塊小餅專門負責響應前臺的操作,小餅可以進一步拆分,比如負責接收外部數據的小餅可以繼續分成多塊負責接收不同類型數據的小餅,這樣每個小餅出問題了,其它小餅還能正常對外提供服務。
DevOps
DevOps 的意思就是開發和運維不再是分開的兩個團隊,而是你中有我,我中有你的一個團隊。我們現在開發和運維已經是一個團隊了,但是運維方面的知識和經驗還需要持續提高。
持續交付
持續交付的意思就是在不影響用戶使用服務的前提下頻繁把新功能發布給用戶使用,要做到這點非常非常難。我們現在兩周一個版本,每次上線之后都會給不同的用戶造成不同程度的影響。
容器化
容器化的好處在于運維的時候不需要再關心每個服務所使用的技術棧了,每個服務都被無差別地封裝在容器里,可以被無差別地管理和維護,現在比較流行的工具是 docker 和 k8s。
所以你也可以簡單地把云原生理解為:云原生 = 微服務 + DevOps + 持續交付 + 容器化