摘要: 初创企业在业务快速发展中,如何利用有限的资源,作高效快速迭代?如何减小手工操做的依赖,提升发布效率,将跨组织的项目沟通效率提高50%?web
云小妹导读:初创企业在业务快速发展中,如何利用有限的资源,作高效快速迭代?如何减小手工操做的依赖,提升发布效率,将跨组织的项目沟通效率提高50%?服务器
最近,初创企业爱赛因斯在云效公有云上试点,实现初始项目2天上线的可喜成果。负载均衡
本文做者:孙志梁,爱赛因斯技术总监,主要负责各业务线的技术开发和团队管理工做。分布式
案例重点介绍工具
经过云效流水线功能大大提高了内部研发项目的发布效率和质量,实现初始项目2天快速上线。外部托管项目经过云效需求管理、缺陷管理功能,有效提高了工做效率,在与外部客户、供应商的沟通效率上提高了50%以上。学习
关于爱赛因斯区块链
爱赛因斯是一家以创新驱动的数字化信息服务集团公司,旗下拥有PMCAFF、外包大师、Nework、知一咨询、光合孵化器、X-CLUB等子品牌,业务类型涵盖社区、活动/会议、培训、产品咨询、软件信息及研发、区块链及相关服务、人才顾问及投资、创新项目投资孵化等。已得到尔法公社Pre-A轮融资。测试
其中外包大师做为一个互联网产品技术外包管理服务平台,为委托方提供从产品咨询、设计、开发直至上线的全流程服务,因此除了咱们内部研发项目外,还有不少外部客户委托的项目,这一类项目由甲方把项目需求委托给外包大师,外包大师会匹配和签约外部供应商,而且对项目进行管理验收,完成甲方需求。阿里云
爱赛因斯的痛点命令行
内部项目
项目依赖较多手工操做,发布效率低下并且难以造成知识积累。在项目上线时,构建部署主要都是人工在服务器上进行,安装构建工具、执行构建过程均可能会遇到各类问题和进行解决,耗费时间比较长,即便有文档或者操做手册,又每每存在更新不及时的问题,新同窗通常要经过屡次询问和本身登陆服务器操做等方式才能肯定正确的构建和发布步骤。
发布出错率高,没有有效的回滚机制。不少项目类型的开发语言是PHP等脚本语言,部署方式是在服务器的部署路径下直接更新代码,而且直接在部署路径进行构建,一旦操做错误或者遗漏,就会影响线上服务。同时一旦发布出现问题,判断回滚的版本须要人工根据代码提交记录进行肯定,耗时长且容易回滚出现新的问题。
外部项目
没有一个很好的协同管理工具能把流程串起来.外包大师项目总体项目周期偏长,大部分项目周期都超过1个月,以前对于交付链条很长的项目管理过程,更多的是经过一系列不一样的工具管理项目实施的不一样阶段,好比石墨文档、Teambition、Project、Jira等,很长时间内,并无找到一个很好的协同管理工具能一次性的串起这个流程,并解决其中的众多问题。如:需求变动管理,版本迭代管理、成员权限管理、代码分支管理、问题追踪管理等等。
采用了哪些阿里云产品?
为何选择阿里云云效?
内部项目
对内部项目,咱们主要想提升发布效率和稳定性,同时减小构建和部署环节对人工操做的依赖。考虑过三个方案:
评估下来方案一虽然比较灵活,能够知足需求,但初始的安装配置成本和维护成本都比较高,并且做为基础设施服务一旦出现问题,团队目前并不擅长解决,因此放弃。
方案二codePipeline很早以前使用过,功能相对单一,主要提供流水线服务,界面操做也不够友好,和云效相比,确定是优先选择功能更丰富,使用更友好的云效。
在云效的使用上,咱们采用了新项目先尝试,老项目后迁移的思路,一方面积累云效使用经验,同时也避免由于研发流程调整影响已有项目的迭代和稳定性。
目前咱们一个项目在云效上从开始准备部署到可访问,通常须要0.5天~2天(取决因而否以前已经配置过相同类型的项目),会经历如下步骤:
第一天
1.采购和添加服务器 (耗时1h,若是以前没有相同环境,须要安装运行环境0.5d)
建立用于测试环境或者生产环境的ECS,在云效企业设置中添加主机到云效。咱们针对不一样的语言运行环境建立了不一样的镜像,作到购买ECS后,不须要额外配置就能够立刻投入使用。
2. 建立云效应用 (耗时1h)
每一个能够独立进行构建和部署的研发项目,注册为一个应用。指定代码仓库、所属项目以及项目语言类型,在云效中建立应用。
3. 配置流水线 (耗时2h)
云效配置流水线页面
咱们的流水线通常只保留两个步骤,构建和部署,测试环境的部署和正式环境的部署拆分为多个流水线。若是是以前没有配置过的项目类型,构建命令和部署命令通常是须要调试时间比较长的:
a) 构建命令,不一样语言构建命令不同。咱们公司主要使用的PHP七、Java八、Nodejs8在云效默认的构建环境已经都支持了。
b) 配置应用环境,为应用的每一个环境指定服务器和部署路径、部署命令。
构建命令和部署命令均可以,能够先在服务器或者本地手动执行构建成功后,再配置到云效,后续相同类型的项目能够进行复用。
次日
4. 构建和部署 (耗时1h)
云效构建部署页面
流水线编辑完成后,就能够运行调试了,顺利的话能够一次性成功,实际是每每由于代码问题或者服务器环境致使不能一次性成功,好在云效在构建和发布阶段都有详细的日志输出,能够看到构建命令和部署命令的执行过程和输出,用于排查和修复问题。
5. 访问入口配置 (耗时1h)
流水线运行成功后,应用已经能够对外提供服务了,咱们的大部分项目都是web项目,这个时候会新建负载均衡指向新部署的服务,接着配置域名到负载均衡的IP地址,就能够提供给测试同窗测试或者用户访问使用了。
6. 异常回滚 (耗时<1h)
平常发布会,不免会有一些状况致使线上服务运行异常,
借助实时业务监控(arms),能够把关键错误日志、核心业务指标有效监控起来, 一旦发布后收到报警或者指标异常 ,在云效中直接操做回滚就能够,云效的回滚会清晰的列出历史版本用于选择,同时回滚直接使用以前构建成功的结果,不须要从新构建,回滚速度比手动服务器操做要快出一个数量级。
在经过新项目中熟悉了云效的使用并体验到云效带来的便利后,咱们把老项目也进行了迁移,这样在云效中,就能看到公司全部的研发项目,很大程度上避免了黑盒子项目的存在。
外部项目
在外面委托项目中,咱们做为平台方,须要协调甲方客户和乙方供应商团队,云效平台正好解决了在线协同问题,把甲乙方很好的联系在一块儿。
以下图:可经过成员管理把甲方参与人员和乙方开发团队添加到项目成员中,甲方能够看到项目实际进展,乙方也能够及时更新项目进展。
云效跨企业协做项目沟通
进度管理:当项目经理将工做包拆解到具体模块并指定开发负责人后,负责人可按实际完成状况勾选任务,就能够相对准确的显示项目的实际进度。
云效进度跟踪页面
范围管理:对于项目实施过程当中,新增的需求,产品经理能够经过手动添加和自动导入两种方式更新或调整需求,并按模块和版本进行分配责任人,以下图:
云效项目权限分配页面
效果检验:开发完成的代码推送到远端分支,就能够自动部署到到测试环境,平台QA和甲方客户就能够可及时检验效果。
云效页面截图
BUG追踪:测试负责人能够添加BUG修复任务到缺陷模块 并指定任务负责人,对于开发团队成员,能够单独查看本身名下的待解决BUG,以下图:
云效页面截图
得到的成效
云效平台在咱们的内部研发项目的迭代开发和外部托管项目全周期管理中发挥着重要做用,从使用先后的一些数据显示研发效能上有了显著提高。
内部项目
发布效率:10分钟的手动命令行操做 -> 5分钟的界面自动化操做。
回滚速度:10分钟人工确认操做-> 2分钟自动化操做。
发布质量:手动发布/回滚出错或者遗漏:10% -> 无。
新人学习发布上手时间:2天->0.5天。
研发项目基础信息:我的经验和口口相传 -> 清晰可靠的系统记录。
外部项目
多方协同再也不须要经过每日例会或日报的形式汇报项目进展,参与项目的甲方、平台方、分布式研发团队均可以直观的看到项目进展,沟通效率提高了50%以上。
需求可按模板导入,对于大量需求须要初始化录入时,导入的功能大大提升了效率,以及新增需求的录入、管理等,相比以前人工经过Excel更新功能列表并同步给项目团队,总体范围管理的效率提高了30%。
代码的自动化构建部署,验收效率提升了20%。