背景
掌讯信息技术有限公司创立于2009年,是一家提供企业信息化咨询、创新型软件产品、电商代运营服务,标准化管理、快速发展的高新技术企业。当前公司正处于企业互联网市场突破转型重要阶段,希望将更多精力转移到业务创新,提升开发和交付效率,低成本试错。因此选择一套低门槛开箱即用的持续交付、快速部署&运维平台尤为重要。
面对的挑战
•组织、人员权限管理复杂
公司是阿里云的重度用户,钉钉,阿里云等,Jenkins的权限管理独立一套,与其它系统不能很好的对接,维护成本非常高。
•好的工程实践、流程规范不容易复用,质量更无法保证
代码开发过程中加入了阿里巴巴P3C规范,与集成工作流没有打通,不得不依赖人工介入的效果,当项目的时间紧,任务重,往往执行不到位,效果无法保证,形同虚设。代码质量很难保证。
•FTP手工发布效率慢,Jenkins需要编写大量的脚本,降本提升效率成为了瓶颈
公司在很长一段时间在使用Jenkins作为自动化部署工具,Jenkins易用的插件化模式和灵活的流水线脚本编写能力是我们一直使用他的原因。不过对于我们这种0运维人员的小团队来说,一些平台细小的不便性也会给团队效率带来很大的负面影响。Jenkins的流水线脚本编写维护的繁琐性以及第三方平台(服务)与Jenkins整合的复杂度都给我们带来不小的麻烦。
•缺少专职运维人员和微服务改造实战经验,研发运维效率不高
公司未设置专职运维人员,在做业务创新同时,微服务架构同步改造进行中。采用自建微服务架构+APM,技术门槛和人力不足很难在短时间成功落地。急切需要一条快速上手的平台支撑,需要最大限度屏蔽底层IaaS, 容器,以及常用微服务套件的学习成本。
•测试开发环境和生产环境的闲置计算资源较高
长期保有固定的IaaS资源,单台ECS单部署应用,导致资源利用率很低,存在较多的闲置浪费。
解决效果
总体上来说,掌讯信息公司在与云效&SAE共建之后,通过Codeup自动化代码检查提升了代码质量,降低了生产的故障,FLow自动化流水线、SAE的接入不但降低了成本,同时提升了交付效率。
降成本
•小成本投入提高质量管理能力和持续交付能力
免费使用的Codeup代码库让我们节省了自建Git代码库的成本,Codeup中集成的代码审查和安全审查模块又让我们节省了质量管理的投入成本。免费的流水线Flow让我们节省了原本在Jenkins中投入的环境成本。这些还只是节省的有形成本,对于平台整合后效率的提升所节省的成本更是不可估量。
•低成本高质量玩转微服务架构
对于我们这样的小团队想要玩转微服务架构一直是一个可望不可即的事情,直到发现了阿里云的SAE(Serverless应用引擎)产品,SAE(Serverless应用引擎)节省了自建微服务架构的ECS成本。基于秒级弹性能力,无需长期保有固定资源,按需启停和自动弹性、按分钟计费,极大的提升了资源利用率。使用SAE(Serverless应用引擎)后,公司单从硬件成本上就节省了50%。
提效率
•SAE(Serverless应用引擎)-- 从0到1的高效体验
SAE(Serverless应用引擎)提供了应用托管和应用监控的开箱即用的体验,帮助我们关注业务开发而非底层资源的运维,节省了大量的人力成本。目前,我们通过 SAE 上线了 5 个核心业务:商品中心、用户中心、销售中心、采购中心和库存中心。
•云效Codeup代码库--加速你的code review
在Codeup代码库中code review是在每一次commit后自动进行审查,和我们之前的集中时间,集中人力做code review工作相比,分散在commit后的自动审查模式更节约时间,并且自动化的触发模式减少了人为参与产生误判的可能性。
•云效Flow--高易用性,高集成性
使用云效Flow产品后很多问题迎刃而解,可视化的流水线配置让之前繁琐的脚本编写工作一去不复返。Flow高度集成阿里云产品线,在流水线Flow中轻松集成我们在阿里云使用的SAE环境。我们曾尝试让一名有3年工作经验的普通的开发人员在Flow中构建一个Java测试应用部署的流水线,结果他在没有查看任何文档的情况下很快的完成了流水线的配置工作。这些体验都让我们切身感受到Flow产品的高易用性和高集成性。
提升质量,减少故障
以前团队中的code review工作只能指定专人在合并代码后执行审查任务,并根据生成的审查报告统一对问题进行修订,在使用云效Codeup代码库后,代码审查工作被分配在每次commit后自动执行,以前统一的审核时间被分配在团队中每个人commit代码后自动执行,不但减少了人员参与的人力成本而且减少了code review工作执行的时间成本,大大提高了工作效率。由于整个code review工作提前到了代码commit阶段,将发现并解决代码潜在问题的阶段提前到了代码合并之前,这样就减少了在后续环节中出现遗漏问题的可能性,这里不得不提一下Codeup审查代码阶段包含的敏感信息和依赖包漏洞扫描功能,这两个在Codeup中自带的安全扫描功能,不但调高了代码质量的安全性,而且潜移默化的提高了团队的安全意识。
项目对比:
对比项目 | 原来 | 现在 |
代码规范评审 | 代码评审环节滞后,人为控制环节多。 | commit自动化评审 |
代码安全评审 | 缺失安全评审工作 | commit自动化安全评审 |
发布方式 | Jenkins手工编写流水线脚本 | 高度可视化操作--简单 |
Jenkins通过API方式集成阿里云产品(SAE) | 高度集成阿里云产品(SAE)--便捷 | |
分布式环境建设 | 购买ECS设备构建环境 | SAE无需购买ECS,按资源使用量弹性付费 |
分布式环境运维 | 自建运维环境,集成多种运维工具 | SAE提供统一运维平台,高度集成阿里云运维相关产品。 |
我们具体是怎么做到的呢?
第一步:云效企业级成员权限管理,做到三级安全防控
摒弃之前代码库、持续集成平台(Jenkins)、质量管理平台,多平台多用户的方式,统一在阿里云平台完成用户管理。通过如下三层权限管理做到安全防控。
1、企业成员、角色权限管理
2、Flow及Codeup角色权限管理
3、Flow及Codeup成员权限管理
第二步:逐渐完善代码质量检查,做到质量可控
3个阶段的代码检查、代码提交自动触发
开发阶段Codeup代码提交(commit)自动代码检查,测试环境部署阶段流水线(Flow)添加自动代码检查环节,生产环境部署阶段流水线(Flow)发布任务执行前添加安全检查任务。
开发阶段使用Codeup如下图。
第三步:测试、正式二条自动化流水线实现持续交付
测试、正式环境流水线集成SAE(Serverless应用引擎)环境,无缝结合阿里云产品,如下图。
测试环境流水线使用如下图。
生产环境流水线使用如下图。
结语
最后,感谢云效+SAE这两款工具及官方团队给予我们的支持,希望在未来更加深度的合作中,掌讯信息和云效+SAE都能为更多团队的交付效率提供更多更好的经验。
企业创新要做的是成长速度快于消费者需求变化的速度,所以掌讯信息深感依靠自身摸索固然也可以持续提升能力,但面临的挑战要求能力的提升也必须更快、更好。在寻求提升开发和交付效率,低成本试错中,掌讯信息发现阿里经过数年互联网研发实战,已经总结出了一套高效能的研发思想、流程及工具,那就是阿里云效+SAE。
持续交付、降本提效是一个很大的主题,一篇文章要讲透是不够的,只是简单分享了我们在这个过程中遇到的几个关键问题。掌讯信息在实践中其实都在摸着石头过河。希望大家可以多交流,共同探索互联网交付效率的成功模式。
作者介绍
乔亚浩,2009年加入石家庄掌讯信息技术有限公司,从业务开发至产品管理,现任职「掌讯企业智能服务部主管」。先后承担多次技术攻坚及推动技术演进:前端混合开发技术落地,产品后端微服务化改造、服务自动化构建及容器化部署、云效CI/CD落地等。
本文内容非阿里云官方提供,如您发现本文档存在侵权内容或其他问题,请提供相应证明材料并在本页面内提交反馈信息,阿里云会协调或通知相关作者进行处理。