近日,“OSCAR云计算开源产业大会”于北京国家会议中心举行,“保险业云计算开源应用与标准化论坛”作为”OSCAR云计算开源产业大会”的分论坛之一,于3月22日下午召开。云栈科技技术总监张春源参加会议,并带来《保险公司提升应用标准化部署的秘籍》的主题演讲。
同时,随着开发方法和协作工具包括技术的不断完善,软件的生命周期在迅速的缩短,部署会更加频繁,在部署过程中如何基于标准化提升部署效率提升准确率呢?张春源指出,需要为企业制定一套基于业务实践,有效采用计划,可以引导企业成功的构建标准化部署的基础架构。此架构需要帮助企业在应用交互方面做到全面测试、快速发布、频繁更新、批量复制、高效维护和全面监控。
脱离标准化,自动化是可以实现的,但这样去实现自动化的成本和代价高。如果没有标准化,则意味着每一次应用的接入都需要去查找之前自动化的脚本。可以得出以下结论,即如果实现标准化 自动化等于一套平台,如果没有标准化 自动化等于的只是一个工具而已。
为何快速部署需要标准化?现在企业内部软件开发已经成为企业战略的核心部分,市场需求激烈的同时,也对内部的研发提出了更高的要求。因此,除了质量和成本可预测之外,快速发布也成为一个关键目标,现在的开发团队不仅要保证成功发布新应用,还要对新应用做出很多更新来适应不断变化的市场需求。
敏捷开发和其他敏捷迭代的方式,可以帮助开发人员快速创建和调整软件,但是在IT运营团队将IT发布到生产环境的时候这个过程会变慢,常见的有开发团队和运营团队,他们各自的工作都能梳理得清,但是这两个部门经常各自为战,缺乏信任和沟通,缺乏便于协作的标准、工具以及最佳的实践方法。
据介绍,为了帮助IT运营团队与开发团队保持同步,许多企业已经开始用DevOps来实现软件的快速发布。开发人员使用容器把特定的应用及运行时环境依赖项标准化打包,容器不仅能使得快速交付成为可能,而且还灵活定义底层平台各种信息比如操作系统、开发语言等。此外,随着不同团队在目标和流程上趋于一致,容器提供了一种通用的架构,可以将开发、运营、安全、质量管控及其他团队联系在一起。
使用容器使得IT步调一致,各自开发和进行部署,云栈科技在这个基础上再进一步,复杂的应用通常是部署到不同主机,通过不同主机运营服务组成的系统,这些主机或许在不同的基础设施,可能是物理机、可能是虚拟机还可能是私有云、公有云,环境的一致性尤为重要,容器正好是不可变的基础设施,其实核心是基于容器的镜像来保证多环境的一致性。
图片所示标准是基于寿险公司做的,具体到不同的企业可能会有些变化。
基于上面列的标准属性划分和识别,同时还需要建议标准执行的规则,分别是:
一、镜像唯一,不同环境间使用同一镜像,传入不同参数匹配不同业务系统;
二、服务名通信,程序不能把IP写死,要通过服务名进行通信,这样有助于系统在不同环境中的部署;
三、数据外挂,因为容器本质上是一个进程,当容器删除后存放到容器里面的数据会被一起删除掉,因此可以将数据外挂,映射出来,应用层尽量不把数据写到本地,应该把数据写到数据库里;
四、配置分离,应用里面有很多配置文件,配置文件不同环境间的配置参数是不一样的,所以配置文件不打包在镜像当中可以独立管理;
五、日志回传,日志统一存放在目录下,再统一回传到日志中心。
容器应用平台有很多优势,首先,它可以帮助企业有效的解决标准化部署应用的难题,容器平台不仅可以提供容器管理而且它能够编排很多分布式应用的容器。其次,容器的管理维度是应用层面,能管理整个应用的生命周期。第三,从开发部署到日常的生产使用,容器平台基本上能全面涵盖,通过容器应用平台,管理员可以定义标准化的平台组件,为开发人员提供多种灵活的操作,同时有利于提供工具和架构的通用性,这种通用性降低了技术上的隔离。最后,开发人员可以在标准化平台上部署新的实例,这种情况无需IT管理人员介入。
上图为寿险管理标准化的组件,只要上传到平台里面,简化了在物理机、虚拟机、公有、私有云上的部署,开发人员无需部署中间件这些服务,能有更多时间管控代码质量。
流程和技术的结合会让自动化更准确。流程的标准化主要是定义实现某个任务所涉及到的步骤和具体的顺序,自动化是CICD的关键,让软件交付与业务目标保持一致。
创新性的新技术和新流程并不是刚开始就受所有人的喜欢,在这种新的开发方式,本身它并不是非常复杂,但是对于熟悉了现有方法的产品负责人、开发人员和运营人员而言,确实是给他们带来了一定的挑战。由于人们通常会对那些在自己未参与的情况下所做的变更有所抵触,所以要想激发参与者的热情获得更多的帮助,企业在刚开始做这件事情的时候就要做到以下几点:
1. 参与。在最初规划阶段,让这个项目相关的人都参与;
2. 量化。要展示并庆祝这个团队采用的新型技术和方法,从中获得的收益,并且这些获益都是可量化的。
3. 分享。让经历过有经验的产品负责人去给其他团队分享,借助他的影响力将新的变化推广到其他团队。
新的、成熟的方法其实是经过不断反复的讨论和实践的,计划当中明确定义,比如各项任务,要达到的目标和各项任务都有一个里程碑,并争取在每次讨论中要有业务价值。该计划必须包含三个工作流:
1. 基础架构。构建容器平台,并在这个过程当中将我们所用到的系统、所涉及到的服务组件,都集成到容器平台里面,将成功的经验沉淀下来,放到应用商店中;
2. 发布管理。实现应用部署和交付流程的标准化和自动化;
3. 开发管理。包含开发人员构建容器化应用,将现有应用迁到容器里面或者开发使用容器做编排,微服务所需要的流程和工具,在这个地方要稍微多花一些时间和耐心让开发他们去接受新的技术和方法;
在初始阶段所有相关团队和人员都应该要积极参与进来,对于新型技术比如容器技术可以通过短期培训,确保这个团队在首次进行讨论之前对这些技术有一定的掌握。
在完成容器应用平台示范性实施后,这时候就可以挑小的一组应用迁到容器上,在实际环境当中验证体现它的价值,这种示范性的实施需要在讨论之前去进行,这样便于参与者对标准化基础设施平台的实际应用有个初步的了解。
进入到实验验证阶段会涉及到很多流程,基础架构团队可以按照第一次沟通设计的、已经确定的目标和结果构建完整标准化的应用平台以及构建所有服务的镜像,有关生产方面的设计可以通过逐步的方式改进,确定容器平台或者容器技术的可行性。
与此同时,发布管理团队可以开始设计CI和CD流程,开发和应用运维包括测试共同参与,包括所有软件开发的组件,面向构建、测试、部署阶段的都可以同时参与,反复优化CI和CD流程。
此外,应用开发团队可以开展有关容器化开发工具和方法的培训,使用此平台进行应用开发,扩展流程中需要包含容器应用的自动化交付功能。
综上所述,企业如果想要成功的构建标准化部署应用的流程和平台,不仅仅要依赖于容器技术而且要取决于相关人员和流程,通过制定和规划周密兼具明细化的技术,这样有助于企业实现标准化平台的成功。企业还可以通过采用上面讲到的分阶段实施的方法,在项目早期的时候就要很快的证明容器或者标准化平台的价值,并在之后设计和讨论逐渐获得更多支持。同时,要有相互独立的工作流,让每个团队能够按照自己的节奏,不希望一下子引进一个新的技术,所有东西都要改,按照他们的节奏,他们适应新技术的能力来开展工作,同时需要逐步落实整个计划。最后通过以技术为基础来推动组织结构实质性的变化,推动企业实现更高效标准化软件的交付。
http://www.idcquan.com/Special/OSCAR2018/live.html
或
http://cdn.opensourcecloud.cn/zt/2018cloud/ppt/