容器云的建设及业务价值
经典云计算包括IaaS、PaaS和SaaS三层服务。IaaS层提供以各种虚拟机为最小粒度的资源调度单位,PaaS层在IaaS的虚拟机之上提供运行时环境、数据库、开发工具等环境。但是IaaS容易出现资源利用率低、资源调度分配缓慢等问题,PaaS容易面临应用系统架构选择、应用运行的软件环境栈不统一等问题。这些业务系统的运行环境,在面临业务系统软件架构复杂、规模庞大,业务需求变更频繁、研发交付周期逐渐缩短等问题时,会成为业务系统研发人员和运维人员提升工作效率的一个障碍 。
2013年docker技术出现:Docker是以docker容器为资源分割和调度的基本单位,可以装整个软件环境运行时,用作构建、发布和运行分布式应用的平台。容器技术打开了一扇窗,但真正运行于线上环境,需要解决与容器环境相关的网络、存储、集群、高可用等方面的问题,从容器到容器云的演进应用而生。
容器云究竟能带来哪些业务价值,容器云又有哪些技术路线可以选择,以下是由行业专家分享整理总结的内容,供各位参考。
WHY:为什么要建设容器云?
随着虚拟化技术的发展,很多金融行业(尤其银行同业)已完成物理机虚拟化的进程(多数采用vsphere技术)。这种虚拟化技术一定程度上降低了运维复杂性,提升了资源的使用率。这种虚拟化技术和openstack等可视作云计算中IaaS的发展。此时,银行业的业务系统研发仍面临如下问题期待解决:
1) 应用系统使用的基础软件多为复杂商业软件,功能繁多,真正经常使用的功能一般都只占少数。这些基础软件一般系统架构复杂、安装部署复杂且学习曲线陡峭;
2) 应用系统规模越来越复杂,庞大的部署架构模式使得应用的安装、部署和更新也相对比较复杂,使得业务停机时间和部署成本都有所增加,应用系统开始尝试微服务的形式解决此类问题;
3) 在面临互联网金融等多种行业的激烈市场竞争时,业务部门的需求变化越发频繁,同时也希望研发部门的软件交付周期越来越短;银行IT团队对提高IT能力驱动业务创新的愿景,是银行业IT团队拥抱趋势技术、紧随IT技术发展的宣言;
4) 以vsphere为代表的虚拟化技术,同样面临硬件使用率相对较低、资源分配调度相对缓慢等问题。
随着金融科技概念的兴起,IT部门需要解决这些问题从而更好的提升研发和运维团队的生产力,从而更加灵活、高效、快速的满足业务系统需求,更好提升业务价值。随着容器技术的不断发展和完善,容器云的价值也逐渐被发掘出来,它可以从本质上更好的契合新形式下银行面临的问题:
1) 标准化应用的部署和交付:采用容器镜像的方式实现运行环境的标准化,屏蔽应用部署过程中针对不同环境需要的环境配置、安装步骤等复杂过程。把原先部署、配置的运维工作提前到开发交付阶段,在制作镜像的阶段解决运维上线中出现的问题;
2) 促进Devops的落地实施:容器build、ship、run的理念及其技术特点,更够更好的与CI/CD技术进行融合,促进CI/CD理念的落地,可从技术手段上保证项目管理方式和管理理念的真正有效落地;
3) 有效整合现有资源:容器可运行在多种云平台环境中,有效避免厂商绑定,可实现对企业已有异构基础资源的统一化管理,这种统一管理应用的模式屏蔽环境差异性,降低系统运维难度;
4) 提升资源利用率:容器是基于操作系统的轻量级虚拟化技术,与传统的虚拟技术相比,多个容器可以共享操作系统的内核进程和内核资源,从而有效节省操作系统级资源开销, 通过容器密度的提升更好的利用资源;
5) 加速企业软件资产积累: 镜像仓库通过对应用镜像的集中管理可实现类似应用商店的功能,有利于更好的沉淀和积累企业软件资产,从而更加快速高效的提供各种运行环境。
WHAT:容器云平台的主要内容
首先确定建设容器云的目标,准备覆盖应用的范围,是小范围试点、部分互联网应用、还是主要应用。目标决定了企业的各种资源投入和承担的技术风险;
其次了解所需覆盖应用是否适合部署于容器云,不是所有类型应用都适合运行于容器云;
第三就是技术选型,主流的容器技术和框架各有优劣,需要根据平台的最终建设愿景来选择。
结合银行的监管要求和企业应用特点,一般容器云建设包括但不限于如下方面:
1) 云管平台的建设:主要实现整个云平台可视化的web管理平台,包括分配资源、管理容器、管理租户、管理应用和管理服务等操作功能;
2) CI/CD与平台的对接: 能够更好的支持灰度发布、蓝绿发布等多种应用更新升级方式,智能化的自动构建和部署,从而更好的支持软件敏捷开发;
3) 应用商城(镜像管理):实现镜像的集中安全统一管理,实现企业软件资源积累和沉淀的一个工具化支持;
4) 应用日志和监控:实现对容器云平台运行的各个应用系统的日志统一管理和监控统一管理;
5) 应用编排:制定容器云平台的标准服务定义模型,从而保证应用的一键式部署、能够实现健康检查、自动伸缩、自动资源选择和调度、自动复制等功能,从而保证应用的整体服务能力;
6) 网络和存储:如何在容器中建立网络模型和存储模型,从而更好为容器提供网络通信和存储提供服务;
除此之外,还需要关注容器云上应用的高可用性、系统安全等现有架构体系下也需重点考虑的问题。
从容器云的应用场景看,容器云的应用场景和银行的IT战略目标有关。对于传统的银行,容器云的应用场景有:
1)创新类业务的应用场景,容器云可以快速搭建应用试错环境。结合微服务架构,可以加快应用的部署能力,提升持续交付的能力;
2)互联网接入和网关类的应用:一般需要良好的故障隔离和水平扩展性能力,容器云可以提供快速部署和故障转移的能力;
3)其他非交易类应用:从目前业界实践来看,微服务是目前容器云上最合适的应用架构,通过微服务实现内部生态系统。
建设容器云平台并不意味着废旧立新,也可以在过去的流程工具链中加入容器能力实现双模共存。很多银行已经建立起成熟的软件生命周期管理流程,实现了从需求计划到SR的分支开发、测试、部署的全流程的自动化与管理。他们希望保留过去的传统软件部署流程,也希望可以支持一些新项目的容器化打包交付模式。
HOW:容器云如何建设
容器云平台项目建设有哪些技术路线,该如何选择?
单从技术角度看,容器云的核心主要包括容器、服务编排和网络等内容,企业级平台的建设思路一般是以这些功能为核心,进行各种企业级功能的建设和完善:
1) 容器:目前主流的有Docker,Garden和Rocket等,关注度最高的是Docker(分为社区版CE和企业版EE);Garden是Cloud Foundry支持的容器;Rocket是CoreOS推出的容器技术。Docker和Garden都有实际的金融业应用。2015年开始,linux基金会成立OCI组织,旨在旨在围绕容器格式和运行时制定一个开放的工业化标准,runC 是Docker贡献出来的,按照该开放容器格式标准(OCF, Open Container Format)制定的一种具体实现。容器最终发展会成为一种行业标准,选择时可选择参考行业标准制定的成员单位、贡献度和话语权等;在互联网公司,阿里、腾讯、百度、网易、京东和华为的内部平台建设或者对外商用产品发布均采用了docker技术,可见docker有更加广泛的用户群体。
2) 服务编排:服务编排框架有多种实现形式,目前多数采用kubernets(k8s),成为一种市场主流选择,k8s是Google内部的大规模集群管理工具开源而来,受到Microsoft、VMWare、Red Hat、CoreOS、Mesos等各大巨头青睐,纷纷为其共享源码。 设计宗旨是维护应用容器集群一直处于用户所期望的状态,并且建立一套健壮的集群自恢复机制,包括容器的自动重启、自动调度和自动备份等功能。燬warm是Docker原厂的容器编排引擎,也分为社区版和企业版。在各种调查中可以发现k8s是普及度比较高的。
容器云建设方式有多种:
1)自研:基于选择的容器和服务编排框架为基础进行自研,这种情况对团队的各项技能要求都相对比较高。对于银行金融业,一般在自研时也会考虑购买一些专业团队的技术支持;
2)联合开发:与云平台厂商进行联合研发,这种模式一方面可以更好的满足行内各种实际需求,另一方面可以充分利用厂商的专业技术能力,但这种研发没有固定模式可寻,建设周期相对较长;
3)产品购买:购买成熟化的市场产品,这种模式建设周期相对较短,在进行本行落地定制化的过程中一般有应用案例可参考,一般建设周期相对较短,定制研发多以落地为主,技能要求相对较低,选择时建议选择相对开放易于定制的产品。
企业在进行技术路线选择时,需要综合考虑平台的建设目标、投入成本、团队技术储备、所选技术路线的成熟度、生态圈发展情况及其未来发展趋势等多种因素。
容器云的建设有哪些风险需要考虑?
1) 技术选型的成本:容器云需要优先选择容器和服务编排的技术路线,选定后基本可以确定产品的系统架构,在实施后再进行修改或者更换的成本相对比较大;如果选择的技术路线以后停止更新不发展了,也会面临各种技术支持等问题;
2) 开源框架快速发展:目前主流的编排技术(如K8S)均为开源软件,随着容器云技术在企业中越来越多的普及应用,开源软件自我完善和发展的速度比较快,版本更迭频繁,甚至不同版本之间架构等差异比较大。因此需要更加关注软件生命周期过程中框架的平滑升级和过渡;
3) 应用高可用的风险:从架构层面看,容器云是一个整体,容器云内部架构出现异常,可能会导致整个云异常,影响容器云上的所有应用。因此,高可用、可靠性需要反复测试演练,并形成灾难恢复应急文档;
4) 在企业内部落地的风险:容器云上运行的是银行业务系统,因此必须遵循银行系统的特点,比如满足应用系统安保等级要求等,容器云的落地,一方面是技术方面的风险,比如和行内各种现有系统的对接等;一方面是制度流程方面的风险,容器云必然会带来很多新的思维和理念,这些最终需要靠制度流程来保证实施,需要进行流程梳理和修改,避免“水土不服”。
容器云建设时需要做什么准备,成本包含哪些?
云平台建设的前期准备主要包括:
1)人员准备:容器云技术覆盖到底层的基础运维和应用的研发测试等内容,因此团队成员最好由开发人员和运维人员共同组成;
2)技术存储:需要完成对容器技术和服务编排技术等容器云相关技术的知识贮备,涉及知识面广且复杂;
3)流程存储:容器云可以更好的促进devops理念的落地实施,CI/CD等会对现有流程带来改变或造成影响,因此做好IT组织架构梳理,做好职责明确,从流程上做好准备;
4)基础环境准备:容器云运行的环境是基于物理机还是IaaS层,需要做好规划并进行环境储备。
云平台建设成本包括硬件资源、软件成本及定制开发、技术服务费用(方案设计、咨询、培训、应用容器化迁移、流程改造等)以及平台运维、维保服务等内容:
1)软件平台费:不同厂商对于产品的报价方式会各有差别;
2) 定制开发和技术服务费用:一般按照工作量以人天计算;
3)硬件资源:包括做平台高可用部署以及计算节点的主机、网络、存储设备、硬件负载等。容器的应用可以提高对主机资源的使用率。应用慢慢迁移后可以降低长期的拥有总成本。
4)维保费用:内部运维人员人力成本,平台厂商次年维保或者平台运维人员外包等。
容器云建设时需要考虑哪些难点和重点呢?
容器云建设是一个复杂的系统化工程,每家企业容器云建设的出发点、设计目标各不相同,因此建设的内容会存在差异,但主要的建设难点或者重点包括但不限于如下内容:
1)与基础设施的融合:容器云与基础设备的关系如何定位,容器云平台的管理内容包不包含底层vmware、openstack或者物理机;
2)网络建设:容器云中大量容器需要进行网络隔离或者网络连通,网络连通时使用哪种网络设施,诸如vxlan的overlay、平网络还是基础设备的underlay(IaaS的网络),不同的选择在网络性能、网络节点规模等方面各不相同;
3) 存储: 对在容器中需要使用存储的容器而言,存储设施存在多种选型方案,比如采用ceph、NAS或者glusterfs等;
4)日志:运行在容器云的应用集群,如何进行日志管理,是采用ELK还是对接行内统一日志管理系统;
5) 监控:容器云上的应用如何进行监控,是单独采用云产品的自有监控体系,还是对接单位内部已有监控系统;
6) 中间件集成:容器云适合集成哪些中间件服务(比如数据库、缓存等),集成中间件之后,中间件中保存的数据如何进行处理,中间件的管理和运维如何进行?
容器云平台既要于底层基础设施交互,又要支持顶层应用,涉及面和覆盖面都非常广,因此建设过程中与单位内部已有设备、流程等进行结合时需要进行综合考虑,上述内容仅作抛砖引玉的参考,也欢迎更多的同行加入到我们的技术讨论中,在不断的交流中让大家不断进步,一起成长,从而将单位的容器云建设的更加有效,更加高效。
作者:twt社区平台用户bryan