热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

再见了,我的散装研发管理平台;再见了,4台ECS

周末的时候,收到好几个云服务器临近过期的通知短信,准备续个费,居然都要大几千!因为这几个都是以前低价抢购的,掐

周末的时候,收到好几个云服务器临近过期的通知短信,准备续个费,居然都要大几千!因为这几个都是以前低价抢购的,掐指一算,如果都续费的话,要蚕食好多利润!

作为一名自己养活自己的独立开发者,节省成本是必备技能,不然哪来可观的利润?于是,就开始琢磨着做一些架构上的调整,看看能否在这次服务器资源减少的情况下,继续低成本的运行目前还在跑的业务。

因为业务产品是最重要的,所以这块基本不能动。那么能动的就是一些周边设施了,比如:做任务管理、文档管理或持续交付的工具。在调研了诸多 SaaS 产品和云服务之后,最后选择了阿里云的云效全家桶。为什么最终选择了云效全家桶呢?核心原因还是“全家桶”三个字,基本上我想要的研发管理功能都能否覆盖了。那么这个全家桶具体能做什么呢?下面给大家分享下我改造前和改造后的平台结构,给大家一个直观的认识。

老架构:散装集成

老架构的建立基本上借鉴了以前在公司里搭建基础平台时候所用的常用开源产品和商业产品,按功能来分,主要有以下这几个:

  • 代码仓库:GitLab
  • 持续集成:Jenkins
  • 任务管理:JIRA
  • 文档管理:Confluence

Gitlab 和 Jenkins 都是开源产品,免费且应用广泛,是大部分公司的散装方案中会囊括的。JIRA 和 Confluence 虽然是商业产品,但初级版本的认证只需要 9.9 美元,对个人和 10 人以下小团队还是非常友好的,由于 JIRA 强大的流程配置功能,可以将其作为整个研发管理平台的门户。

补充:有很多开发者对于 JIRA 只认为是一个任务管理的工具,不太了解 JIRA 的工作流功能,这里简单说明一下。JIRA 之所以强大,有很大一点就是得益于其强大的工作流配置功能。由于 GitLab、Jenkins 等这些工具都有 WebHook 或 JIRA 市场下的插件支持,我们就可以很方便的把这些工具的使用步骤串联起来。这样我们在软件研发过程中的业务需求、任务拆解、代码版本、构建部署等一体化过程都可以 JIRA 这样一个单一入口中来完成。

所用资源:由于之前抢购的各个服务器配置都不高,大多是 1C2G、2C4G 的。为了稳定运行就都做了分开部署,一共消耗了 4 台 ECS。

方案优点:

  • 学习成本低:这些产品都是互联网公司中非常常见的,大部分开发都不会太陌生。同时这些软件的生态都非常健全,都有很丰富的插件市场来适应用户的各种需求。
  • 产品成本低:这里用到的产品不是免费就是很便宜,所以成本的基础成本不高

方案缺点:

  • 部署成本高:因为需要安装的软件产品多,部署成本较高

新架构:云效全家桶

在决定使用云效全家桶之后,接下来要做的就是对老架构中用到的各个产品找到替代的解决方案。下面跟着我的调研使用步骤,来看看这一个个产品的对应关系吧!

代码仓库

代码仓库在云效的解决方案中是一个名为云效Codeup 的产品,产品地址:
https://codeup.aliyun.com/ 。如果你跟我一样,是要做仓库迁移的话,非常简单。如下图所示,Codeup 为各种常用平台都提供了专用的导入方式,对 Git 管理不是特别熟悉的小伙伴也可以根据提示轻松的完成代码仓库的迁移。

在点击“导入代码库”之后,我们可以看到下图界面,基本上常用的一些 Git 管理平台都已经支持,选择你要迁移的源平台,然后根据官网文档,找到对应平台需要获取的认证方式做好配置即可。

在完成认证信息配置好之后,Codeup 就会从对应的平台获取所有项目仓库,接下来只需要逐个选择你要导入的仓库点击“导入”按钮,就能轻松完成代码的迁移。

这块比较简单,基本所有的 Git 管理平台都可以支持类似的迁移操作。也不算特别的亮点吧,光从代码管理上来说,主要贡献就是为这次的改造计划节省了一台 ECS。

持续集成

完成了代码迁移之后,接下来开整持续集成部分,对应的产品是云效 Flow,产品地址是:https://flow.aliyun.com/。

在云效 Flow中创建 CI/CD 的流水线非常简单,因为它提供了各个主流开发语言的多种持续集成案例的配置模版。

这里我尝试了配置一个 Spring Boot 后端应用部署到 ECS 上,只需要选择上图中的第一个推荐模版。就会出现如下图的流水线配置界面,点击每个步骤都可以进行细节配置

点击每个步骤都可以进行细节配置,比如:如何用 maven 命令构建,如何上传制品

在部署操作上,因为与阿里云的结合,可以很方便的关联到账号下的资源来选择部署,所以你就不用自己维护服务器清单了,特别方便!

那么这个流水线功能是否能满足云原生应用一次构建多处部署的特性呢?下面我也尝试做了一下,大致流程就是:在 test 环境,做构建、上传制品、部署;在 pre 环境,做选择制品、部署;在 pro 环境,做选址执行、部署。模拟了一下这种比较常见的 CI/CD 管理流程。

如上图所示,是可以满足的。这也已经满足了我这边的持续集成要求。不过这里在流水线串联,想要实现选择制品这一步上,支持的用户体验还不是特别好,花了我一些配置和咨询的时间才完成。据悉这部分体验优化马上在 9 月 15 日版本也会优化!迭代很快,非常给力!

这里值得一提的是,在云效 Flow 中所提供的各种操作模版是非常适应于我们国内用户的,比如:可以看看我在 test 环境的流程细节,这里增加了代码扫描,里面就涵盖了阿里巴巴代码规约的检查报告等。

而对于通知提醒也是非常符合国内开发团队的管理特点,提供了钉钉、企业微信、飞书这些国内才常用的软件支持。

好了,通过云效 Flow,又帮我节省了一台 Jenkins 的 ECS。

管理门户

在讲老架构的时候,我提到了使用 JIRA 的重要原因是要将其作为整个研发管理的门户,因为他可以整合其他所有周边设施。比如:任务的管理、持续集成的触发等等。那么在云效全家桶中,是否有扮演这样角色的产品呢?作为一站式的解决方案,必须得安排上,对应的产品就是 云效DevOps,产品地址:
https://devops.aliyun.com/ 。

到这里可能你要问了,任务管理和文档管理这两个不替换了吗?必须替换!只是,因为作为门户的云效 DevOps 其实就涵盖了这两块内容。所以,接下来就一起看看云效 DevOps 的强大功能吧!

这款产品的上手非常快,因为它提供了一些常用模版。我这边就直接给予 DevOps 研发模版来创建。

完成创建后,不难发现菜单中的需求、迭代、任务、缺陷、测试计划、版本管理不就是JIRA的替代品么?而知识库不就是 Confluence 的替代品嘛!

这里还很贴心的提供了 Excel 导入的功能,所以我只需要从 JIRA 里导出 Issue ,然后在这里导入,就可以继续做之前的任务管理啦!

同时,作为管理门户,对于之前介绍的云效 Codeup、云效 Flow 自然也可以联系起来。只需要通过点击菜单中的代码、流水线(刚创建的时候,需要点击关联选择同账号下配置的代码仓库和流水线),就能进行查看和实现日常操作!

到这里,云效 DevOps 基本就完成在散装方案中 JIRA 和 Confluence 的角色,妥妥的继续释放出两台 ECS!

总结

最后,盘点下这次从自己做的散装方案到使用云效全家桶之后,我认为比较大的几个收益点:

  1. 成本降低了:节约了4台 ECS。对于我们这种个人开发或小团队来说,云效基本就是免费的,白嫖能不爽么?
  2. 运维容易了:跟阿里云的高度整合,对于资源的维护以及关联操作更加方便!

对于云效 DevOps 这个产品,从我的场景来说非常好用,核心原因是已经够用。但如果要做非常复杂的管理可能还有一些困难,比如:在目前版本中,我并没有找到类似 JIRA 那样强大的工作流支持,这样的话如果团队有一些复杂流程管理,例如多人参与的审核流程,还有与其他系统的联动,还没有比较好的支持(不过,在与云效的小伙伴咨询这类功能的时候,得知这类功能已经在内测,那么具体功能支持如何,等后面公测了我们一起拭目以待吧)。

作者|翟永超

原文链接

本文为阿里云原创内容,未经允许不得转载。


推荐阅读
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • Spring Boot单元测试中Redis连接失败的解决方案
    本文探讨了在Spring Boot项目中进行单元测试时遇到Redis连接问题的原因及解决方法,详细分析了配置文件加载路径不当导致的问题,并提供了有效的解决方案。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • 解决Spring Boot项目创建失败的问题
    在尝试创建新的Spring Boot项目时遇到了一些问题,具体表现为在项目创建过程中的两个关键步骤出现错误。本文将详细探讨这些问题及其解决方案。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文详细介绍如何使用CSS自定义HTML5视频播放器的样式,涵盖常见属性及跨浏览器兼容性问题。发布时间:2020-09-14 14:46:29;来源:亿速云;阅读量:58;作者:小新。 ... [详细]
  • Nature Microbiology: 人类肠道古菌基因组目录
    本研究揭示了人类肠道微生物群落中古细菌的多样性,分析了来自24个国家、农村和城市人群的1,167个非冗余古细菌基因组。研究鉴定了多个新分类群,并探讨了古菌对宿主的适应性及其与社会人口特征的关系。 ... [详细]
  • 本文介绍如何从JSON格式的文件中提取数据并将其分配给Bash脚本中的变量。我们将探讨具体的命令和工具,帮助你高效地完成这一任务。 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 本文详细介绍如何在 iOS 7 环境下申请苹果开发者账号,涵盖从访问开发者网站到最终激活账号的完整流程。包括选择个人或企业账号类型、付款方式及注意事项等。 ... [详细]
  • Mongoose 5.12.10 发布:MongoDB 异步对象模型工具的新特性与修复
    Mongoose 是一款专为异步环境设计的 MongoDB 对象模型工具,支持 Promise 和回调函数。最新版本 Mongoose 5.12.10 带来了多项修复和改进,包括查询选项中的默认值设置、嵌入式判别器填充、以及 TypeScript 定义文件的优化。 ... [详细]
author-avatar
郭彩凤da
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有