云场景实践研究第76期:南京路特

本文涉及的产品
云效 DevOps 流水线,基础版人数 不受限
云效 DevOps 代码管理,基础版人数 不受限
云效 DevOps 测试管理,基础版人数 不受限
简介: 在和阿里的云效平台结合之后,南京路特成功解决了困扰已久的成本问题、管理问题和效率问题,最终年节省20-25万,同时简化了流程、提高了效率。本文将结合南京路特的实践经验带领大家一同了解中小团队持续集成之路。
更多云场景实践研究案例,点击这里: 【云场景实践研究合集】联合不是简单的加法,而是无限的生态,谁会是下一个独角兽
在和阿里的云效平台结合之后,南京路特成功解决了困扰已久的成本问题、管理问题和效率问题,最终年节省20-25万,同时简化了流程、提高了效率。本文将结合南京路特的实践经验带领大家一同了解中小团队持续集成之路。
通过阿里云系列服务及本身架构上的调整,目前在持续集成方面的成本上一年大约可以节约20-25万左右。通过与钉钉等办公产品的有机结合,让持续集成的流程性变得更简单,且集成的过程变得更敏捷了。

采用的阿里云产品
阿里云云效
阿里云应用配置管理 ACM
阿里云钉钉企业版

为什么使用阿里云
通过结合阿里云平台找到敏捷开发与持续集成的平衡点。
使用 阿里云云效平台降低构建成本、简化维护流程。
借助 云效平台的持续集成进行架构优化。
通过与 钉钉等办公产品的有机结合,让持续集成的流程性变得更简单、集成的过程变得更敏捷。

关于南京路特
南京路特软件有限公司是江苏省民营科技企业,公司致力于媒体融合发展解决方案:报业系统集成、全媒体新闻采编系统、内容发布网站CMS系统、数字报系统、智慧掌媒系统APP应用、数字发布系统及软件开发等项目的集成。 路特公司把自己定位于专业产品增值与应用服务提供商,公司以稳定的报业用户为背景,凭借技术人员多年从事报业系统集成、计算机软件产品开发和销售的丰富经验,矢志成为我国优秀的媒体融合发展解决方案服务商。

南京路特的痛点所在
对于南京路特而言,在没有和阿里的云效平台结合之前所遇到的最为核心的3个问题就是成本问题、管理问题和效率问题。
85ba211f4bb9a84ff8d0605774e4b53a93bf66fd
这3个问题更加细化拆分之后就是下图所示的几个问题,也是一般中小型团队可能会遇到的问题。
142c233c8ab0f777a58a62c8d1a3d908ae5af984
人力问题。首先,在中小型企业中,技术管理者会有很强烈的想法让专门的人来处理代码合并以及审查等工作,因为经常会出现因为某次发布没有做好代码审查导致出现故障的情况。因此希望在持续集成开始的道路之前就有专门的人来解决代码审查和合并问题。
资金问题。做持续集成将会面临一大堆的工具链的构建问题,这些工具部署完成之后是会带来成本的,首先是软硬件成本,因为无论是购买云服务器还是在本地搭建物理机来运行应用,都是会产生成本的。随之而来还会产生运维成本,因为只要是软件产品都是会出问题的,出现问题时需要人工解决,而人工最终也会转变成资金成本。
时间问题。为什么说在持续集成道路上一定会遇到时间问题呢?简单而言,使用一堆工具构建持续集成的工具链,最终实践的时候就会发现工具链会天天出问题,也可能是方法论思考的不是很透彻,而这些事情是不可能在做架构之前全部都预料到的。而一旦出现这些问题就需要拿出时间解决问题,这就会造成时间成本的上升。
效率问题。路特曾经遇到过一个问题就是在需要发布版本的时候,从开发、运维到测试,都非常希望整个公司的所有人都在场。出现这样的顾虑是因为过去在发布时所设计到的面非常广泛,会涉及到测试、打包、发布以及线上环境的替换等工作,如果这个过程一切顺利,只需要测试和运维这两个岗位配合就可以了,但是事实上却会遇到一些问题,比如开发人员在开发时使用了本地定制化的工具,而服务器上没有这个工具,而测试人员在本地进行测试时也忽略了这个问题,一旦发布到正式线上就会出现Bug,这时候发布失败就需要进行回滚。而如何处理这个Bug则需要决策者参与,需要决策者来判断是这个修复这个Bug的紧要程度。而如果需要现场修复Bug时也需要开发人员在现场解决紧急的问题。这样就从两个人的岗位变成了四个人的岗位,所以持续集成如果做不好带来的最大问题就是效率的下降。
管理问题。对于中小企业而言,往往没有专人负责管理问题。往往是新员工在HR那里办完手续入职之后,到部门主管那里用邮箱开通一系列工具的账号。如果企业拥有SSO,那么可以将这一系列工具串联起来使用一个账号,但是大部分中小型企业却不会自己搭建一个SSO门户管理整个企业内部的账号问题。另外一个问题就是代码权限,SSO解决的是账号一体化登录的问题,却无法解决代码权限问题。而这就造成需要一个权限非常高的人员每天守在电脑边为团队成员管理代码权限,而如果不管理权限,给每个人都是最高权限更会出现不可预测的问题。

为什么选择阿里云?
通过结合阿里云平台找到敏捷开发与持续集成的平衡点
8911d4868258c619506fb265923b4263ab6240e5
在做持续集成的时候所需要面对的第一个问题就是如何协调敏捷开发与持续集成的关系。首先的一个问题就是需求及Bug如何尽快进入开发流程。路特是一家服务于媒体大数据的B2B公司,主要提供SaaS服务,所以需求的来源非常广泛,同时Bug来源也非常广泛,不光是测试人员会发现Bug,用户也会发现很多Bug,很多的需求和Bug都可能会来源于终端用户。而终端用户提出的问题要么是通过APP内部的问题反馈收集到的工单,要么就是直接打电话过来投诉。当问题反馈已经收集到了,如何将其尽快进入到流程中呢?路特在没有使用云效平台之前有自己的一套类OA系统来解决问题,将公司内部的Bug工单和需求都做了归类汇总,处理完成之后导入到JIRA里面去。当接入到云效之后,这件事情可以在云效平台里面创建需求和Bug并形成看板,之后再实现。
第二个问题就是开发成果如何快速试错。有时产品经理或者项目经理会遇到这样一个问题:有一个产品或者功能并不确定最终市场的反馈情况,但是觉得可以试一试,希望请开发人员在一周之内开发上线并让产品经理看到最终的用户反馈报告。正是因为这样的需求,导致之前路特每年也会上一两百个小模块,而到了第二年的时候就是大浪淘沙,一两百个小模块最终只剩下三五十个,但是中间的过程成本却是存在的,因为如果不上线就不知道产品的最终反馈如何。就路特本身而言,肯定会比自己的媒体客户更懂技术,但是在对行业的理解上却不如客户,而行业客户却未必能够用技术语言将需求描述得很好,所以更需要试错的过程,这就产生了对于持续集成生态链快速响应的要求。在使用云效平台之前试错是很麻烦的,即便是实现一个小的需求往往需要经历一两周才能随着大版本一起上线。
第三个问题如何依托持续集成完成快速迭代全流程。在持续集成搭建之前,在构建部分往往是“东一榔头,西一棒槌”的状态,在构建完之后通过Jenkins的发布组件发布到服务器,之后进行统一的批量更新。在接入到云效之后,就可以通过比较好的流水线的方式解决整个持续集成的发布迭代的过程,进而简化了整个过程。从需求、Bug进入到 云效平台,到开发人员定向地针对这个需求拉分支进行单独开发、Push并触发自动构建、测试环境的自动部署等一系列流程完全都是自动完成的。

使用阿里云云效平台降低构建成本、简化维护流程
1f4819b2de6c92cfa0e06dffb930ab3fd6a31d64
如上图所示的是现有流程的梳理。在代码的管理上,会确保系统库中有三个代码分支:dev、rc和release,这三个分支是固定的,并且不允许任何开发人员push代码,因为代码的破坏往往发生在不经意的无心之失。现有的流程中,首先开发人员会拉一个dev分支并进行命名,之后进行开发,开发完成之后合并到dev上去,所以永远不可能出现将dev拉下来修改再提交的情况。当将代码合并到dev之后,在云效平台会完成一个dev代码的构建和测试,这部分根据选择的编程语言不同会产生不同的构建效果。单元测试通过之后会推送到dev测试环境,也就是将当前代码进行构建并运行单元测试,之后通知容器集群将镜像跑起来,然后就可以拿到配好域名的URL,之后就可以进行线上dev分支的代码测试。路特现在使用了 阿里的ACM,可以帮助实现分布式的配置管理。因为容器的代码源都是一样的,但是又是无状态的,所以在代码中不可能出现写死使用的数据库或者缓存的情况,所以对于这套代码,如果可以在测试环境运行应该就能在正式环境运行,可以借助配置管理工具实现环境的区分和隔离。
这套流程执行起来是比较规范的,是通过平衡效率和风险实现的架构。但是问题是路特的产品线比较多,这就意味着整套流程需要跑四五次,所以如果不使用 云效平台则会使得成本比较高,维护也比较麻烦。

借助云效平台的持续集成进行架构优化
基于 云效平台的持续集成,路特也调整了自身的整体架构。之前没有使用Docker容器技术,而现在全部改成了微服务和容器的模式。用户的请求从公网进来到容器集群中去,容器集群再去分应用,应用里面有服务,服务里面有容器,目前 云效平台可以做到在服务粒度的持续集成,这个粒度已经非常细化了,这离容器已经非常近了。

钉钉+云效=更高效
路特结合自身的业务痛点在架构上进行了一定的调整,通过 钉钉+云效可以完美地解决所有的问题。首先是代码权限问题, 云效接入 钉钉企业版之后,可以为新入职的员工分好组,员工就可以自动获取该组对应的Git代码。与此同时也解决了账号的问题,因为云效是一个一体化的平台,代码的构建工作全部都是在云效上面做的,使用钉钉账号就能进入云效平台,并且基于钉钉账号就能配置好代码管理权限。此外,对于流程控制而言,结合钉钉和云效开发也会非常方便。

迁移上阿里云后的成效
通过阿里云系列服务及本身架构上的调整,目前在持续集成方面的成本上一年大约可以节约20-25万左右。
通过与 钉钉等办公产品的有机结合,让持续集成的流程性变得更简单,且集成的过程变得更敏捷了。
多产品、多项目的持续集成通过云效的自定义流水线,可以解决原来的一些不够敏捷的问题,降低了中层成员的时间成本并提高了效率。

原文发布日期:2017-12-15
云栖社区场景研究小组成员:董普庆,仲浩。
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
相关文章
|
人工智能 物联网 大数据
云场景实践研究第89期:中信集团
中信云平台从立项到上线仅用了1个月,用户数从0发展到13万仅用了5个月。快,是中信2016年的工作总结重要的一项。如今,中信集团正在通过云计算、大数据、人工智能等技术实现互联互通的数字化建设,并通过数字化实现业务转型,找到新价值定位,形成新商业模式。
3177 0
|
监控 BI 分布式数据库
云场景实践研究第81期:大搜车
2017云栖大会HBase专场,大搜车高级数据架构师申玉宝带来阿里云云数据库HBase在大搜车金融业务中的应用实践。本文主要从数据大屏开始谈起,进而分享了GPS风控实践,包括架构、聚集分析等,最后还分享了流式数据统计,包括数据流、数据合流和服务监控等。
2035 0
|
分布式计算 物联网 大数据
云场景实践研究第65期:五叶草
五叶草利用阿里云MaxCompute,为某世界500强快消品零售巨头搭建了企业级数据仓库。依托其强大的海量数据处理能力,有效降低了时间人力成本,提升了工作效率,使客户可以将更多的精力投入到业务升级中去。
1971 0
|
监控 数据可视化 大数据
云场景实践研究第86期:美甲帮
借助阿里云的力量,美甲帮实现了针对百万用户的精细运营,并且在业务上更敏捷、更智能、更具洞察力,还能够快速响应新业务的数据及分析需求。
2103 0
|
存储 分布式计算 安全
云场景实践研究第84期:东润环能
让东润环能选择阿里云的原因,除了阿里云强大的云平台能力之外,还有阿里云数加MaxCompute的全方位服务能力及其稳定安全的表现。最重要的是采用阿里云数加,东润环能可以将所有精力都放在业务上,节省了自建机房在学习成本、开发成本、管理成本、投入机房资源和运维成本的总成本,将更多的精力和成本投入到业务方面。
2345 0
|
运维 关系型数据库 数据库
云场景实践研究第52期:畅游
混合云在安全上有很重要的优势,阿里安全体系很健全,混合云模式既保证了用户线下的场景核心需求,同时依托阿里安全防护体系,将安全堡垒又加固了一层,混合云可能比常规的云上云下打通更实际,优势更明显。借助阿里云提供的混合云解决方案,畅游在游戏的维护成本等各方面都有很大的进步,其故障修复和应用上线的时间速度提升几十倍甚至上百倍。
2516 0
|
负载均衡 API Docker
云场景实践研究第14期:南京路特软件
通过使用阿里云容器服务,较好地解决了其所面对的敏捷、成本、可靠这困扰南京路特的三大核心问题。当然,在这一过程中,南京路特也在Docker实践中不断踩坑,也不断地总结经验教训,并总结出了适合中小企业实践Docker技术的两个常用场景。
1976 0
|
新零售 存储 安全
云场景实践研究第62期:华栖云
在云栖大会成都峰会上,华栖云联合阿里云发布“云上电视台”解决方案,面向电视台新媒体部门,面向视频PGC/UGC,在阿里公共云上,一站式提供从直播、点播、短视频的生产、制作、发布到用户数据存留分析、精准推送、视频内容的生命周期管理等全套的解决方案。
2345 0
|
安全 NoSQL 大数据
云场景实践研究第51期:趣店
对于像趣店这样的创业团队而言,由于成本问题,自建IDC显然是不现实的,所以趣店在创业之初就选择了上云。如今,趣店对于阿里云存在着深度依赖的关系,只要有需求一来,技术团队首先会去思考阿里云有没有这样的服务,这样的方式帮助趣店将精力集中在自己的业务本身,使得产品能够迅速得以迭代。
2124 0