混合云100問「開發篇」:實現從“容”上云,敏捷開發
問:混合云生態應該具備哪些組成部分?
答:既然是混合云生態,其中必然要有公有云玩家,也要有私有云玩家,以及能夠提供跨平臺管理工具的服務商。以產品形態來劃分,一般來說混合云生態包括開源和閉源(商用)兩類生態,前者的定制化能力和性價比較高,后者的穩定性和可管理性較高。以生態合作模式來劃分,其中會涉及開發者、產品集成商、銷售以及服務商等角色。
在云計算的大環境下,可以說沒有一個云服務提供商可以脫離生態而存在,因此,打造或者融入一個云生態成為必然之舉。比如,為了在由云驅動的市場中獲得更大競爭力,近幾年來在云生態建設方面也投入了不少精力。在今年的IBM Think大會上,IBM公布了升級后的PartnerWorld業務合作伙伴計劃,支持合作伙伴以一種或多種靈活參與的方式通過IBM云進行應用開發、代碼開發、知識產權整合或提供其他服務。除此之外,新版PartnerWorld計劃也包括幫助企業實施混合多云戰略——一方面,不斷優化IBM云的系統產品組合,包括使用Red Hat和IBM Cloud Pak解決方案;另一方面,IBM合作伙伴的客戶也可以借此提升自己的IT敏捷性,并將部署在IBM Z、Power和存儲系統上的各種關鍵應用連接起來。
問:如何更快地構建云原生應用?
答:企業構建云原生應用的目標是以自身需要的速度滿足業務對應用的開發需求,提高業務響應速度、增加靈活性、改善質量并降低風險。但是,云原生應用的構建涉及文化、流程和技術的根本性轉變,而由于成本和人員等方面的限制,大多數企業無法完全重建 IT 基礎或無縫實施新的工作方法,使得這個過程漫長且低效。
對此,IBM Cloud Pak for Applications采用了一種更快、更安全的方式,基于紅帽OpenShift容器平臺,通過容器和微服務的通用模型,可以幫助企業快速構建云原生架構,并將業務應用遷移到任何云端。并且,只需一次構建,便可以隨處部署和運行。以此,不僅可以加快企業構建云原生應用,推動業務創新和響應速度,同時,還保護了企業原有投資,大大降低了成本投入。
問:有哪些技術能夠提高企業上云后的開發效率和靈活性?
答:企業上云的根本動力就是為了提高應用的開發效率、靈活性,它允許企業通過自助服務和按需資源配置、自動執行從開發到生產的應用生命周期,從而提升應用的可擴展性和可用性。但是要充分發揮這些優勢,還需要企業改變原來的開發和運維方式,比如:采用新的開發形式,引入DevOps的開發和協作流程;采用模塊化程度更高的架構,引入微服務架構和容器技術;甚至是采用自動化、人工智能等技術,實現IT自動化,加快應用交付。
問:容器是什么,為什么要用它?
答:容器是一個標準化的軟件單元,它將代碼及其所有依賴關系打包,以便應用程序從一個計算環境可靠快速地運行到另一個計算環境。通過將應用程序本身和其依賴容器化,操作系統發行版本和其他基礎環境造成的差異都被抽象掉了,大大方便了軟件的部署和運維工作,從而在軟件開發和云計算平臺之間建立了橋梁。
和虛擬機相比,容器可與其他容器共享操作系統內核,每個容器在用戶空間中作為獨立進程運行。容器占用的空間比虛擬機少(容器映像的大小通常為幾十MB),啟動速度也更快,同樣的資源可以處理更多的應用程序。
Docker是一個開源的容器引擎,Docker的整個生命周期有三部分組成:鏡像(image)+容器(container)+倉庫(repository)。Docker容器類似于一個輕量級的沙箱子,Docker利用容器來運行和隔離應用。Docker容器可以讓開發者打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的 Linux或Windows 機器上,也可以實現虛擬化。
問:容器云和傳統的虛擬機云有什么區別?
答:虛擬機和容器兩種技術分別代表了創建運行應用的虛擬資源的兩種不同方法。使用虛擬機就是由一個特殊的軟件系統(系統管理程序)在操作系統(OS)層次對服務器進行分區并創建只共享硬件的真正“虛擬機”。而使用容器技術,虛擬化發生在操作系統層次,所以就是共享操作系統以及一些可能的中間件。
就功能方面而言,虛擬機更加地靈活,因為應用運行的“客戶”環境類似于裸機服務器。用戶可以選擇他們自己的操作系統和中間件,而無需考慮同一臺服務器上其他虛擬機所使用的操作系統和中間件。但如果是使用容器技術,那么用戶在選擇應用程序時需要確定一個通用的操作系統和中間件元素,因為每一個容器都在使用核心服務器平臺并將其與其他容器共享。
對于那些使用各種軟件平臺來運行他們應用的企業用戶來說,容器技術可能更難以使用,因為它要求對單個主機平臺上進行標準化的工作。即便當所有應用程序都在一個單一的操作系統上運行時,用戶也可能需要協調每個應用程序來使用一些或所有中間件工具的單一版本——如果軟件是依賴于特定版本的,那么這一點是很難做到的。
另一方面,容器資源開銷是較少的,因為它們沒有為每一個部署的應用程序或組件重復分配平臺軟件。這種較低的資源開銷可讓容器技術在每臺服務器上運行更多的組件。此外,應用或組件的部署與重新部署都要快于容器。因為容器往往是通過諸如Docker這類管理平臺進行部署的,通常基于容器的云也比基于虛擬機的云更具有可操作性,而相關管理工具也更加多樣化。
問:技術人員有限,想用容器這么復雜的技術怎么辦?
答:無論是Dokcer還是Kubernetes都是從開源社區成長起來的,因此,容器技術往往帶有很多開源軟件的特征,它們是社區驅動的、基于開放標準的開源技術,雖然能支持企業快速創新,但產品化程度較低、易用性差。因此,對傳統企業而言,要大規模全方位地落地容器技術,門檻相對高很多。要簡化其中的復雜度,可以直接使用技術供應商提供的成熟軟件產品,如此一來,就可以降低對人員對技術要求,并且,由技術供應商負責完成復雜的編排、管理、運維等工作,從中釋放的人力還可以專注投入于業務創新。
問:什么微服務(Micro services)?
答:微服務(Micro services)是一種架構風格,或者說一種理念。微服務承襲了模塊化的理念,把一個大的應用系統按業務功能分解成多個職責單一的小系統,并利用簡單的方法使多個小系統相互協作,組合成一個大系統。微服務架構中每個微服務都是一個零件,各個微服務可被獨立部署,各個微服務之間是松耦合的,每個微服務僅關注于完成一件任務并很好地完成該任務。這些微服務通過底層的Services Mesh進行通信,相互協同完成任務。
問:容器、微服務與混合云如何協作?
答:微服務是一些功能單一的服務,只能通用接口進行通信,非常適合容器。應該說,正是微服務加容器的方式帶來了應用程序交付方式的轉變,通過模塊化服務可以重復使用并重新連接來實現新的任務。比如,消息傳遞、App開發和支持的服務化和容器化,讓開發人員可以方便快速開發新的應用程序,而且這種應用程序可以根據規則和流程進行調度,在混合環境中進行部署,從而可以大幅提高效率和提高業務的靈活性。
問:虛擬機和容器是否能統一調度和管理?
答:答案是肯定的。過去的容器平臺(如OpenShift)主要面向容器平臺,以容器為中心,然而在現實中大多數企業還有虛擬機負載,不少企業中虛擬機甚至是主流的運行環境——可能由于是傳統的應用,或者出于安全和隔離等原因,這些應用部署在虛擬機上。兩套不同的平臺同時運行但并沒有集成,提高了管理成本,也不利于資源的統一調度,統一管理成為不少企業的現實需求。
面對市場需求,不管是虛擬化平臺還是容器平臺都在設法提供對對方的調度和管理。比如,紅帽的OpenShift虛擬化源就在容器平臺(OpenShift)上集成了對虛擬機的管理。OpenShift源自KubeVirt開源項目,使企業能夠對由虛擬機、容器和無服務器功能構成的應用進行開發、部署和管理全部在Kubernetes平臺上實現。
問:Kubernetes是什么,它與混合云有什么關系?
答:Kubernetes (K8s)一個開源的容器編排引擎,可以完成集群管理、集群調度和集群編排等功能,它是開放式混合云的核心。Kubernetes最早是谷歌開發并開源出來,如今已成為針對應用程序的容器集群調度的事實標準,在行業中的地位日益鞏固。Kubernetes的流行是因為云原生應用程序需要保證資源足夠靈活,具有足夠的彈性,并且可能響應全球規模的負載,這需要像Kubernetes這樣的工具來擴展應用程序。實際上,此前容器編排引擎是Swarm、Mesos、K8s三分天下,更早些時候前兩者可能比K8s勢頭更猛,不過,因為技術的先進性,再加上Google公司的加持,K8s很快脫穎而出,成為事實標準。
問:如何改造或者開發新的業務系統來代替原業務功能?
答:要實現系統的敏捷部署、彈性擴展、動態遷移、故障自愈、數據更加安全可靠等,就需要系統在上云前做相應的改造或者開發新的業務系統來代替原業務功能,主要從以下方面考慮:
首先,新系統可以基于微服務框架,進行微服務改造,做到真正的云原生;其次,對于系統部署,除了傳統的物理機、虛機部署,還可以使用容器的部署方式,采用主流的PaaS平臺,基于kubernetes、mesos、swarm等主流框架,管理容器化的應用,實現開發、測試、運維的一體化管理,打通軟件研發管理全流程。
當然,除了基礎設施及業務系統,對于一些通用的基礎平臺,如大數據、區塊鏈、物聯網、人工智能都是上云的方向,并且是未來的主流方向之一,在這方面,企業不必重復建設復雜而又龐大的平臺,直接使用云上的相關應用和服務,能更好的為業務服務,開發更多的業務場景,提升資源使用效率,獲得更高的利潤。
問:什么是Serverless?
答:未來的應用應該是不依賴于底層的虛擬機,而是建立在一些Serverless的云服務之上。例如,開發一個應用,直接使用云上的負載均衡,調用云上的身份認證,使用云上應用市場的服務,就可以把數據存放在RDS中,然后用云監控進行故障分析,用服務治理進行相關的服務監控及調優,使用DevOps提升效率等等。這種云模型的使用,徹底拋棄了自行申請操作系統并安裝中間件數據庫的方式,也是應用上云的架構改變。
具體來說,Serverless架構主要包括BaaS(后端即服務Backend as a Service)和FaaS(函數即服務Functions as a Service)這兩種架構,它們沒有一直運行的定制服務存在,不占用服務商的計算資源。這和共享單車有些類似,是計算機分時租賃方式,按次按時計價。
Serverless主要的優勢是更低的運營成本、更簡化的設備運維,可以提高可維護性以及開發速度。缺點是目前還少有大型成功案例,無法適應所有的場景。
問:什么是DevOps?
答:DevOps是一種軟件開發方法,涉及軟件在整個開發生命周期中的持續開發、持續測試、持續集成、持續部署和持續監控。這些活動只能在DevOps中實現,而不是敏捷或瀑布, DevOps是在較短的開發周期內開發高質量軟件的首選方法,可以提高客戶滿意度。 DevOps最大的好處就是能持續部署與交付。對組織結構而言,DevOps是部門間溝通協作的一組流程和方法,有助于改善公司組織文化、提高員工的參與感。
問:OpenShift是什么?
答:Openshift是一個開源的容器云平臺,底層基于當前容器的事實標準編排系統Kubernetes和Docker引擎。OpenShift提供了開發語言、中間件、DevOps自動化流程工具等等豐富的工具和功能,是一個完整的基于容器的應用開發和運營平臺。企業可以基于此平臺搭建PaaS平臺,貫穿CI/CD流程,提高企業IT效率,擁抱DevOps和敏捷開發。紅帽公司是OpenShift的最大貢獻者。
問:Openshift社區版和企業版有什么不同?
答:紅帽OpenShift是紅帽公司推出的OpenShift發行版,是一個真正的企業Kubernetes平臺。相對于社區版,企業版的OpenShift更為穩定和安全,能更好地滿足企業級的需求。今年5月份的紅帽推出了OpenShift 4.4版本,基于Kubernetes 1.17開發,加入了以開發者為中心的平臺指標視圖和應用工作負載監控功能,針對紅帽Operators的監控集成,用于評估混合云特定應用使用資源和成本的成本管理功能以及其他功能。為了進一步消除傳統應用和云原生應用之間的障礙,紅帽還推出了更多全新功能,以實現在OpenShift上支持新的工作負載,并滿足客戶的所有需求。8月份,紅帽又升級了OpenShift,推出OpenShift 4.5,加入OpenShift虛擬化,實現了對虛擬機的統一納管,還引入了VMware vSphere部署的全棧自動化,可以在vSphere環境中“一鍵式”輕松部署紅帽OpenShift。
問:開放的混合云有哪些值得關注新興技術?
答:開放混合云基于開源技術Kubernetes實現,圍繞Kubernetes,有很多開源技術值得關注,包括Knative、Istio、KubeVirt和Kubeflow。這些技術未來在混合云很有可能發揮重要作用。
KubeVirt是一個基于Kubernetes的平臺,旨在提供Kubernetes原生API來實現無服務器計算的功能,或簡化應用程序和容器的部署;Istio是一個開源的服務網格(Services Mesh)框架,可為分布式微服務架構提供所需的基礎運行和管理要素。Istio 采用一種一致的方式來保護、連接和監控微服務,降低了管理微服務部署的復雜性;
KubeVirt是一個開源的項目,它讓Kubernetes具有管理虛擬機的能力,即通過Kubernetes同時管理容器和并排的虛擬機,以支持其混合云工作負載的本地部分;
Kubeflow是一個開源的基于 Kubernetes的機器學習工具包。Kubeflow的目標是簡化機器學習模型的規模并將其部署到Kubernetes運行的任何地方的生產環境。
問: OpenShift和混和云之間有什么關系?
答:Red Hat OpenShift Container Platform (OCP) 構 建于開源的 Kubernetes 編排技術之上。IBM 致力于提供專為這些現代化容器編排平臺和 Red Hat OpenShift Container Platform 量身設計的企業軟件。Cloud Pak 能夠利用 Helm Chart 與簡化配置和管理 的智能默認值,將經過全面測試的企業軟件容器映像 整合在一起。Cloud Pak 可在單一歸檔中納入來自可 信數據源的其他資產,比如操作器(它能夠在運行時 期間智能地管理軟件)。結果就是,您可以快速將軟 件加載到目錄中,并獲得簡單的部署體驗,并在默認 邏輯和幫助文本的指導下,輕松將生產就緒型企業軟 件部署到 IBM 的容器平臺上、云端或您自己的數據中心內。
問:用容器的方法上云,需要注意什么問題?
答:遷移到云并不意味著推翻一切,從頭構建。而是可以將傳統應用現代化,進而提高其靈活性和可擴展性。IBM Cloud Pak通過轉向容器和 K8s 實現快速交付新應用,遷移現有應用上云,保障安全,提高敏捷;Cloud Pak 提供:容器化 IBM 中間件和開源組件;為部署、生命周期管理和生產級別的服務質量增加 了一致的功能 — 記錄、監控、版本升級和回滾, 以及漏洞評估和測試;可在 Red Hat OpenShift 上運 行,提供全面的軟件堆棧支持以及 IBM 定期的 安全、合規和版本兼容性更新。以開放、更快、更安全的方式,將核心業務應用遷移到任何云端。
本文章選自《AI啟示錄》雜志,閱讀更多雜志內容,請掃描下方二維碼