混合云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 定期的 安全、合规和版本兼容性更新。以开放、更快、更安全的方式,将核心业务应用迁移到任何云端。

来源:至顶网软件与服务频道

0赞

好文章,需要你的鼓励

2020

09/17

18:43

分享

点赞

邮件订阅
白皮书