首页 > 其他分享 >流水线有什么价值? 如何搭建流水线?

流水线有什么价值? 如何搭建流水线?

时间:2024-12-01 19:59:28浏览次数:5  
标签:CI 部署 老马 监控 流水线 工具 价值 搭建

前言

大家好,我是老马。

“大不了就进厂打螺丝”,这大概是很多人的自嘲,或者是无奈的退路。

我们通常用“打螺丝”来指代一些简单、重复、机械繁琐的工作。

众所周知,一件事物的复杂度是固定的,任何一个零件的加工都需要很多步骤。

那么,如何让其变得简单固定呢?

工厂中的流水线

流水线是工业时代非常伟大的发明。

本质上是对一个复杂的流程进行拆解,改为标准化-简单化-可度量-可规模化的一个流水线步骤。

好处是工人的门槛降低了很多,每个人只需要专注处理其中的一个小步骤,越简单,越容易上手;越简单,也不容易出错。

当然,每一道工序是否合格,都可以在后续加一道 QA 检测,验证是否合格。

这种模式非常适合规模化的生产,可以随着投入人数的增加,效率大幅度提升,及时响应市场的需求。

缺点

甘蔗不能两头甜,流水线模式的缺点也是有的。

流水线的基础设施要求比较高,前期需要经过长期的规划+建设,投资成本比较高。

且一旦建成,工业上想随意修改的成本也会相对较高。

对工人而言,因为工作相对简单,很容易厌倦和缺乏工作激情。

软件中的流水线

工业的发展要比软件早得多,所以有很多值得学习的地方。

1970 年,瀑布式开发模型由温斯顿·罗伊斯提出,将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,规定了它们自上而下、相互衔接的固定次序。

1994 年,Grady Booch 提出持续集成。

看的出来,其实也没有多少年。大部分公司,还是停留在瀑布开发模式中。

为什么能提效?

个人理解,最主要的是 CI/CD 让我们在协作时,可以让代码保持是最新的。

每一个节点,可以添加严格的 QA 检测,比如代码是否合并了最新的分支,sonar 扫描质量是否过关,单元测试覆盖率是否满足,回归用力地通过率是否满足要求,接口文档自动更新等等。

这样可以部分功能的提测,让测试先介入进来。

测试不通过,可以打回让开发改进优化。

因为是持续部署,所以运维这一步已经提前介入了,而不用等到最后交付的时候。

编码、构建、测试、部署、监控和反馈,有些步骤的自动化减少了人工的干预,更加实时,而且错误率也更低。

如何搭建流水线呢?

说的挺好的,令人有些心动!

那么,哪里可以买到呢?(划掉)怎么自己搭建呢?

技术选型

流水线涉及到的点还是比较多的,真正转型是一个比较漫长的过程,可以逐步改进。

下面罗列一些老马比较看好的技术选型:

1. 版本控制系统 (VCS)

  • Git:Git 是最常用的版本控制工具,几乎所有流水线都会与 Git 集成。推荐使用 GitHub、GitLab、Bitbucket 等托管平台,或者自己搭建 Git 服务器。
Gitlab 有可以本地部署的版本,大多数中小型公司的不二选择。

2. 持续集成工具 (CI)

  • Jenkins:Jenkins 是一个非常流行的开源 CI/CD 工具,具有丰富的插件支持,能够与 Git 集成,实现自动化构建、测试等功能。

  • GitLab CI/CD:如果你使用 GitLab,它自带 CI/CD 功能,配置较为简便,适合中小型项目。

Jenkins 到目前为止还是技术的主流。

3. 构建工具

  • Maven / Gradle(Java):如果是 Java 项目,Maven 和 Gradle 是常见的构建工具,能够处理依赖管理和项目构建。

  • npm / yarn(Node.js):对于 Node.js 项目,npm 和 yarn 是常见的包管理工具,支持构建、测试等。

  • Makefile:对于 C/C++ 项目,Makefile 是经典的构建工具。

老马是 java 开发,平时 maven 用的最多;前端小伙伴对于 npm 应该不会陌生。

4. 代码质量和测试工具

  • SonarQube:一个开源的代码质量检查工具,支持多种语言,能够检测代码的潜在问题、漏洞、重复代码等。

  • JUnit / TestNG / Mocha / Jest:根据不同的开发语言,选择合适的单元测试框架。

  • Selenium:用于 Web 应用的自动化测试,可以集成到 CI 流水线中。

  • Linting 和格式化工具(如 ESLint、Prettier):确保代码风格统一,减少人工检查的负担。

单元测试还是推荐大家写一写,当然相对较长的业务链,还是需要归回用例才更有价值。

SonarQube 是一个非常好用的 QA 工具,直接部署即可。

5. 容器化和虚拟化

  • Docker:容器化是现代软件开发的趋势,Docker 能够保证环境一致性,并简化部署。将应用和其依赖打包成镜像,使得在开发、测试、生产环境中都能得到一致的体验。

  • Kubernetes(可选):如果你的项目需要部署到集群或云环境,可以考虑使用 Kubernetes 管理容器。虽然 Kubernetes 本身较为复杂,但它能够解决微服务架构中容器编排和服务发现等问题。

容器化这一块老马一直在使用,但是实际参与建设的并不多。

不过现在很多公司的 docker 容器化还是挺成熟的,用起来也确实方便快捷。

6. 部署工具

  • Ansible:一个简单的自动化部署工具,适合管理服务器的配置和部署任务。

  • Terraform:用于管理基础设施的开源工具,适合部署到云平台。

  • Helm:如果使用 Kubernetes,可以使用 Helm 来简化 Kubernetes 应用的部署和管理。

部署工具一般推荐自建,或者二开。

核心能力就是 ssh 到指定机器,然后调度执行对应的脚本。

自建的好处是,后续可以更加灵活的定义巡检作业+监控报警自愈的流程打通。

7. 监控与日志管理

  • Prometheus + Grafana:监控工具,Prometheus 收集监控数据,Grafana 用于展示数据,适合在生产环境中使用。

  • ELK Stack(Elasticsearch, Logstash, Kibana):用于日志收集、存储和可视化,帮助开发和运维人员快速定位问题。

  • CAT:CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。

  • SQL:SQL 这一块主要是一些业务的处理,目前市面上看起来没有特别好的,主要是自研。主要就是 SQL 的分布式定时调度。

监控报警是很重要的一个环节,也是老马最近一直在重点学习的内容。

小结

后续老马准备专门用一系列专题,实践搭建一下流水线+DevOps 平台。

对于中小公司,采用这些工具既能够保证高效的开发流程,又能够通过自动化提高代码质量和交付速度。

当然,流水线的实际搭建+推广+使用确实会有很多阻力,但是收益也是巨大的。

分工提升效率,协作促进繁荣。

希望本文对你有所帮助,如果喜欢,欢迎点赞收藏转发一波。

我是老马,期待与你的下次相遇。

随笔

从千万粉丝“何同学”抄袭开源项目说起,为何纯技术死路一条?

数据源的统一与拆分

监控报警系统的指标、规则与执行闭环

我们的系统应该配置哪些监控报警项?

监控报警系统如何实现自监控?

java 老矣,尚能饭否?

一骑红尘妃子笑,无人知是荔枝来!

张居正的考成法,对我们有何参考价值?

mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?

DevOps 平台越发展,开发运维越快失业?

开源如何健康长久的发展

为什么会有流水线?

既然选择了远方 便只顾风雨兼程

银行是如何挣钱的?

标签:CI,部署,老马,监控,流水线,工具,价值,搭建
From: https://www.cnblogs.com/houbbBlogs/p/18580257

相关文章

  • 5分钟教你搭建邮件服务器的实用指南
    今天我写了一篇实用的文章,重点是教你如何免费搭建一个邮件服务器,这个服务器不仅可以用于发送邮件,还可以供我的待办机器人使用。一开始我试图找一些免费的API接口来实现这个功能,但遗憾的是,并没有找到合适的。对于程序员来说,能自己动手实现绝对是最好的选择,幸运的是,我有一台......
  • Java开发环境搭建
    1、JDK下载jdkhttps://www.oracle.com/java/technologies/downloads/这个网址里面有所有的jdk版本,如JAVASE13/11、JavaSE8u241等等,前面两个是新版本,这里为了笔者电脑环境的兼容性,我选择了JavaSE8u241,即下载了JDK8.(当前页面下拉即可以看到其他版本的JDK)选择对应系统和版......
  • 浅探2023年度十大最具价值年度数据集
    近日,中科院空天院公布了2023年度优秀共享开放遥感数据集征集结果,名单包含了许多优秀的数据资源。在之前的文章中,我们一起探索了有关最受欢迎数据集的内容,今天再来学习一下2023年度十大最具价值年度数据集。1.SinoLC-1中国首幅1米分辨率土地覆盖图数据集主要作者:李卓鸿,张洪艳......
  • MaxCompute+Hadoop搭建实践
    本文以E-MapReduce的Hive为例,为您介绍在MaxCompute中如何创建外部项目,并查询Hadoop中的表数据。使用限制仅华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、中国香港、新加坡和德国(法兰克福)地域支持构建湖仓一体能力。MaxCompute与Hadoop集群所在的VPC必须部署......
  • 常见靶场的搭建
    漏洞靶场渗透测试(漏洞挖掘)切忌纸上谈兵,学习渗透测试(漏洞挖掘)知识的过程中,我们通常需要一个包含漏洞的测试环境来进行训练。而在非授权情况下,对于网站进行渗透测试攻击,是触及法律法规的,所以我们常常需要自己搭建一个漏洞靶场,避免直接对公网非授权目标进行试。漏洞靶场,不仅可......
  • 如何搭建JMeter分布式集群环境来进行性能测试
    在性能测试中,当面对海量用户请求的压力测试时,单机模式的JMeter往往力不从心。如何通过分布式集群环境,充分发挥JMeter的性能测试能力?这正是许多测试工程师在面临高并发、海量数据时最关注的问题。那么,如何轻松搭建JMeter分布式集群环境,实现性能测试的最大化呢?你是否也曾为测试......
  • 流水线并行,重计算:GPipe;1F1B(一前一后)调度机制
    目录GPipe一、GPipe的背景与目的二、GPipe的功能与特点三、GPipe的应用与效果四、GPipe的开源与可扩展性1F1B(一前一后)调度机制一、背景与基本概念二、1F1B调度机制的要求三、应用与挑战GPipe是一个基于Lingvo(Lingvo是Google基于TensorFlow二次开发的,重点针对序列......
  • 使用NodeJS搭建简易服务器
    什么是NodeJSNode.js基于Chrome浏览器的V8引擎,是一个JavaScript运行时环境。简单来说,Node.js提供了一个能够对JavaScript代码进行编译和执行的环境,同时Node.js还提供了一系列内置的API,使得开发者可以使用JavaScript进行后端开发。这些API涵盖了文件系统操作、......
  • 基于Ubuntu2410搭建openstack-D版
    @目录初始化环境安装数据库、memcahe、rabbitmq等服务安装keystone服务安装glance服务安装placement服务安装nova服务安装neutron服务安装horizon服务启动云主机本次实验使用单节点搭建,Ubuntu2410系统:搭建openstack-D版,采用ovs网络组件,最终创建云主机,并实现远程连接和访问外网初......
  • 未来趋势与商业价值
      一、引言  随着人工智能(AI)技术的不断发展和应用,电商平台正迎来一场深刻的变革。从用户体验到供应链管理,AI技术在电商领域的应用正在深刻地影响着行业的未来发展趋势。本文将探讨AI技术在电商平台中的应用,以及其对电商行业的影响和未来趋势。  二、AI技术在电商平台的应......