最近有朋友問我:“為啥你寫的東西我都看不懂,也不是我平時用的。”我不禁啞口無言。就像今天要說的雲端計算,其實已經覆蓋了日常生活的不少場景,像檢票一類的人臉識別,智慧城市的紅綠燈等等,都是雲端計算應用的產物。這次把雲端計算、容器、容器雲三者放到一起來說,因為這三個現在非常非常的火,它們之間互有關聯,一般談雲端計算時也會提到容器,提到容器就更無可避免的提到容器雲。接下來就先從雲端計算開始說起。
從雲端計算到容器
雲端計算是一種基於網際網路的計算方式,通過這種方式,共享的軟硬體資源和資訊可以按需求提供給計算機各種終端和其他裝置。一般的雲端計算架構涵蓋三層服務:IaaS、PaaS 和 SaaS。
IaaS(基礎設施即服務),主要包括計算機伺服器、通訊裝置、儲存裝置等為使用者提供計算、儲存、網路等基礎設施服務。比如大家耳熟能詳的 AWS、阿里雲、騰訊雲等,以及又拍雲提供的 CDN、雲端儲存、雲安全等服務。
PaaS(平臺即服務),簡單理解就是提供類似作業系統(涵蓋資料庫、日誌、監控等服務)和開發工具的功能。
SaaS(軟體即服務),通過網際網路提供軟體服務的應用,使用者不用搭建環境,只需要付費就可以享受的雲服務。這類服務大家接觸到比較多,比如 Google Docs、石墨文件、上直播、億方雲,以及又拍雲的 WebP 自適應、窄帶高清等多媒體雲處理服務。
總的來說,雲端計算是一種基於網際網路的計算方式,通過這種方式,共享的軟硬體資源和資訊可以按需求提供給計算機各種終端和其他裝置。簡而言之,雲端計算是網路資源配置的一種方式。
隨著雲端計算的發展,計算機技術也跟著推陳出新,應用的規模愈發龐大,邏輯愈發複雜,迭代更新愈發頻繁,應用開發所需的統一規範和原有開發模式雜亂無章成立追求進步的主要障礙。
IaaS 的彈性計算價效比低,資源利用率低,需要考慮特定場景,PaaS 則可以利用容器技術,不依賴虛擬機器、維護成本低另外具有高可擴充套件性。但無論 IaaS 或者 PaaS 在資源利用率、應用架構選擇、支援的軟體環境方面都有一定的侷限性,而容器技術的發展彌補了 IaaS 以及 PaaS 的不足。
談談容器技術
說到容器技術,就不得不提一下 DevOps。DevOps(Development 和 Operations 的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程式/軟體工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。其理念和方法已經為許多團隊所採納。
2014 年 11 月,Docker 作為有潛在趨勢的容器技術進入了 DevOps 的世界。它通過簡單的包裝和應用程式運輸加快了持續部署的能力,進而得到了普及。Docker 作為一項開源工具,可以將應用程式及其依賴(如配置檔案等)打包到容器中,就可以在任何 Linux 伺服器上執行該容器,而不會出現任何相容性問題。
容器化是一個相當古老的概念,但 Docker 帶來了一些全新的東西。
- Docker 旨在整合大多數最近時期常用的 DevOps 工具,如 Puppet,Ansible,Jenkins等。
- 有了 Docker ,開發人員可以輕鬆地將其生產環境複製為可立即執行的容器應用程式,讓工作更有效率。
- Docker 允許應用程式在膝上型電腦,內部伺服器,公共雲或私有云等上執行,從而實現靈活性和可移植性。管理和部署應用程式要容易得多。
- Docker 實現了一個高階 API ,以提供單獨執行程式的輕量級容器。
如今,Docker 的主要使用者是開發人員和系統管理員,應用於DevOps 相關聯的構建和執行分散式應用程式。
為什麼現在 Docker 那麼火,它究竟有哪些優點?
- Docker 輕量級,容器可以秒級啟動;
- Docker 對系統資源的使用率很高;
- Docker 容器的執行不需要額外的虛擬化支援,它是核心層級的虛擬化,因此可以實作更高的效能和效率;
- Docker 幾乎可以在任意平臺上執行,包括實體機、公有云或者個人電腦;
- Docker 管理簡單,只需要小小更改,就可以替代以往大量的更新工作。
Docker 的應用場景主要涵蓋以下幾種:
- Web 應用的自動化打包和釋出;
- 快速搭建開發和執行環境,並且該環境可以直接傳遞給測試和產品部署;
- 自動化測試和持續整合、釋出;
- 在服務型環境中部署和調整資料庫或其他的後臺應用。
從容器技術到容器雲
Docker 只是開啟網際網路新世界的一把鑰匙,對於企業或者個人複雜的專案來說,面臨的問題更多:
- 應用迭代緩慢,業務交付經常推遲;
- 傳統的單體架構應用難以維護和擴充套件;
- 隨著應用的使用,運維管理變得越來越複雜;
- 開發需求變化,開發或測試人員不遵守流程等。
在此背景下容器雲的出現,成為解決這些複雜場景專案的救星。容器雲其實是按照容器為資源分割,封裝整個軟體執行時環境,為開發者和系統管理員提供用於構建,釋出和執行分散式應用的平臺。當容器雲專注於資源共享與隔離、容器編排與部署,它更接近 IaaS 的概念;當容器雲滲透到應用支撐與執行時環境時,它更接近於 PaaS。
在很多企業中,應用程式釋出是一項涉及多個團隊、壓力很大、風險很高的活動。然而在具備 DevOps 能力的組織中,應用程式釋出的風險很低。因為與傳統的瀑布式開發模型相比,迭代式開發更加便捷。
我們假設一種場景,部署在物理機上的業務突然出現問題,該如何應對?普通客戶是更換物理機裝置,部署環境,然後再部署業務,作為一個嫻熟的老司機,至少也需要耗費 1 小時 以上。之前又拍雲容器雲的一個客戶就遇到了類似的情況。客戶同時在容器雲和物理機上在跑業務,容器雲上執行的業務大概有十幾個,一次遇到了物理機故障的情況,如果把原有業務遷移到物理機上,需要短時間內尋找替代裝置、設定生產環境,難度頗高;此時的解決方案是把物理機的流量切換到容器雲,不到10秒的時間就完成了業務切換,避免了故障導致的業務中斷,容器雲的好處顯而易見。
由此可見,容器云為開發者進行構建釋出應用的平臺,使得企業交付整合能力更強。
瞭解更多關於容器雲:
五分鐘讀懂什麼是容器雲