什么是云原生
云原生從字面意思上來看可以分成云和原生兩個部分。
云是和本地相對的,傳統的應用必須跑在本地服務器上,現在流行的應用都跑在云端,云包含了IaaS,、PaaS和SaaS。
原生就是土生土長的意思,我們在開始設計應用的時候就考慮到應用將來是運行云環境里面的,要充分利用云資源的優點,比如️云服務的彈性和分布式優勢。
那具體要怎么利用呢,請參考下圖:
微服務
微服務解決的是我們軟件開發中一直追求的低耦合+高內聚,記得有一次我們系統的接口出了問題,結果影響了用戶的前臺操作,于是黎叔拍案而起,靈魂發問:“為啥這兩個會互相影響?!”
微服務可以解決這個問題,微服務的本質是把一塊大餅分成若干塊低耦合的小餅,比如一塊小餅專門負責接收外部的數據,一塊小餅專門負責響應前臺的操作,小餅可以進一步拆分,比如負責接收外部數據的小餅可以繼續分成多塊負責接收不同類型數據的小餅,這樣每個小餅出問題了,其它小餅還能正常對外提供服務。
DevOps
DevOps的意思就是開發和運維不再是分開的兩個團隊,而是你中有我,我中有你的一個團隊。我們現在開發和運維已經是一個團隊了,但是運維方面的知識和經驗還需要持續提高。
持續交付
持續交付的意思就是在不影響用戶使用服務的前提下頻繁把新功能發布給用戶使用,要做到這點非常非常難。我們現在兩周一個版本,每次上線之后都會給不同的用戶造成不同程度的影響。
容器化
容器化的好處在于運維的時候不需要再關心每個服務所使用的技術棧了,每個服務都被無差別地封裝在容器里,可以被無差別地管理和維護,現在比較流行的工具是docker和k8s。
所以你也可以簡單地把云原生理解為:云原生 = 微服務 + DevOps + 持續交付 + 容器化 。