年薪百万的程序员都在用的摸鱼方式……

陈哥聊测试
• 阅读 253

随着信息技术的不断发展,许多传统的工作流程正在向自动化方向迅速转变。在过去,开发人员在完成代码编写后,需要通过手动执行一系列操作来将代码部署到生产环境中。

年薪百万的程序员都在用的摸鱼方式……

这看似简单,但在实际操作过程中,不仅容易出现各种人为失误,还会消耗开发人员大量的时间和精力。此外,一旦出现问题就需要进行回滚操作,这就意味着上述步骤需要再次执行直至成功。

作为一个老测试人,这种心酸痛苦难以言表。为了解决这些问题,自动化部署技术逐渐崭露头角。自动部署,简单来说,从代码的版本控制、构建、测试到最终的发布,这些复杂繁琐的步骤都是自动完成的,不需要人工介入。

上午就已经把工作做完了,才心血来潮想和大家分享一下我的“摸鱼”技巧。本文将介绍自动化部署的优势和实践。通过了解自动化部署的基本原理和工具,帮助大家争取实现高效、可靠的软件发布流程。

一、为什么自动化部署如此重要

1、及时反馈,提高发布频率

自动化部署大大简化了部署过程,不仅可以快速将新特性和修复推送给用户,还可以获得用户的及时反馈。通过快速反馈,团队可以立即了解产品的改变是否有效、是否满足用户的需求,再根据用户的反馈进行调整。

Facebook移动应用的更新频率非常高, iOS和Android应用平均每月更新一次,每次更新都可能包含新功能、性能改进、bug修复等内容。

在Facebook,每个部署的软件更新平均有92行代码被添加或修改,每个开发人员平均每周向生产环境推送3.5次更新。考虑到Facebook工程团队的规模,这意味着每天会向生产环境部署1000次,仅仅靠自动化部署是无法完成的。

市场频繁发生变化,同类产品竞争激烈,自动化部署可以促进新版本的快速发布,帮助产品快速适应市场变化,获得用户的关注。

年薪百万的程序员都在用的摸鱼方式……

2、提高效率,减少人为错误

开发人员每天都在开发新的功能或修复Bug,每天都需要将新的代码部署到生产环境中。在上传或启动代码的过程中一旦出现错误,就可能导致产品无法正常运行,影响用户体验。

如果使用自动化部署,只需要将代码提交到版本控制系统,等待自动化部署工具完成接下来的步骤,因此不会出现人为错误。 即便在构建或测试过程中发现了错误,自动化部署会停止并通知开发人员,这样开发人员就可以立即修复错误,避免错误影响到生产环境。

此外,自动化部署还可以与灰度发布策略相结合。开发人员可以先将新的代码部署到一部分服务器上,观察是否有问题。如果没有问题,那么再将代码部署到所有的服务器上。这样,即使新的代码有问题,也只会影响到一部分用户,而不会影响到所有的用户。

许多公司在成功实施自动化部署后有了明显的结果,如谷歌使用Cloud Build和Cloud Deploy实现自动部署,缩短了部署时间高达80%;亚马逊利用AWS CodeDeploy进行自动化部署,在没有停机的情况下部署了数百万个代码更改。

我们不得不承认,自动化部署在一定程度上减少了人为错误,大大提高了部署的速度和可靠性。

3、长期稳定,避免反复调试

手动部署的流程通常记录在文档中,维护这些文档需要额外的时间,且由于更新的存在,版本部署往往存在不一致或不完整的问题。如果遇到人员更替或离职的情况,部署流程将受到严重影响。此外,长期从事手动部署工作的人员,其工作效率易受工作状态、专注度等因素影响。

自动化部署一方面整个流程是可被复制的,无需开发人员再投入额外的时间进行反复的调试和错误排查;另一方面可以将人员从繁琐的手工操作中解放出来,保证工作流程的长期稳定性。

年薪百万的程序员都在用的摸鱼方式……

二、如何实现自动化部署

1、如何选择合适的自动化部署工具

随着数字化转型的发展,企业线下业务逐渐线上化,应用数量与日俱增,部署活动也变得更加频繁。目前,市场上的自动化部署工具五花八门,我们该如何选择适合自己开发流程的工具呢?

  • 项目需求

我们需要清楚我们的项目具体需要什么。是否需要支持多环境部署,如开发、测试、生产环境?是否需要支持多平台部署,如Windows、Linux、Mac或者云服务(AWS、Azure、GCP)?我们的项目是基于什么语言或框架开发的……这些都会影响你对部署工具的选择。

  • 易用性

部署工具应该易于理解和使用,尤其是对于新手来说。如果一个工具需要极大的学习和配置成本,那么它可能不是最佳选择。同时,工具的文档和社区支持也是需要考虑的因素。

  • 可扩展性

如果项目可能会增长或变化,那么这就需要一个可以随着项目需求扩展的工具。这包括支持新的部署目标(例如,新的操作系统或云服务),以及支持更复杂的部署策略(例如,蓝/绿部署或金丝雀部署)。

  • 集成

部署工具应该能够轻松集成到你的开发和运维流程中。这可能包括与源代码管理系统(如GitFox)、持续集成/持续部署(CI/CD)工具(如Jenkins、GitHub Actions、GitLab CI/CD)以及监控和日志系统的集成。

  • 成本

部署工具的成本也是一个重要因素。这包括购买和维护工具的直接成本,以及学习和使用工具的间接成本。有些工具可能免费,但需要大量的配置和维护,而其他工具可能需要付费,但提供了更多的功能和支持。

常见的自动化部署工具包括Jenkins、Ansible、Docker、Kubernetes等。每个工具都有其优点和缺点,团队需要根据上述因素和具体需求来选择适合的工具。

年薪百万的程序员都在用的摸鱼方式……

2、如何实现自动部署流程

自动化部署是支持DevOps实践和管理CI/CD管道的重要环节。禅道DevOps平台为例, 如何实现自动部署流程:

  • 版本控制: 在开发过程中,开发人员将编写的代码提交到版本控制工具(如GitLab、GitFox软件)进行源代码管理,实时跟踪代码的更改。
  • 持续集成: 当代码提交后,禅道的持续集成工具会自动触发构建过程,包括SonarQube进行静态代码分析、ZTF自动化测试管理框架进行单元测试等。如果构建过程中出现任何问题,开发人员会立即收到通知。测试完成后,发起合并请求。
  • 持续测试: 开发团队可使用持续集成工具(GitFox 流水线、GitLab CI)来驱动ZTF执行某种类型的自动化测试,测试过程中脚本通过访问ZenData生成的数据文件或API接口获取结构化的测试数据。
  • 持续部署: 如果构建成功,禅道集成的持续部署工具会自动将新的代码更改部署到指定的环境中,例如测试环境或生产环境。
  • 反馈和改进: 部署完成后,禅道平台可以提供详细的部署日志和应用性能监控数据,帮助团队了解应用的运行情况,并在必要时进行调优或修复。

值得注意的是,实际的部署流程可能会根据具体的项目需求和团队习惯进行调整。 年薪百万的程序员都在用的摸鱼方式……

三、一键自动化部署,继续摸鱼

尽管自动化部署带来了诸多优势,但我们也不能忽视它的挑战,如复杂的环境配置、安全性问题等,因此自动化部署工具需要结合具体的项目需求和环境来进行选择和配置。

虽然自动化部署工具并不是万能,但自动化部署确实是软件开发和测试的重要组成部分。不难看出,我就是自动化部署的受益人。

不说了,新的任务又来了,下次再和大家分享其他的省时省力的“摸鱼”技巧。

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
2年前
手把手教你开展mofish库(摸鱼库)的打包发布
大家好,我是我是皮皮。一、前言前几天吴老板给我推荐了一个摸鱼库,竟然是Python库,给我惊了一下,感觉应缺斯汀。要知道之前他就已经写了一篇关于摸鱼的文章,感兴趣的小伙伴,可以前往:手把手教你使用Python打造一款摸鱼倒计界面。如今他把这个摸鱼做成了一个Python库,关于这个库的使用之前已经发布了文章,可以前往:盘点一个名为摸鱼的Python库,一起来
Python进阶者 Python进阶者
2年前
盘点一个名为摸鱼的Python库,一起来摸鱼吧!
大家好,我是我是皮皮。一、前言前几天吴老板给我推荐了一个摸鱼库,竟然是Python库,给我惊了一下,感觉应缺斯汀。要知道之前他就已经写了一篇关于摸鱼的文章,感兴趣的小伙伴,可以前往:如今他把这个摸鱼做成了一个Python库,这里分享给大家,确实挺有趣的,每日没事出来摸摸鱼,也好!二、使用方法首先就是安装摸鱼库了,很简单,直接在命令行中输入安装指令:pip
Tommy744 Tommy744
3年前
DevOps简介
DevOps是一个完整的面向IT运维的工作流,以IT自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。DevOps的概念DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
京东小程序CI工具实践
本文从整体介绍了京东小程序CI工具的用途及工作流程,读者可以通过本文了解到一种全新的京东小程序上传方式,同时结合构建脚本和流水线,可大大提高小程序的部署和发布效率。
京东云开发者 京东云开发者
3个月前
【行云流水线】满足你对工作流编排的一切幻想~skr
流水线模型众所周知,DevOps流水线(DevOpspipeline)的本质是实现自动化工作流程,用于支持软件开发、测试和部署的连续集成、交付和部署(CI/CD)实践。它是DevOps方法论的核心组成部分,旨在加速软件交付、提高质量和实现持续改进。流水线的
京东云开发者 京东云开发者
2星期前
【行云流水线】满足你对工作流编排的一切幻想~skr
作者:京东零售顾铮流水线模型众所周知,DevOps流水线(DevOpspipeline)的本质是实现自动化工作流程,用于支持软件开发、测试和部署的连续集成、交付和部署(CI/CD)实践。它是DevOps方法论的核心组成部分,旨在加速软件交付、提高质量和实现
小万哥 小万哥
1年前
5个编写高效Makefile文件的最佳实践
在软件开发过程中,Makefile是一个非常重要的工具,它可以帮助我们自动化构建、编译、测试和部署。然而,编写高效的Makefile文件并不是一件容易的事情。在本文中,我们将讨论如何编写高效的Makefile文件,以提高我们的开发效率和产品质量确定目标在编
眼疾手快 眼疾手快
1年前
如何使用浏览器自动化框架Playwright开发“万媒易发”实现多平台自动发布文章?
作为一名程序员和开发者,我深知在多个媒体平台手动发布和管理文章的痛苦。因此,我决定使用Playwright浏览器自动化框架,开发一款名为“万媒易发”的工具,实现多平台自动发布文章。下面我将分享这款工具的开发过程和成果,希望能对大家有所启发和帮助。一、需求与
京东云开发者 京东云开发者
10个月前
【行云流水线】满足你对工作流编排的一切幻想~skr
流水线模型众所周知,DevOps流水线(DevOpspipeline)的本质是实现自动化工作流程,用于支持软件开发、测试和部署的连续集成、交付和部署(CI/CD)实践。它是DevOps方法论的核心组成部分,旨在加速软件交付、提高质量和实现持续改进。流水线的
陈哥聊测试
陈哥聊测试
Lv1
资深敏捷测试顾问,致力于测试自动化和DevOps等的实践和研究。
文章
46
粉丝
0
获赞
2