目录
1.0 云平台
1.1.0 私有云、公有云、混合云
1.1.1 私有云
1.1.2 公有云
1.1.3 混合云
1.2 常见云管理平台
1.3 云管理的好处
1.3.1 多云的统一管理
1.3.2 跨云资源调度和编排需要
1.3.3 实现多云治理
1.3.4 多云的统一监控和运维
1.3.5 统一成本分析和优化
1.3.6 实现基于API构建跨云的应用
2.0 云原生
2.1 云计算历史回顾
2.2 什么云原生
2.3 理解云原生应用
2.3.1 云原生应该是什么样子的?
2.4 Service Mesh
1.0 云平台
1.1.0 私有云、公有云、混合云
1.1.1 私有云
私有云(Private Clouds)是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所。私有云极大的保障了安全问题,目前有些企业已经开始构建自己的私有云。
优点:提供了更高的安全性,因为单个公司是唯一可以访问它的指定实体。这也使组织更容易定制其资源以满足特定的IT要求。
缺点:安装成本很高。此外,企业仅限于合同中规定的云计算基础设施资源。私有云的高度安全性可能会使得从远程位置访问也变得很困难。
1.1.2 公有云
公有云通常指第三方提供商用户能够使使用的云,公有云一般可通过 Internet 使用,可能是免费或成本低廉的。这种云有许多实例,可在当今整个开放的公有网络中提供服务。公有云的最大意义是能够以低廉的价格,提供有吸引力的服务给最终用户,创造新的业务价值,公有云作为一个支撑平台,还能够整合上游的服务(如增值业务,广告)提供者和下游最终用户,打造新的价值链和生态系统。它使客户能够访问和共享基本的计算机基础设施,其中包括硬件、存储和带宽等资源。
优点:除了通过网络提供服务外,客户只需为他们使用的资源支付费用。此外,由于组织可以访问服务提供商的云计算基础设施,因此他们无需担心自己安装和维护的问题。
缺点:与安全有关。公共云通常不能满足许多安全法规遵从性要求,因为不同的服务器驻留在多个国家,并具有各种安全法规。而且,网络问题可能发生在在线流量峰值期间。虽然公共云模型通过提供按需付费的定价方式通常具有成本效益,但在移动大量数据时,其费用会迅速增加。
1.1.3 混合云
混合云是公有云和私有云两种服务方式的结合。由于安全和控制原因,并非所有的企业信息都能放置在公有云上,这样大部分已经应用云计算的企业将会使用混合云模式。很多将选择同时使用公有云和私有云,有一些也会同时建立公众云。因为公有云只会向用户使用的资源收费,所以集中云将会变成处理需求高峰的一个非常便宜的方式。比如对一些零售商来说,他们的操作需求会随着假日的到来而剧增,或者是有些业务会有季节性的上扬。同时混合云也为其他目的的弹性需求提供了一个很好的基础,比如,灾难恢复。这意味着私有云把公有云作为灾难转移的平台,并在需要的时候去使用它。这是一个极具成本效应的理念。另一个好的理念是,使用公有云作为一个选择性的平台,同时选择其他的公有云作为灾难转移平台。
优点:允许用户利用公共云和私有云的优势。还为应用程序在多云环境中的移动提供了极大的灵活性。此外,混合云模式具有成本效益,因为企业可以根据需要决定使用成本更昂贵的云计算资源。
缺点:因为设置更加复杂而难以维护和保护。此外,由于混合云是不同的云平台、数据和应用程序的组合,因此整合可能是一项挑战。在开发混合云时,基础设施之间也会出现主要的兼容性问题。
1.2 常见云管理平台
1.3 云管理的好处
多云趋势明显、应用广泛,而云管理平台是多云管理的必然选择。
云管理平台的主要能力包含混合云、多云环境的统一管理和调度、提供系统映像、计量计费以及通过既定策略优化工作负载,更先进的产品还可以与外部企业管理系统集成,包括服务目录,支持存储和网络资源的配置,允许通过服务治理加强资源管理,并提供高级监控,提高性能和可用性。
具体来说,云管理平台可以在以下几个方面体现其在多云管理中的作用:
1.3.1 多云的统一管理
企业的IT人员管理多个不同的云平台,让云服务的用户登录多个不同的云平台进行操作显然是件困难的事情。通过使用云管理平台,管理员可以设定跨云统一的管理策略、审批流程、资源配额以及镜像模板等,并统一管理和维护多云应用和基础架构模板,并通过管理门户管理整个环境。云服务消费者从自助服务门户中选择多云模板进行部署和使用。
1.3.2 跨云资源调度和编排需要
对于企业IT应用的不同需要,管理员和开发者需要根据具体需求调度和编排跨云资源,此时,云管理平台不可或缺。对于特点的应用,开发人员期望将基础架构和应用程序服务部署到多个平台,部署后配置这些服务,并通过工作流设计界面控制生命周期操作(启动,停止等)。如标准的Web、APP、DB三层架构应用部署时,借助公有云CDN的能力,把Web层部署在公有云上,把APP集群部署在私有云的容器或者虚拟机上,把DB部署在私有云物理机上。通过云管理平台跨云编排能力,将这些公有云服务、私有云的资源进行统一的编排,辅以流程引擎形成跨云服务。
1.3.3 实现多云治理
多云需要统一的治理能力。云管理平台提供的治理和控制功能使管理员能够定义角色和权限层次结构,与企业和公有云目录和身份验证服务(单点登录SSO等)集成,设置和执行成本和其它配额和限制,并使用标记的资源跟踪更改历史记录,以执行合规性策略。
1.3.4 多云的统一监控和运维
管理员和运维者都需要监控告警和利用率报告来优化正在进行的多云管理。在与企业级客户交流时经常会听到的抱怨就是,为了管理云数据中心、管理某个云环境都要登录多个系统分别进行:操作虚拟化、网络、存储、业务等的管理;对IT流程的管理;对监控告警系统的管理等等。云管理平台集成企业内部IT环境,是管理员和运维人员能在统一的portal完成对于云的管理和运维操作。
1.3.5 统一成本分析和优化
云系统的管理员、财务人员、云服务的消费者都需要考虑成本和服务/资源利用率报告来优化正在进行的多云管理。云管理平台提供的基于云环境、云服务和资源类型、服务消费实体构建的成本分摊模型,到期日期和性能/使用情况分析不仅有助于控制使用情况,还可以引导消费者使用最佳的云平台,优化整体成本。此外,云管理平台提供的成本优化能力,能帮助管理员分析存在的僵尸主机、资源利用率低、选择成本及性价比更好的服务,进行资源调度。而当某个公有云调整价格时,云管理平台的动态资源调度和优化能力可以灵活的在各云间调配高性价比的服务,节省企业云消费成本。
1.3.6 实现基于API构建跨云的应用
IaaS、PaaS及DaaS服务为企业应用提供了良好的集成支撑,通过API控制应用程序和基础架构元素对云管理员和开发人员都很重要。云管理平台提供统一的API网关,抽象各云平台的API差异,提供了一系列的鉴权、API生命周期管理、API服务消费及管理能力,简化了对于各云平台的集成及企业内部IT服务管理工具和产品的使用。
通过构建多云,企业可以实现统一管理公有云和私有云、跨国跨区域的业务系统部署、关键数据的云灾备、应对短时的云爆发业务需求、全局的高可用性和性能需求、各云服务提供商的优势/高性价比服务选择、成本分摊及优化能力等。但多云带来的最大问题是服务异构,多活也意味着必然有大量数据同步,带宽,时延,数据一致性方面都有很大挑战,管理成本也会上去。所以可以优先考虑单朵云内同城和异地建设,这样基础层面同构,可以更好地专注在业务容灾和双活建设上。
综上所述,多云需求的快速增长,必然需要相应的管理能力,而云管理平台作为一个综合的双模IT管理实践,方便管理员构建和管理多云、便于开发人员构建和运行跨云的应用程序,并帮助 IT 经理交付、治理和优化多个云平台。
2.0 云原生
2.1 云计算历史回顾
基于虚拟机技术,陆续出现了 IaaS/PaaS/FaaS 等形态,以及他们的开源版本。
IaaS:Infrastructure as a Service(基础设施即服务)
从上面的架构图可以看出,IaaS处于最底层,服务商提供底层/物理层基础设施资源(服务器,数据中心,环境控制,电源,服务器机房),客户自己部署和执行操作系统或应用程序等各种软件。
PaaS:Platform as a Service(平台即服务)
PaaS处于中间层,服务商提供基础设施底层服务,提供操作系统(Windows,Linux)、数据库服务器、Web服务器、域控制器和其他中间件,以及服务模型中的备份服务等中件层服务。例如IIS,.NET,Apache,MySQL …,客户自己控制上层的应用程序部署与应用托管的环境。
SaaS:Software as a Service(软件即服务)
SaaS处于最上层,服务商提供基于软件的解决方案,满足客户最终需求;如OA、CRM、MIS、ERP、HRM、CM、Office 365、iCloud、G Suite等应用,客户不需考虑任何形式的专业技术知识,获得完整的软件包,使他们的日常工作和生活变得更轻松。
BaaS:Backend as a Service(后端即服务)
服务商为客户(开发者)提供整合云后端的服务,如提供文件存储、数据存储、推送服务、身份验证服务等功能,以帮助开发者快速开发应用。
FaaS:Function as a service(函数即服务)[Serverless]
无服务器计算,当前使用最广泛的是AWS的Lambada。
服务商提供一个平台,允许客户开发、运行和管理应用程序功能,而无需构建和维护通常与开发和启动应用程序相关的基础架构的复杂性。按照此模型构建应用程序是实现“无服务器”体系结构的一种方式,通常在构建微服务应用程序时使用。
其实还有很多的aaS,比如DaaS(Data as a service,数据即服务)、NaaS(Network as a service,网络即服务) 等等。
2013 年 docker 出现,容器技术成熟,然后围绕容器编排一场大战,最后在 2017 年底,kubernetes 胜出。2015 年 CNCF 成立,并在近年形成了 cloud native 生态。
在这个过程中,云的形态一直变化,可以看到:供应商提供的功能越来越多,而客户或者说应用需要自己管理的功能越来越少。
2.2 什么云原生
云原生从字面意思上来看可以分成**云**和**原生**两个部分。
云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。
原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如️云服务的**弹性**和**分布式**优势。
微服务
微服务解决的是我们软件开发中一直追求的**低耦合+高内聚**。
微服务可以解决这个问题,微服务的本质是把一块大饼分成若干块低耦合的小饼,比如一块小饼专门负责接收外部的数据,一块小饼专门负责响应前台的操作,小饼可以进一步拆分,比如负责接收外部数据的小饼可以继续分成多块负责接收不同类型数据的小饼,这样每个小饼出问题了,其它小饼还能正常对外提供服务。
DevOps
DevOps的意思就是**开发和运维**不再是分开的两个团队,而是你中有我,我中有你的一个团队。我们现在开发和运维已经是一个团队了,但是运维方面的知识和经验还需要持续提高。
持续交付
持续交付的意思就是在不影响用户使用服务的前提下频繁把新功能发布给用户使用,要做到这点非常非常难。我们现在两周一个版本,每次上线之后都会给不同的用户造成不同程度的影响。
容器化
容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了,每个服务都被无差别地封装在容器里,可以被无差别地管理和维护,现在比较流行的工具是docker和k8s。
2.3 理解云原生应用
2.3.1 云原生应该是什么样子的?
在云原生之前,底层平台负责向上提供基本运行资源。而应用需要满足业务需求和非业务需求,为了更好的代码复用,通用型好的非业务需求的实现往往会以类库和开发框架的方式提供,另外在 SOA/ 微服务时代部分功能会以后端服务的方式存在,这样在应用中就被简化为对其客户端的调用代码。
然后应用将这些功能,连同自身的业务实现代码,一起打包。
而云的出现,可以在提供各种资源之外,还提供各种能力,从而帮助应用,使得应用可以专注于业务需求的实现。
非业务需求相关的功能都被移到云,或者说基础设施中去了,以及下沉到基础设施的中间件。
以服务间通讯为例:需要实现上面列举的各种功能。
SDK 的思路:在应用层添加一个胖客户端,在这个客户端中实现各种功能。
Service Mesh 的思路,体现在将 SDK 客户端的功能剥离出来,放到 Sidecar 中。就是把更多的事情下沉,下沉到基础设施中。
在用户看来,应用长这样:
云原生是我们的目标,Service Mesh 交出了自己的答卷,接下来我们可以回到 Service Mesh 这里了。
2.4 Service Mesh
其中文译名是服务网格,这个词最早使用由开发Linkerd的Buoyant公司提出,并在内部使用。
服务网格的基本构成