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