顯示具有 Cloud Computing 標籤的文章。 顯示所有文章
顯示具有 Cloud Computing 標籤的文章。 顯示所有文章

星期四, 6月 22, 2023

【觀念整理】雲端運算的概念與企業的雲轉型第二階段

 


回顧前一次的文章,當你把應用程式部署到公有雲或是容器化平台後,就代表你完成雲運算應用系統的建置了嗎?基本上,這應該是我們開始踏上雲端旅程的起點。在我們順利將應用程式移轉到容器化平台之後,我們可以透過下列指標,來檢驗我們是否能得到雲原生應用程式的好處。


(1)  你是否可以因應不同的需求量任意地配置雲平台的資源以滿足應用上的需求


這個衡量的指標,說明的是我們的應用程式是否可以動態地擴充,這時我們就會檢視應用程式是否具備《狀態性》。

 

無狀態(Stateless):表示應用程式並未採用記憶體和硬碟來儲存狀態和日誌,因此可以將應用部署到一個全新的環境中。

 

有狀態 (Stateful):表示應用狀態將依賴於本地的運行環境,因此無法將應用隨意部署到其他環境,不能隨意的擴展。

 

所以,假設你檢查之後應用程式屬於《有狀態》的服務,那麼我們就必須調整應用程式的架構,讓他不依賴於本地運行環境來決定其狀態。方法不外乎就是將需要留存於本地的資訊,移轉到第三方的儲存體,例如:資料庫或是 Redis 等相關的中介軟體。藉此,讓應用程式滿足無狀態可任意擴展的狀態。

 

(2)  應用程式本身是否具備多租戶的能力

 

多租戶(multi-tenancy)是指一個系統或應用程式能夠支援多個不同的租戶或使用者,每個租戶或使用者可以獨立地設定和管理自己的資源、數據和安全性,同時共享同一個系統或應用程式的基礎架構和資源。

 

在雲原生應用中,多租戶架構可以讓不同的企業、組織或客戶共享一個系統或應用程式,從而減少基礎架構的成本和管理負擔。這種架構還可以使系統更加靈活和可擴展,因為不同的租戶可以根據自己的需求和資源使用情況來分配和調整自己的資源。同時,多租戶架構也需要考慮如何保護每個租戶的數據和安全性,以確保系統的可靠性和穩定性。

 

(3)  雲原生應用程式具備自我恢復能力 (容錯能力)

 

雲原生自我修復是指雲原生應用在運行過程中,能夠自動偵測和解決可能的錯誤和故障,並恢復到正常運行狀態的能力。這種能力通過自動化的監控、分析和回應機制實現,可以大幅降低系統管理和維護的負擔,同時提高系統的可用性和可靠性。

 

雲原生自我修復能力主要包括以下幾個方面:

 

1.     自動監控和偵測:系統能夠自動收集和分析數據,並及時偵測和識別可能的錯誤和故障。

2.     自動回應和處理:系統能夠根據預設的規則和策略,自動回應和處理錯誤和故障,例如重啟應用程式、調整資源分配等。

3.     自動恢復和重建:系統能夠在發生災難性錯誤或故障時,自動恢復和重建數據和應用程式,以保護系統的可用性和穩定性。

 

通過這些能力,雲原生自我修復可以使系統更加穩定和可靠,同時減少系統管理和維護的工作量和成本。

 

(4)  雲原生應用程式具備《自動化部署》能力

 

雲原生自動化部署機制指的是利用自動化技術和相關工具,將應用程序及其相關的基礎設施、服務等自動化部署到雲原生環境中的過程。這種部署方式通常會涉及使用容器、叢集管理工具、自動化配置管理工具等技術,以實現應用程序和基礎設施的自動化部署、擴展和管理。透過這種自動化部署機制,可以大幅降低部署時間和成本,提高應用程序的可靠性和可擴展性,同時還能夠更容易地應對變化和挑戰。

 

(5)  針對雲原生應用應該具備的應用程式管理能力

 

1.     自動化管理:雲原生應用程式需要支援自動化管理,包括自動化部署、擴展、維護和修復等功能,進而提高系統的可靠性和可用性。

2.     監控管理:對雲原生應用程式的監控需要全面、深入,包括監控應用程序的運行狀態、資源利用率、性能指標等,從而能夠及時發現和解決問題。

3.     安全管理:在雲原生應用程式中,需要結合容器和微服務的特性,強化對應用程式的安全管理,包括控制訪問權限、防範安全漏洞和保護數據等。

4.     統一管理:需要具備統一管理的能力,包括統一管理應用程序、數據和基礎設施,從而可以實現更高效、更一致的管理。

5.     故障管理:對雲原生應用程式的故障需要有快速反應和修復的能力,需要支持故障自動檢測、自動修復等功能。

6.     優化管理:需要支持優化管理,包括自動優化資源利用率、自動調整運行環境等,從而能夠更好地滿足不斷變化的需求和挑戰。

 

(6)  雲原生應用程式必須具備《隨處可行》(任意部署的能力)

 

雲原生應用的任意部署能力指的是應用程式可以在任何基礎架構上運行,並且可以自由地部署到任何雲端環境中,而不受特定的基礎架構或雲端平台的限制。這種能力是雲原生應用程式的一個關鍵特性,可以大大提高應用程式的靈活性和可攜性,從而能夠更好地應對不斷變化的需求和挑戰。

 

具有任意部署能力的雲原生應用程式通常是基於容器化技術來實現的,這使得應用程式可以在不同的基礎架構上運行,而不需要進行重寫或重新配置。同時,透過容器化,可以實現應用程式的快速部署、擴展和管理,從而提高系統的靈活性和可擴展性。

 

在實際應用中,具有任意部署能力的雲原生應用程式還需要考慮與不同雲端平台和基礎架構的兼容性,以確保應用程式能夠在不同的環境中順利運行。

 

雲原生的技術賦予現今的開發人員得以將應用程式建置並執行於任何現代化的雲平台之上,例如:公有雲、私有雲及混合雲等。容器化技術、服務網格 (Service meshes)、微服務以及 Web API 等就是雲原生技術的範例,這些機制將使得鬆散耦合的系統具備彈性、可管理性與可觀察性。結合強大完善的自動化工具,使得開發人員得以頻繁地修改應用程式,縮短交付的週期。


透過上述的六個評估指標,可以協助我們判斷目前我們的處境,也可以針對這些狀況來思考相對的改進措施或是要導入的工具。還有一個指標是我沒放在上面的,叫做雲原生應用程式是分散式系統,其實他指的就是用微服務來實踐可能是一個好的概念。不過,這進一步又牽扯到服務的拆解等相關議題,就先不列在這個早期的階段。畢竟應用程式好好的,也可以應付複雜的需求,所以先不要把事情搞複雜了,維持簡單是一件好事。

 


星期六, 1月 14, 2023

淺談雲端運算的私有雲、公有雲及混合雲


 

這兩三年來受到 Covid-19 的影響,我所處的行業《資訊業》的業務蓬勃的發展,創造了許多數位轉型與零接觸經濟的商機。也因為這些商機的興起,讓很多業主越來越重視雲端運算這個領域,越來越多的應用程式被部署到雲上面 (目前大家的共識應該是把應用搬到 Kubernetes 上,就是所謂的移轉到雲平台)

 

我自己比較長面對金融領域,在嚴格的監管下,金融業也逐漸地往雲端運算領域發展,近期新的應用需要部署在雲上,既有的應用也需要移轉到雲上,逐漸地成為一種風潮或是必然的走向。然而,雲端服務跟目前大家認知的《共識》,應該又有點不同。Kubernetes 是基於發展到現狀的一種最佳實務,但在過去這個概念發展時,其實有不同實作的技術與發展面向。

 

雲端運算最早提出的概念,依據維基百科裡面記載應該是昇陽電腦的網路是電腦 (The Network is computer)。然後隨者技術發展,一些虛擬化技術逐漸成熟,例如:VMWare ESXiMicrosoft Hyper-V 等,協助大家建立自己的虛擬化私有雲平台。虛擬化共用了硬體的運算資源使得這些硬體的使用效率得以最大化,或許我們可以把這個稱為第一代的雲端運算。

 

而這些虛擬化技術發展出來的目的主要就是要可以讓運算資源被妥善的運用,以應付日漸複雜的運算需求。在2006 年時, Amazon EC2 (Amazon Elastic Compute Cloud) 的服務出現了。該服務是由亞馬遜公司提供的Web服務,是一個讓使用者可以租用雲端電腦運行所需應用的系統。EC2藉由提供Web服務的方式讓使用者可以彈性地運行自己的Amazon機器映像檔,使用者將可以在這個虛擬機器上運行任何自己想要的軟體或應用程式。這時候,AWS 使用的是 KVM  Xen 的虛擬化技術,在這時候開啟了雲端運算發展的時代,包含GoogleIBM 等相繼投入資源協助雲端運算領域的發展。私有雲與公有雲行成兩個不同發展面向的概念。

 

然後,隨著技術的發展,在 2013 年附近,容器化 (Container)的技術概念開始興起,它是一種比起 VM (虛擬化機器)更輕量化的虛擬化軟體套件。隨著容器化技術開始被廣泛地採用後,如何管理這些容器就成為新的議題。因此,Google 釋出內部叢集管理系統 Borg 來協助大家管理這些容器,也就成為目前大家所熟悉的Kubernetes

 

那麼基於這些技術的發展,我們再來討論一下《私有雲》跟《公有雲》這兩個議題。在過去很多企業,因為對於雲端運算的需求,又有資訊安全上的考量,所以比較傾向建立自己的私有雲平台。依據先前的歷史來看,在建立雲端運算的技術隨者時間不斷地在改善與演進。建立屬於自己的雲平台,需要相當的技術能量 (這裡是指,你可能從 VM 的時期自建機房,然後再移轉到容器化,再使用 Kubernetes 來管理這些容器等,然後你還要有足夠的維運人員追上這些新的技術,不斷地優化自己的雲平台)

 

【私有雲】

基本上,這件事情並不容易,所以有許多的廠商開始釋出一些協助企業建置雲平台的軟體,來降低這個進入門檻。例如:RedHat OpenShiftVMWare TanzuHP HPEAzure Stack  Google Anthos  (這些事目前工作上有遭遇過的幾個平台)。這些廠商,有的是從私有雲發展,看著目前技術的趨勢,提供一些套裝工具,協助企業建立屬於自己的私有雲 (Red Hat, VMWare),有些則是原本就在公有雲發展的網際網路公司(GoogleAzure  AWS ),將其相關技術提出落地化版本,讓企業可以在自己的環境裡架設屬於自己的私有雲。

 

這裡面比較特別的,我自己認為就屬AWS 跟阿里雲,他們是為了解決自己銷售的問題,建立了自己的資料中心,形成雲服務後,再對外開放給其他人來使用這些服務。這是屬於自己建立私有雲較為成功的案例。

 

其實,私有雲的公司也不只上述的這些,過去在 Linux 界相當有名的 SUSE 也有自己的雲平台來協助客戶,只是我們自己有沒有去接觸到。因此,當我們要建置私有雲的時候,這些軟體就是協助我們完成任務的平台及工具。應該很少企業可以像 AWS 及阿里巴巴一樣投資大量的技術人力與設備資產,建立屬於自己的雲平台。

 

【公有雲】

在公有雲來說,可能大家比較常聽到的就是 AWSGoogle Azure 吧,除此之外可能還是有其他公有雲平台,例如:阿里雲。至少,在幾個雲端大會的場合應該是有碰過的。相對於私有雲來說,公有雲的發展是比較快速的,因此在許多時候針對公有雲的技術評估總是遠遠優於私有雲,因為一些較先進的設備或是技術都會在公有雲上先實現。

 

除了先前講述的 AWS 跟阿里巴巴這種從私有雲建置成功進一步轉變成網路服務提供商之外,大部分是由像Google  Microsoft 這種原本的技術公司提供的服務。公有雲的服務主要強調就是低門檻,並且有 IaaS (Infrastructure as a Service)PaaS (Platform as a Service) SaaS(Software as a Service)等應用場景,這些在中友雲上都像自來水一樣你只要打開就可以使用 (過去你可能需要數小時、數天到數個月甚至數年來建置這些服務)。因此,這個模式相當適合新創或是要嘗試一些新的商業模式而不打算投入那麼龐大的系統建置費用時可以考慮的解決方案。

 

這可能也是未來發展的趨勢,畢竟目前 IT 人才尋找不易,而這些基礎建設建置成本又高,所以好好當個服務的使用者,是一個不錯的選項。公有雲就是未來的基礎建設,每個人都可以隨開即用,但不需要自己建置這些系統,就像目前水電就屬於基礎的系統,但很少人需要建立自己的配水與配電系統。

 

【混合雲】

另外,我們也思考一下,在建置私有雲的時候大家評估的重點是什麼?建置雲平台可以使運算效能的利用率提高,更有效的利用運算資源完成更多的事物。在這個場景下,我們通常是針對應用系統平常的表現來做系統規劃,因此建置出來的容量通常是面對既有業務的平均使用狀況來預估,在面對突然的大量服務時很難運用到雲端運算可以自動擴容的特性。因此,為了成本跟經濟效應的考量,進一步可能需要思考《混合雲》的問題。私有雲的技術對於企業是屬於如何提高利用率的部分,而公有雲則成為當業務機會來臨時,可以快速拓展服務節點的技術。

 

因此,大部分的私有雲建置,最終都需要考慮一下形成混合雲(甚至可能有些法規會規定使用的情境)的狀態,以便面對各種不同的商業環境,基於這些因素,應該可以讓我們更好的去評估自己雲平台的發展模式,這些雲平台應該具備哪些特性,可以讓我們未來在技術上較容易增長。

 

【參考資料】

1.     Amazon EC2

2.     KVM

3.     Xen

4.     Red Hat OpenShift

5.     VMWare Tanzu

6.     Alibaba Cloud

7.     Azure Stack HCI

8.     AWS Outposts

9.   HP HPE