你是否真正瞭解雲原生?

yangwenhan發表於2023-03-08

伴隨雲端計算的滾滾浪潮,雲原生(CloudNative)的概念應運而生,雲原生很火,火得一塌糊塗,都2023年了,如果你還不懂雲原生,那真的out了。

大家言必稱雲原生,卻鮮少有人告訴你 到底什麼是雲原生,若是找資料來看,讀完大多會感覺雲繞霧罩,一知半解,總之虛得很;甚至會讓你一度懷疑自己的智商。

雲原生之所以解釋不清楚,是因為雲原生沒有確切的定義 ,雲原生一直在發展變化之中,解釋權不歸某個人或組織所有。


什麼是雲原生?

雲原生是一種基於容器、微服務和自動化運維的軟體開發和部署方法。它可以使應用程式更加高效、可靠和可擴充套件,適用於各種不同的雲平臺。

如果要更直接通俗的來解釋下上面的概念。

雲原生更準確來說就是一種文化,是一種潮流,它是雲端計算時代的一個必然導向,更重要的意義在於讓雲能夠成為雲化戰略成功的基石,而不是障礙。

雲原生適合雲的應用和好用的雲架構,透過下圖可以看到雲原生是整合了之前的雲三層(IaaS、PaaS、SaaS),能夠讓他們更加靈活高效的進行應用落地。

雲原生架構

1、微服務

內聚更強,更加敏捷。把一個龐大的app拆成幾個獨立小的獨立服務,再把服務串起來的一種架構設計。

2、容器化

資源排程、微服務更容易。一種輕量級的虛擬化技術,能夠在單一主機上提供多個隔離的作業系統環境,透過一系列的namespace進行程式隔離,每一個容器都有可寫檔案系統和資源配額。

3、DevOps

以終為始,運維合一。不是工具或技術,是一組過程、方法與系統的統稱,用於促進開發、技術運營和質量保障部門之間的溝通、寫作與整合。

4、持續交付

縮小開發者認知,靈活開發方向。

雲原生的價值

雲原生應用程式具有許多優點,這也是為什麼越來越多的人開始推廣使用雲原生的原因。

1、更快地部署和擴充套件

由於容器化應用程式可以輕鬆地在不同的雲平臺上移植,因此它們可以更快地部署到雲平臺上。此外,由於每個微服務都是獨立的,可以根據需要獨立擴充套件,而無需影響整個應用程式。

2、更好地利用雲資源

容器化應用程式可以更好地利用雲平臺的資源,因為它們可以在需要時動態分配和釋放資源。此外,由於微服務架構將應用程式拆分成小型服務單元,可以更好地利用資源,從而提高了應用程式的效率。

3、更好的可維護性和可靠性

由於自動化運維工具可以自動化部署、監控和管理應用程式,因此可以減少人工干預和錯誤,從而提高了應用程式的可靠性和可維護性。

雲原生應用程式具有更快的部署和擴充套件速度、更好的資源利用率以及更好的可維護性和可靠性等優點,這使得越來越多的人開始推廣雲原生。

如何實現雲原生

1. 容器化應用

容器化是雲原生的核心概念之一。透過將應用程式打包到容器中,可以更輕鬆地在不同的環境中部署和執行應用程式。Docker 是目前的容器化工具之一,可以幫助容器化應用程式。

此外這裡也推薦類似 FinClip 這樣的小程式容器,能夠將原有的複雜 App 解耦,拆成多個獨立的小程式跑起來,在執行互補影響的情況下,還能把服務串起來。

2. 使用容器編排工具

一旦應用程式被容器化,需要使用容器編排工具來管理它們。容器編排工具可以幫助在叢集中部署和管理容器,例如 Kubernetes 和 Docker Swarm。

3. 利用雲原生服務

大多數雲提供商都提供了一些雲原生服務,用於簡化開發和部署雲原生應用程式。例如,Elastic Kubernetes Service(EKS)、Kubernetes Engine 等。

4. 實踐 DevOps

DevOps 實踐是雲原生開發的重要組成部分。透過實踐 DevOps,可以實現持續整合和持續交付,並透過自動化測試和部署來提高應用程式的質量和可靠性。

5. 遵循雲原生實踐

最後,應該遵循雲原生的實踐來確保應用程式在雲環境中執行良好。這包括使用微服務架構來提高可擴充套件性和可靠性,使用容器映象來確保應用程式的一致性,以及減少應用程式的依賴性。


技術的趨勢和影響

軟體設計有兩個關鍵目標: 高內聚、低耦合,圍繞這2個核心目標,又提出了單一職責、開閉原則、里氏替換、依賴導致、介面隔離、最少知識等設計原則。

軟體工程師一直都在為這兩個目標而努力奮鬥,以求把軟體編寫得更加清晰、更加健壯、更加易於擴充套件和維護。

但後來,人們發現有更多的訴求,希望開發軟體變得更簡單、更快捷,程式設計師希望更少編寫程式碼,非專業人員也希望能開發程式,於是,更多的更傻瓜的程式語言被發明出來,更多的程式設計技術和程式設計思想被發明出來,比如庫、元件、雲基礎設施。

於是很多技術變成了屠龍之技,比如彙編,時代變了,建國後動物不能成精了,沒有龍可以宰了,然後很多軟體工程師搖身一變成了調參工程師、Call API磚家、用庫包能手、拼元件達人,這是效率分工的結果,也是技術發展的使然。

縱觀近二十年的科技網際網路發展歷程, 大的趨勢是技術下沉,特別是近些年,隨著雲端計算的發展和普及,基礎設施越來越厚實,業務開發變得越來越容易,也越來越沒有技術含量,而之前困擾小團隊的效能、負載、安全性、擴充套件性問題都不復存在,這不禁讓網際網路行業的油膩大叔們噤若寒蟬,彷彿分分鐘就要被捲入歷史洪流而萬劫不復。

雖然不可否認技術的重要性在降低,但也還不至於那麼悲觀。遙想PC時代,當VB、Delphi、MFC出現的時候,也有類似論調,所見即所得,點點滑鼠,就可以開發PC桌面程式,是不是很高階?那時候碼農的擔心相比現在恐怕是隻多不少吧,但後來隨著網際網路興起,出現了後端開發這個工種,碼農很快找到了新的戰場,網路、分散式、資料庫、海量服務、容災防錯,於是又玩出一堆新花樣。

如果說PC時代的基礎設施是控制元件庫,網際網路時代的基礎實施是雲,那AI時代基礎設施是什麼?又會有什麼高階玩法?




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024933/viewspace-2938726/,如需轉載,請註明出處,否則將追究法律責任。

相關文章