專欄文章

隨著應用程式容器化趨勢 AWS 協助您將容器上雲

隨著應用程式容器化趨勢 AWS 協助您將容器上雲

傳統的應用程式架構,一個軟體要從某個環境移植到另一個運算環境上執行,會遭遇許多困難。例如,當底層支援的軟體環境不同時,就可能帶來許多挑戰,像是硬體或套件不相容的問題。為了克服傳統龐大架構、緊密相依性的問題,企業開始將焦點轉移至容器化的技術。

什麼是容器化技術呢?

容器是一個軟體單元,是一個輕量級的、獨立的、可執行的軟體包,容器映像檔打包了應用程式在各種不同環境順利執行的必要元素,包括:程式碼、執行環境、系統工具、系統程式庫、軟體相依性等,以便應用程式從一個運算環境快速可靠地運行到另一個運算環境。

容器已經將所有必要的元素包裝在一起,解決了底層作業系統差異性的問題。不管是在自己電腦、公司電腦、在雲上、或跨雲環境開發的應用程式,不必去管伺服器的相容性,只要在伺服器上裝載相容的 Container Engine 就可以快速運行各個容器。而容器跟容器之間是隔離的,解決了傳統應用程式緊密的相依性,也因為相互隔離的特性,提高了容錯性,可以針對單個容器進行修復,不易因為單個功能錯誤導致整個應用程式中斷。

說到容器化,另一個常常拿來跟容器做比較的虛擬化技術–虛擬機,兩者之間最大的差異是映像檔大小,容器映像檔僅包含了所需的輕量的作業系統映像,所以相較虛擬機映像檔需要包含完整的作業系統映像檔來說,容器映像檔更為輕量,也因此執行容器相較於執行虛擬機更為快速。

綜合容器的多種優勢,來說說如何在 AWS 上實現容器化的技術。

AWS 有以下支援容器技術的服務:

◆ Amazon Elastic Container Service, Amazon ECS
是一個全託管的容器協調運作服務,可以讓您在雲上容易的執行、停止、管理容器應用程式。支援 Docker 容器軟體。為什麼需要使用到 ECS 這樣的容器託管服務呢?當今天只有幾個容器運行在幾台主機上,單純開一台虛擬機上去執行容器,或許管理上不是太複雜的問題,但當容器應用程式持續擴增時,對於容器的調度、擴充、更新等會是很繁瑣的工作,這時使用 ECS 這樣的容器託管服務就可以節省許多維運的事項。只要在 Amazon ECS 任務定義指定要啟動容器的映像檔,即可輕鬆啟動容器應用程式。部署環境亦可以選擇 AWS 提供的 Serverless 運算服務 Fargate。

另外值得一提的是,在 AWS 2020 re:Invent 發表的延伸功能-Amazon ECS Anywhere,當使用 ECS 這項託管容器服務,除了可以使用 Amazon EC2 以及 Fargate 兩種運算資源外,現在甚至可以選擇非 AWS 所提供的運算環境,讓客戶可以在任何地方執行容器,同時使用相同的 AWS 工具和功能來管理。

◆Amazon Elastic Kubernetes Service, Amazon EKS
是一個可在 AWS上執行 Kubernetes 的託管服務,提供了可擴展、高度可用的控制平面,不需安裝、操作和維護您自己的 Kubernetes 控制平面或節點,包括 etcd 和 Kubernetes API server 等組件皆由 AWS 管理,AWS 會自動替換任何運行狀況不佳的節點以保持高可用性,處理所有升級和修補,簡化構建、保護、操作和維護 K8s Cluster 的過程。

而 EKS 的數據平面有三個選項,一個是自管節點,可以手動配置來創建節點,意旨自行啟動 EC2 虛擬機,並註冊至 Kubernetes 控制平面。另外可以選擇 EKS 管理的節點組,相較於自管節點,EKS 會自動創建和更新數據平面節點,用戶只需要透過 AWS 主控台介面上的按鍵即可添加新節點並更新 OS 或版本。最後一個選項是執行容器的 Serverless 運算服務 – Fargate,當 Kubernetes 控制平面創建新的 Pod 時,他們將作為容器在 Fargate 中運行,無須任何 Kubernetes 節點創建和配置。


而 EKS 跟 ECS 一樣在 2020 re:Invent 也推出了 Amazon EKS Anywhere,跟 ECS Anywhere 相似,多了一種部署選擇,允許客戶在本地創建和操作 Kubernetes 集群,Amazon EKS Anywhere 可協助簡化內部部署 Kubernetes 叢集的建立和操作,可以利用 EKS 主控台,透過 EKS Connector 檢視在任何位置執行的所有  Kubernetes 叢集。

◆ Amazon Elastic Container Registry
安全、可擴展和可靠的 AWS 託管容器映像儲存庫服務,並使用 AWS IAM 支援具有資源權限的私有容器映像存儲庫,指定的用戶或 Amazon EC2 instance 即可存取您的容器存儲庫和圖像。

◆ Amazon Fargate
在介紹 ECS 以及 EKS 時一直提到的 AWS 提供的無伺服器運算引擎,可以輕易的部署與管理容器,簡單來說 Fargate 是一種部署容器的簡單方法,像是 EC2 一樣,只是他提供的是容器運算而不是虛擬機器。選擇 Fargate 作為容器部署的運算引擎時,相較於選擇 EC2,可以更專注於容器的管理,不需考慮底層運算資源分配、維護以及更新等事項。

為什麼要使用 AWS 的容器服務?

綜合以上 AWS 基於容器技術的相關服務,託管服務協助我們能夠容易做到容器調節,結合雲上的優勢,整合權限管理服務 IAM 為各項服務定義權限,亦可以無縫的整合監控服務 CloudWatch 以及管理容器自動擴展以及底層資源的擴展,確保有足夠的運算資源,能自動進行 Health Check,做到自動替換運作狀態不佳的容器,確保您所需數量的容器來支援應用程式的運作,且支援使用排成器的服務 EventBridge,可以設定在指定的時間執行一或多個任務。亦提供多種部署環境的選項,有自管的虛擬機 EC2、託管及 Serverless 的容器運算服務 Fargate,甚至可以部署在本地端,允許您彈性的調節容器部屬的環境及位置。協助您減少管理、維運的多重事務,讓您可以更專注在應用程式的部署。

身為企業的雲端數位長,擁有多年雲端產業經驗的銓鍇國際 CKmates 協助您的企業遷移上雲,運用最新的容器化技術,快速部署您的應用程式和運算環境,執行資源分配和維護更新,提升企業營運效率和優化人力資源運用。

最新文章

加入 Line 好友 加入 Line 好友 歡迎來聊聊 寄信給我們 訂閱電子報
joinline