2018年5月18日,由51CTO主办的全球软件与运维技术峰会在北京召开。来自全球企业的技术精英汇聚北京,畅谈软件技术前沿,共同探索运维技术的新边界。而在本次大会上,除了众星云集的主论坛环节,12场分论坛更是各具特色,分别聚焦了时下最受关注的容器、AI、区块链、大数据、物联网、DevOps等技术应用领域;是与会者寻找技术灵感,吸取先行者经验的***场所。
在这个数字化转型时代,企业一方面要想方设法提升生产和管理能力,另一方面则要发展自身的IT能力。只有这样,企业才能更充分的借助IT之力发展业务,利用IT的思维来推动业务转型。而对于企业来说,相关软件应用的开发和运维就是这种IT能力最重要的表现。
实际的企业环境中,由于新技术的不断出现、新业务模式的层出不穷,应用的开发与运维往往需要在一个相当长的时间内持续迭代和交付使用。显然,这种业务模式对企业的IT团队和能力来说都是一个巨大的挑战。而在这些挑战背后,更有多云环境、容器技术、人工智能等技术发展的推波助澜。任何企业想要打好开发运维这场马拉松式的战役都不会轻松。
针对目前企业所关心的DevOps问题,本次WOT峰会特别设置了“DevOps转型之路”分论坛给予专题讨论。在本次分论坛中,51CTO邀请到了eBay中国研发中心技术主管茹炳晟、ThoughtWorks高级质量咨询师秦五一、IBM混合云技术经理潘雪梅、招银云创金融PaaS研究中心总监陈沙克等一众业界大咖齐聚一堂,以不同的视角和维度解读DevOps这一理念的发展、演变、应用与未来。
招银云创的PaaS容器落地实践
效率和成本是企业在进行很多工作时首先考虑的两大问题,这也是很多企业在上云时所要考虑的重点。虽然云计算本身所代表的理念能够很大程度上提升企业IT的效率和成本,但在云架构已经就绪的前提下,企业在效率和成本的道路上仍然有很长的路要走,有很多新的技术和应用需要部署。
在传统的PaaS平台中,虚拟机本身需要占用大量计算、存储、内存等系统资源;而要解决这一问题,容器技术的使用不可或缺。招银云创在容器平台的架构上选择了目前非常流行的OpenShift平台。OpenShift是目前最为成熟稳定的容器平台之一,而且提供了一系列CI/CD工具来帮助企业实现真正的DevOps。
招银云创金融PaaS研究中心总监陈沙克表示:首先从效率层面来看,容器能够非常高效的利用基础架构的各类资源。以招银云创在金融行业的经验来看,部署一个开发环境在过去可能需要上百台虚拟机资源;而在使用容器技术之后,仅需要十几台虚拟机就能完成整个开发环境的搭建。这种成本优势还是非常大的,而在OpenShift平台的实际运维中, 面对Kubernetes一年四次的频繁更新,OpenShift不仅更新速度上可以***的跟随,而且其提供的完善服务也能够帮助企业更好的部署和使用新版本。
而有了基础的容器平台之后,招银云创要做的便是构建整套DevOps开发工具链。首先,招银云创使用了目前效果比较好的Redmine来实现统一的协作管理。这套协作体系包括了需求、计划、开发、测试、部署、运维等模块。
在开发过程中,Gitlab分布式代码库可以有效管理开发中的各类代码;而SonarQube则可以方便而自动化的对代码进行规范化检测并扫描潜在的漏洞。***,招银云创使用Jenkins来进行应用构建并利用Testlink来管理测试流程。当然,所有这些工具都有相关的插件,以便管理者使用Redmine来对整个开发测试流程进行管理。这便是招银云创在实现DevOps过程中使用到的整套架构。
对于这样一套现代化的容器平台及其上运行的整套DevOps流程和工具,陈沙克引用了一段招商银行行长田慧宇的话来进行总结:无论经济下行的周期性因素,还是利率、汇率改革的市场化因素,抑或是去杠杆、强监管的政策性因素,都不足以改变银行的商业模式。唯一可能从根本上改变和颠覆银行商业模式的,是科技。
多云环境中的DevOps与运维管理实践
云和容器的实践是很多企业正在做或已经做到的事情。而对于云计算的未来,多云环境是不可避免的。而在多云环境下,DevOps的工具链构建和部署显然会比单一的云环境要更复杂一些,且会面临更多安全风险。而面对这类问题,作为全球领先的科技创新企业,IBM显然有更丰富的经验可以借鉴。
对此,IBM混合云技术经理潘雪梅表示:在由公有云、私有云、IBM云服务共同构成的多云环境中,IBM在DevOps最重要的工具链方面所给出的建议是Slack、Trello、Github、Jenkins、JMeter、Terraform、UrbanCode Deploy;分别对应了DevOps过程中的协作、代码管理、应用构建、测试、容器部署等过程。
而作为容器环境的核心,IBM的整套DevOps解决方案将以IBM Cloud Private容器云平台为核心。而这一云平台将提供多云环境下的容器管理、编排功能。这一平台兼容Kubernetes、Cloud Foundry、VMware、AWS等多种平台,能够为用户留下更多自由选择的空间。
而且,借助IBM的一体化解决方案,整个DevOps可以在图形化的界面上实现自动化交付。这一功能的核心在于IBM Cloud Automation Manager管理工具。这套管理工具可以为目前流行的多种DevOps工具提供接口,并在统一的图形界面下实现完整的管理功能。
***,在最关键的部署环节,IBM也有专门的Urban Code Deploy工具。这一工具可以实现应用及微服务在多种云平台上的自动化、流程化部署,并对容错和部署质量进行管理和监控。
当然,针对DevOps过程中的其他环节,IBM也有众多相关的工具链和经验可以提供。例如故障管理工具链、多层次事件关联分析、服务管理与运维参考架构、运维转型中的组织变化参考以及运维中的创新工作流程和方法等。
借助IBM提供的完整DevOps解决方案,企业可以更高的效率和更低的风险实现DevOps。
持续集成的实践与意义
作为DevOps的核心环节之一,持续集成对于企业开发来说意义非凡。他能让企业的开发部门在持续产出高质量应用的前提下保持整体的高效率运作。而做到这一点,除了合适的工具之外,更需要先进的管理和流程予以配合。否则所谓持续集成和DevOps只能是徒有虚表的花架子而已。
关于这一点,ThoughtWorks高级质量咨询师秦五一有着丰富的阅历和经验。在本次DevOps专场中,他也用一个来自某航空公司的例子深刻阐释了流程与管理在整个CI甚至DevOps中的价值和意义。
在通常的实践中,英文的“CI”代表一系列工具集,而中文的“持续集成”则代表了这些工具集背后企业开发所要达到的境界。
秦五一在谈到某航空公司的CI案例时表示:这家航空公司在四年前使用了ThoughtWorks的CI工具集和解决方案。目前,该公司拥有50人的开发团队,分为7个全栈小组,在QA质量管理方面拥有一个9人的团队。而其整体的开发架构则采用的是ASP .Net。
在整个DevOps流程上,该公司拥有完整的解决方案。代码构建用的是Git,单元测试用的是Nunit和.Net Foundation。CI/CD平台方面则是用了ThoughtWorks开发的GoCD持续集成平台。***,该公司也拥有完整的SmokeTest、QA Deploy、E2E Test、Performance Test等测试环节以及后端的Sonar代码检测分析工具。
在这样规模的团队以及各类自动化工具的协助下,该公司的开发部门每天代码提交超过30次,单元测试覆盖率超过96%,基于Selenium Test的端到端自动化测试项目超过200条。一切指标性数据都非常***。
但就是这样的团队,其代码在CI监视器上的CI状态却始终是红色的警报状态,应用交付也非常缓慢。究其原因,代码提交和测试流程的不规范是罪魁祸首。开发人员提交的代码过不了测试、开发人员配置错误、测试与开发不同步、开发人员各自为政等各类现象同时在团队中出现。***的表象之下则是整个团队的低效运行。
对此,秦五一在入住该团队之后提出了一系列改进建议:
1、 每天提交代码
2、 不要提交无法构建的代码
3、 立即修复无法集成的构建
4、 编写自动化测试
5、 所有提交的代码必须通过所有的测试和审查
6、 提交之前执行私有构建
7、 不要迁出无法构建的代码
在这些原则的指导以及一系列基于这些原则的具体流程修订之后,该公司每个可用的业务应用版本所花费的平均工时从之前的180工时直接降低为55个工时,整体效率在不增加成本的情况下提升了三倍,效果可谓立竿见影。
由此可见,CI过程中所用到的各类软件仅仅是工具,而在工具已经齐备的条件下,改进工作流程,强化合作及规章制度才是团队做到DevOps的核心因素。
自动化测试中的数据准备
测试是保证代码、构建乃至应用可用、有效的必须环节,是保证应用达到可用状态的必要步骤。因此,保证有效的测试就成了DevOps实际有效的重点环节。
但对于多数互联网公司来说,业务庞杂、用户数量庞大、业务流程长等特点会让应用发布之前的测试变得非常复杂。这其中,数据的准备是重中之重。对此,eBay中国研发中心测试基础架构技术主管茹炳晟表示:以eBay的经来看,在所有CI失败的情况中,有30%的情况并不是代码或构建本身的问题,真正的问题出在测试数据的准备和使用上。由于业务、数据结构及其他变动经常会导致测试所需的数据是时时变动的;而一旦测试数据的准备没有针对变动做出相应变化就会导致整个CI测试的失败。因此测试数据的准备就变得极其重要。而对于eBay这种跨国电商平台来说,不同的用户、不同的语言、不同的货品、不同的法律法规、不同的物流、不同的支付手段等等一系列不同将导致测试数据的准备本身就变成了一个极端复杂的过程。
在初期阶段,eBay使用基于Java的数据工具来有针对性的生成测试数据。虽然这种方法能够让不同的测试人员定制化的产生自己测试所需的数据,但这却是一种操作起来相当繁琐的笨办法。因此,后来eBay的测试数据生成进入了2.0时代:基于函数的测试数据生成。这时,数据可以根据不同类型和需求进行批量的模式化快速生成;这大大简化了测试人员的操作压力和时间成本,但这仍然不够自动化。最终,eBay的测试数据生成进入了3.0阶段:测试数据生成变为了一个微服务,测试流程只需调用这一服务即可;整个过程变得高效和自动化;而这一微服务亦由专门的开发人员进行更新和维护。
数据准备只是自动化测试中的一个微小环节,在整个DevOps中更是占比很小,但对于eBay这样的互联网公司来说,自动化的测试数据生成显然能够为eBay全球化DevOps的实现提供前提和基础。
且行且体会的DevOps之路
不得不说,对于任何企业来说DevOps都是一个巨大的***。它关系到企业的业务和应用,关系到企业对IT的投资建设,更关系到企业IT团队的管理和开发思路。我们甚至可以将DevOps比喻为企业IT开发团队的精神内核。无论怎样形容DevOps的重要性都毫不为过。
在DevOps这个庞大的概念下,企业不仅要在架构和工具上进行相应的革新,更需要对人员和思维进行再造,才能实现高效的持续集成、持续交付。而对于不同类型的企业和业务,要达成这一目标所需的路径和技术各不相同。可以说每个企业都有一条属于自己、属于这项业务、属于这个团队的DevOps之路,而所有的DevOps方法和经验都只能借鉴和参考,真正的DevOps则需要自己去实践和体会。而WOT峰会所提供的正是这样一个能让每一个在DevOps路径中上下求索的人相互交流、相互提携的平台。