CODING X C-Life:DevOps 加速企业数智化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CODING X C-Life:DevOps 加速企业数智化相关的知识,希望对你有一定的参考价值。

参考技术A

数字化开始从抽象化、标准化走向智能化

2020 给全民普及了什么是线上化、数字化、智能化,也加速了企业的数字化转型。“全数字化”时代,已经不仅仅是简单粗放的数据采集、映射、抽象。 数字化开始迈入高级阶段——数据驱动的智能化 :基于云管端 + AIoT 等为代表的新技术群落开始大量涌现,数智化企业思考的核心问题转向了如何以客户运营为核心,通过智能化手段提高客户全生命周期的体验。

作为物联网大数据行业的排头兵, 深圳数联天下智能 科技 有限公司 (以下简称数联天下)倾力打造的 C-Life 大数据综合计算服务平台,致力于为个人、行业、政府提供全周期、全链条、全维度、全方位的专业级运营顾问式服务。依托着公司强大的研发投入与技术实力,数联天下在智慧养老、智慧 健康 校园、智慧美业、智慧家庭、智慧酒店、智慧农业、智慧水生态等多个智慧领域,打造了一批又一批的标杆示范项目。

企业的敏捷性、适应性、反脆弱性,决定其在这场数字化颠覆中的胜与负

在交付各个领域的智慧项目过程当中,数联天下的研发部门逐渐发现问题:研发团队面对的是一个更加不确定、个性化、碎片化的市场需求。行业项目虽然存在着一定的通用性,但也因地制宜的存在大量定制化需求。如何让个性化与规模化齐头并进?多变的客户需求带动了研发组织开展与业务相适应的调整。 通过研发流程数字化提升研发流程的敏捷性、适应性、反脆弱性,数联天下开启了研发提效之路

数联天下研发团队和我们分享道:“客户项目周期紧张,需求变化比较频繁,开发团队需要在短时间内完成软件开发并发布上线。而在之前的研发流程当中:发布流程长,审批环节多,发布节奏缓慢,开发运维之间没有良好协作来提升发布效率。所以亟需打破跨部门之间的壁垒,减少开发、测试、运维之间的沟通环节、沟通成本。DevOps 是我们在较短开发周期内开发高质量软件的首选方法,希望通过使用 DevOps 平台 —— CODING 来提升客户满意度。”

区别于之前通过多个工具自建研发流程,数联天下团队首先基于 CODING 的持续集成、制品库、持续部署逐步提升交付带宽,再将项目管理、研发数据管理等流程统一至 CODING ,渐进式实现研发流程从需求提出到应用部署的价值交付,从而让研发团队各个角色基于统一平台通力协作,按期保质交付项目。

持续交付驱动业务加速

在使用 CODING 的过程中,数联天下研发团队遵循着循序渐进的路线。首先基于 CODING 持续集成、制品库、持续部署建立持续交付流水线。区别于自建 Jenkins 与 Nexus, CODING 的持续集成与制品库开箱即用 ,研发团队通过持续集成构建好的 Docker 镜像可以直接推送到 CODING 制品库中,再通过持续部署拉取指定版本镜像进行部署。

CODING 持续集成在构建脚本语法上全面兼容 Jenkins,支持数联天下无缝地迁移 Jenkins 的构建到 CODING 中。并且支持 Docker 镜像的构建,在基础功能上满足了研发团队对构建制品的迁移需求。

在使用上,CODING 比自建 Jenkins 要方便许多,打开浏览器就可以使用,不需要繁琐的机器配置、构建环境搭建、软件插件安装。而且 CODING 提供了多地域境内外构建节点,并优化国内访问海外主流镜像链路,支持构建任务中开启缓存,大大提升了构建速度。在构建资源的灵活性上,既支持数联天下使用 CODING 云主机进行构建,也支持数联天下将使用中的腾讯云机器设置为构建资源。

在使用 CODING 制品库之前,数联天下团队基于开源项目自建制品库,在使用自建私服制品库常常遇到性能问题或易用性问题,比如一上传大容量的 Docker 镜像时,自建的制品库就常常服务不可用,导致后续一系列的版本发布受阻,使用 CODING 后这类问题就迎刃而解了。 CODING 制品库是专为生产环境打造的企业级制品库 ,无论是制品库的容量、分发效率都经过产品团队精心优化。数联天下团队将所有制品推送至 CODING 制品库,利用 CODING 制品库提供的版本策略、权限控制、安全扫描等能力对制品进行了规范管理。

不仅仅是 Docker,CODING 制品库提供了十多种主流制品类型,包括 Helm、通用文件、npm、Maven、PyPI 等等,可以支持研发团队多样化制品托管需求。同时制品库提供的精细化的权限设置,支持每个制品库设置项目内、团队内、公开的开放范围,针对多团队并行开发的场景,数联天下可以轻松地将通用组件设置为团队内开放,将项目独有的制品设置为项目内可见,既能加速公共制品在企业研发内部的共享与流动,也能确保项目独有制品的权限安全。

对于频繁进行商业交付的研发团队,安全也是商业客户关心问题之一。CODING 制品库除了解决数联天下团队的制品托管问题,还对制品的安全质量进行了规范。通过制品扫描设置质量红线标准,杜绝问题组件发布至生产环境,扫描方案还提供了详细扫描记录和缺陷统计,方便研发团队快速修复。这在一定程度上提高了制品的安全性,减少了应用在生产环境出现的安全漏洞问题。

接下来就是打通持续交付的最后一环——持续部署。通过持续部署,研发团队可以自动、频繁地将软件部署到各种生产环境,使软件产品能够快速地交付使用。

1. 清晰灵活的流程编排

数联天下运维团队首先根据测试流程、上线流程以及部署环境规划好每个应用的 部署流程 。针对开发环境、测试环境、类生产环境、生产环境分别创建不同的流程分支。基于 CODING 持续部署,可以快速地编排出串行或者并行的部署流程:例如针对类生产与生产环境,必须要在类生产的集成测试(自动化+人工)通过之后,才可以进入生产环境发布;而多地域的生产环境发布,就可以并行部署,提高效率。

基于 CODING 持续部署 清晰灵活的流程编排,应用所有的部署分支流程一目了然。

2. 人工审批加上自动通知机制

针对过去运维发布过程中的多环节、多审批、多等待的情况,数联天下团队根据发布流程的级别差异将测试、产品经理等角色加入审批环节,配合自动化部署过程和通知机制,解决了从前需要人工反复确认部署环节的问题;也解决了从前开发人员只能等待运维人员定时部署版本的难题,开发和运维人员都可以随时随地按需部署应用。

每个环节的通知除了支持常见的站内通知、企业微信、钉钉、Bearychat 等方式,还支持团队通过 Webhook 的方式接入企业使用的其它协作工具,满足团队的个性化通知需求。

3. 规范的制品版本规则

在项目紧张的开发周期当中,数联天下的制品构建地十分频繁,制品数量也在急剧增长,其中包含了开发自测的 snapshot 版本和正式转测的版本。如何确保测试环境、生产环境等能够始终选择主干发布的稳定版本,避免因为手误选到开发自测版本?通过在持续部署中的制品分支策略制定所选制品的规则,杜绝以往人工选择临时分支版本导致的错误情况。

4. 统一的部署控制台

在数联天下团队的日常应用部署管理过程当中,CODING 持续部署提供了以应用为视角的控制台。运维人员可以对所有应用的配置信息、基础设施、资源分配、部署流程进行全面管理,无需在各个项目视图之中来回切换。这对于需要面对繁多项目的数联天下研发团队来说, 统一的部署控制台面板,大大提升了应用部署管理效率。

在应用部署完成后,就可以在 Kubernetes 集群面板中方便地检查部署好的资源,包括集群内资源的工作负载情况。一气呵成的部署操作帮助运维或者开发人员一站式完成部署资源准备、部署流程编排、应用部署、部署后的检查工作。

紧接着研发团队将代码管理、项目管理迁移至 CODING 的代码托管、项目协同中。告别了过去的 SVN 代码管理,基于 CODING 代码托管进行 Git 式开发,基于代码扫描与 Code Review 建立研发质量的基线。切换到项目协同进行项目管理后, 真正打通了从需求->代码->制品->应用的全部链路 ,数联天下研发团队基于统一云平台真正实现端到端的价值交付。和以前基于多个工具自建研发平台的方式对比,统一研发管理平台带来的好处有:

基于 CODING 的 DevOps 实践,数联天下的交付带宽达到了较大提升。DevOps 实践给数联天下的研发团队带来的不仅仅是流程上、工具上的改变,也进一步加深了团队的业务共识。所有角色都坐在了一起:测试、运维、开发、产品、项目管理等,研究如何基于统一平台通力协作,按期保质地交付项目,服务好客户。

数据已经成为生产的要素之一

研发数字化不仅仅是自动化流程的搭建,更重要的是在数字化落地过程当中,如何将有机串联的研发环节发挥出 1 + 1 > 2 的效果?如何让研发数据服务于研发?

目前数联天下的研发团队已经将研发全流程切换到 CODING,慢慢积累的研发数据也给研发管理带来了新的指引。通过效能度量,可以清晰分析成员工作负载;通过仪表盘可以清晰看到代码提交数、事项完成数、构建次数、发布次数等等多个维度的数据展示。这些数据也将支撑着研发团队快速地调整和检视以适应更加多变的未来。

数联天下研发团队负责人告诉我们:“最开始选择 CODING,因为 CODING 持续集成全面兼容 Jenkins 的持续集成服务,支持 Java、Python、Node.js 等所有主流语言,并且支持 Docker 镜像的构建。这与公司现有的发布方式,架构体系相吻合。在使用了一段时间后,不仅仅是持续集成,包括 CODING 制品库、持续部署在内的 DevOps 工具给我们的研发流程带来不少提升,也期待 CODING 能够在研发工具链上给我们带来更多惊喜。”

在全面了解数联天下的 DevOps 实施路径之后,我们也发现企业的研发变革不是一蹴而就的,需要从流程上环环打通, 选择一个迁移成本低、使用门槛低、功能灵活的一站式研发管理工具,能够让变革事半功倍。

我们欣喜地看到,数联天下一直走在提升内部效率的道路上,这家志在提升各行业数智化水平的企业全然拥抱了研发数字化,我们期待 C-Life 凭借着变革初心与极速交付能力,逐步成为智慧生活的强有力支撑平台。在这场数字化颠覆中,CODING 也会坚定地与研发团队站在一起,依托 DevOps、云原生、敏捷等研发利器,帮助各行各业改进、提升并创新。

CODING DevOps 线下沙龙回顾一:DevOps 代码质量实战

11 月 22 日,由 CODING 主办的 DevOps 技术沙龙系列「质量」专场在上海圆满结束。在活动现场,四位来自腾讯等知名企业的技术大咖们分享了研发质量与效能的实战经验,与观众们共同探讨如何采取有效手段以保证和提高软件质量。

技术图片

本期沙龙回顾为大家带来的,是来自腾讯云 CODING 布道师杨周的议题——《DevOps 代码质量实战》

问题:人越来越多,代码越来越乱

技术图片

随着团队成员增多,每个人在缩进、换行、空格以及大小写方面有不同的习惯,导致代码越来越乱。代码风格问题尚且不致命,更严重的是这些问题:

  • Hard code:在代码中书写各种环境配置、链接、密钥,导致安全风险
  • 魔法数字(Magic Number):难以理解和维护
  • 代码行数过多:难以维护,违反面向对象的 SOLID 原则

不少业界大厂公布了代码规范,推荐大家直接采用,因为自己发明规范往往不够全面,很难服众。

技术图片

代码规范不只是缩进换行问题,通过强制约束圈复杂度、文件行数和方法行数,可促使大家按照面向对象的方式设计。

如何强制执行代码规范

有了代码规范,但怎么落地?是很多团队面临的问题。Lint 程序用来检查代码规范,各个语言(比如 Kotlin、Java、PHP)都有自己的规范和 Lint。

自动检查代码规范有三个时机:

  • IDE:最实时方便的,但需要所有人进行配置、某些 IDE 可能不支持
  • Git commit Hook:提交时,会调用命令行工具强制检查,优点是非常及时,然而存在可被删除的风险
  • 服务端:在 Git push 之后,在服务端进行检查,很可靠,但缺点是不够实时
    因此,建议同时使用这三种方式。

技术图片

在代码检查之后,如何处理?老项目有成千上万处不规范,很显然不能一次清理干净,让所有人停下老项目去清理老代码并不现实,而且一次改动太多文件的风险也很高。因此建议使用增量检查,尤其是 Java 增量检查方案比较复杂,详情可识别下图二维码阅读 CODING 文档

技术图片

服务端检查:建议使用持续集成(持续不断地把代码集成到主干,实现质量内建)。流程为:锁定 Git 主干,所有人开发功能拉取小分支,小分支提交后触发持续集成进行代码规范检查,通过之后再通知同事进行代码评审,通过这套流程来提高代码质量。CODING 持续集成兼容 Jenkins,图形化界面易上手,如果项目已经在用 Jenkins 可平滑迁移。

技术图片

代码整洁了,但结果正确吗?

很多项目到最后面临的困境——没有人敢改老代码。比如开发人员会把已有函数如get() 复制一份再修改,变成了 get1()、get2(),这种做法导致项目逐渐溃烂。根源在于没有人知道修改老代码会不会导致其他地方调用出错。

在开发和测试分离的团队架构中,一个负责任的开发者在写了代码之后要自测,然后提测给测试人员。但是后期大家逐渐会变得不耐烦,从自测 10 种情况到 5 种情况,再到只测一种,最后到完全不自测直接提测,所有的压力都慢慢转移到了测试人员身上。负责任的开发逐渐变成不负责任的开发,问题还是出在机制上。

国外十几年前就开始这个方案:测试人员转岗学编程开发,仅保留少部分的人工测试。开发人员自己写测试代码,测试覆盖率不达标(比如 80%)则禁止合并。

开发人员如何对自己的代码有信心?不是靠聪明才智,因为人总会百密一疏,即使顶尖的程序员也可能会犯最初级的问题,因此自己写测试代码才是最可靠的方案,测试代码覆盖了多种边界情况,即使其他人来改写代码也无需担心挂掉。

最晚什么时候开始自动化测试?

自动化测试很好,但是也面临困境:业务太忙,没有时间写测试代码。

从个人职业发展的角度,把手动操作 Postman 自测的时间用来写自动化测试代码,这样一来,自己的水平得到了提高,后续改代码的时候重测时间也得到了节省,不再是一直堆业务代码,难以成长。

以前中国的大公司项目质量普遍十分糟糕,因为前 20 年是 2C 的红利期,大家在快速抢占市场,但现在到了守地盘的时候,这两年大公司开始重视代码质量问题,建议大家为这个机遇早做准备。

从公司角度,主要看时机。比如 2C 项目逐渐成熟,用户量变大,线上的故障损失已经大于多招开发人员的成本,或者随着项目功能逐渐增加,回归测试时间越来越长,如果一个网站一天上线多次,一天把整个网站所有功能测过来是不实际的,因此自动化测试才能保障持续的高上线频率。而 ToB 项目初期出现了严重 bug 可能就要赔偿客户,因此初期就需要自动化测试。

代码质量评级标准:从下图中可以看到,“优”级别的代码质量标准圈复杂度最多允许 5,类行数不能超过 50,函数行数不能超过 10,测试覆盖率需达到 90%。CODING的合作伙伴优普丰提供了 CSD 认证培训,能够帮助开发者们达到相应的标准,可识别二维码了解详情。

技术图片

那么本次的分享就到这里,大家可以前往 B 站观看演讲视频并获取完整 PPT,或者前往 CODING 了解更多。


以上是关于CODING X C-Life:DevOps 加速企业数智化的主要内容,如果未能解决你的问题,请参考以下文章

CODING DevOps 线下沙龙回顾一:DevOps 代码质量实战

演讲实录 | 手把手教你Jenkins开发进阶,加速DevOps落地

CODING 与悬镜安全达成战略合作,引领 DevOps 向 DevSecOps 创新模式升级

腾讯云推出一站式 DevOps 解决方案 —— CODING DevOps

CODING DevOps 高可用实践,保障服务稳定的“定海神针”

CODING DevOps 高可用实践,保障服务稳定的“定海神针”