什麼是雲原生架構
阿新 • • 發佈:2019-06-30
從業務角度看,雲原生是一種針對IT資源的按需付費的商業模式;
從技術角度看,雲原生分兩大部分,一部分是遵循微服務化和容器化原則的雲原生應用,另一個部分是用於構建和運行雲原生應用的雲原生平臺。
雲原生應用和雲原生平臺,共同構成了一個雲原生的完整體系,在這個體系上,可以實踐敏捷開發、DevOps、容器編排,微服務和容器化等理論和方法。
雲原生平臺
敏捷開發
一種小規模團隊的、全棧式的開發方法,要求團隊具備快速響應變化,快速迭代開發的能力。
最佳實踐
- scrum
- xp
DevOps
開發和運維之間保持流程連續的協作方法,目標是快速、頻繁且更可靠地構建、測試和釋出軟體。
最佳實踐
- Jenkins
- GitLab
容器編排
一種容器資源的管理方法,目標是管理容器叢集和排程容器化應用。
最佳實踐
- Kubernetes
- Docker Swarm
- Mesos
雲原生應用
微服務
是將大型應用作為小型服務集合進行開發的架構方法,其中每個服務都可實現業務功能,在自己的流程中執行並通過 HTTP API 進行通訊。每個微服務都可以獨立於其它服務進行部署、升級、擴充套件和重新啟動,通常作為自動化系統的一部分執行,可以在不影響最終客戶的情況下頻繁更新正在使用中的應用。
最佳實踐
- Spring Boot
- Spring Cloud
- Jhipster
容器化
與虛擬機器相比,容器能同時提供更好的效率和啟動速度。每個容器都具有唯一的可寫檔案系統和資源配額。建立和刪除容器的開銷較低,在單個虛擬機器上能通過容器化充分利用物力資源,這使的容器成為部署微服務的完美工具。
最佳實踐
- Docker Image
- OCI
雲原生應用與傳統應用
雲原生應用 | 傳統應用 |
---|---|
可預測。 雲原生應用符合旨在通過可預測行為最大限度提高彈性的框架或“合同”。 | 不可預測。 通常構建時間更長,大批量釋出,只能逐漸擴充套件,並且會發生更多的單點故障 |
作業系統抽象化。 | 依賴作業系統。 |
資源排程有彈性。 | 資源冗餘較多,缺乏擴充套件能力 |
團隊藉助DevOps更容易達成協作。 | 部門牆導致團隊彼此孤立。 |
敏捷開發。 | 瀑布式開發。 |
微服務各自獨立,高內聚,低耦合。 | 單體服務耦合嚴重。 |
自動化運維能力。 | 手動運維。 |
快速恢復。 | 恢復緩慢。 |