CI/CD | 不可忽略的Jenkins基础架构修复问题

news2024/11/26 20:27:45

在这里插入图片描述

在系列文章第一篇和第二篇中,大家已经看到了在CloudBees的帮助下,让管理Jenkins解决方案从一个大麻烦变成轻而易举就能解决的事情。但是,现在让我们反思并退一步。有时候,这些问题并不是表面上的——它们是在成长的过程中造成的,特别是当您的公司现在就需要新功能时;或者是当您收购了一个新的团队,您需要在昨天就为他们安装好!

这并没有留下空间给您在增加工作流程时引入最佳实践,因为最简单的途径可能就是在您的Jenkins实例上堆积更多的东西,或者只是让人们离开并创建自己的实例,这就好比在公司里又建立自己的小公司。这确实是完成了工作,但现在看来呢?并没那么好用了。而且从长远来看,这将给您的软件发布流程带来挑战。在最后一篇文章中,我想提出一些Jenkins实施的基础设施问题——那些隐藏在表面之下的困境。看看有多少人和我有同样的遭遇。不过不用担心,隧道的尽头还是有一线希望的。

不完美的解决方案都有代价

随着您在前两篇文章中读到的困境波及到您的企业,您可能会遇到一系列的下游效应,每一个效应都会对您流水线的工作方式、发布代码的速度以及整个运营成本产生影响。理想情况下,所有这些问题都将受到严格控制,以推进您的业务目标,但正如你我都知道的那样,随着企业规模的扩大,事情很难这样发展。

Jenkins孤岛、Jenkinsteins,还是两者兼有?

不受管理的Jenkins缺点会造成的第一个也是最深刻的一个后果是,它们将不可避免地决定您的Jenkins环境的结构。Jenkins控制器往往会落入三个组织陷阱,每个都倾向优先考虑某些问题,而牺牲其他问题。底线是什么?这些方法代表了一种创可贴式的解决方案(哪里有问题补救哪里),并没有解决它们想要规避的潜在系统缺陷。

Jenkins孤岛:“控制器太多”的问题

由于不受管理的Jenkins会使协作和标准化变得困难,因此团队想要做自己的事情是很正常的。如果允许的话,他们会自行设置控制器,自定义工具链,并在自己认为合适的情况下维护SDLC。这对于少数团队来说已经是很有效的方法了,但对于拥有大量开发人员的企业来说,这只会增加他们的Jenkins困境。这种犹如狂野西部一般的场景产生了Jenkins孤岛现象——无数个互不相关的服务器/团队,经常出现分歧,还会放大沟通、治理、合规性和安全问题。

Jenkinsteins:“巨型单一控制器”的问题

与不受管理的Jenkins相关的大多数困难都来自于试图管理太多的控制器。许多企业都想通过将所有内容放在一个控制器上来解决这个问题。虽然这确实缓解了一些维护、治理和合规性问题,但这带来了新的问题:

  • 一台服务器不可能成为团队的一切。有些团队将会放弃首选的定制,甚至是基本的插件(如果它们引入兼容性冲突的话);
  • 在一台服务器上运行所有项目可能会使服务器超载,从而拖慢整个企业的构建和测试时间;
  • 单个服务器就会成为故障的唯一来源,而服务器停机可能会破坏整个企业的生产力。

Jenkinsteins+孤岛:“两个世界中最糟糕的”问题
许多企业开始时采用单一控制器的方法,然后最终屈服于给团队自由发挥的需求。单一控制器于离群服务器的组合使得Jenkins环境特别混乱,它结合了这两种场景的缺点,同时还消除了大部分优点。

谁负责技术支持?

在我们探索不受管理的Jenkins带来的挑战时,重要的是要记住,当您遇到麻烦时,社区支持和您自己的团队成员是您寻求帮助的唯一途径。开源社区互助是一个鼓舞人心,但它们并不是企业级的。这可能会带来一些新的问题:

  • 以快速增长/转型为目标的企业需要24/7全天候、权威的支持来保持节奏。缺乏专门、可靠的支持服务,将造成支持瓶颈,无形中抑制了企业发展;
  • 内部支持会成为一项不受控的开支。随着团队成倍增加,团队成员在自助支持上花费的时间也会成倍增加。这在生产力、预算和增长方面的损失有多大,谁也说不准;
  • 停机会使企业陷入瘫痪,造成重大损失。如果灾难发生时没有足够的支持人员待命,这就成为一个真正的风险。

这让我们付出了什么代价?

为什么这些问题都很重要?因为它们最终都会归结为一个价格标签。更糟的是,这个价格标签往往是看不见的。你通常能看到Jenkins是如何帮助你守护底线的,但你不一定能看到它是如何伤害你的底线的。不必要的预算项目可能包括:

  • 由于管理开销、故障排除、服务器维护不善、安全漏洞等导致的生产力损失。
  • 调度延迟,以为您的工程师每周可能会花费15+小时在管理和支持上,而不是写代码。 工作时间浪费在重复性任务、无望的治理和追求合规性上。
  • 错失商机,因为您专注于解决流水线的挑战而不是创新。 工作人员因试图强力解决上述问题而气愤。
  • 可扩展性瓶颈——当SDLC很混乱时,您如何根据需要扩展CPU、RAM和磁盘空间?您要么为未使用/闲置的资源付费,要么就在需要时因缺乏资源而阻碍发展。
  • 更高的基础架构设施费用——如果您不知道空闲服务器何时处于活动状态,那还怎么从闲置服务器中收回成本?
  • 任何来源导致的停机时间——损坏的Jenkinsteins、未识别的错误、兼容冲突、由风险代码引起的网络攻击等。

谁可以在基础设施方面提供帮助?

或者说,隧道尽头的希望在哪里?
又或者说,CloudBees CI帮助你实现最大的投资回报率

下一个问题很明显:你能从哪里得到这一切?最简单的答案是什么?那就是CloudBees软件交付平台。CloudBees CI是该平台的一部分。CloudBees CI缓解了上述所有问题,正如我们在之前的文章中看到的那样。作为Jenkins代码的最大贡献者,CloudBees及其工程师是权威的Jenkins专家。CloudBees团队都很爱Jenkins,但他们很清楚它的潜在陷阱,所以他们致力于最大限度地发挥Jenkins的潜力。

还记得第一篇文章中的这张图吗?它展示了CloudBees CI运营中心(我们之前谈到的集中控制平面)如何重构您的Jenkins环境以促进我们之前谈过的工具包,无论您部署在本地还是在云上。

与一个充满了插件(插件会支持不同的团队,许多许多job会减慢流水线并产生很长的队列)的单个巨型控制器所不同的是,每个团队都有自己的控制器、自己的对象,并在需要时访问共享代理池。

对我来说,这意味着我的团队实现了工作负载隔离——没有其他团队的插件干扰我的插件(我说的就是你们,Java-O团队)。在隔离之外,我们可以通过监视在流水线中可能排队的事件来与其他团队合作(自动化是一件非常美好的事,不是吗?),当我的容量激增时,我们甚至可以跨特定团队共享代理。

在这里插入图片描述

我们已经讨论了CloudBees CI可以做些什么来帮助管理Jenkins,你可以了解到客户是如何成功地加快他们的发布周期,但工具集中的另一个工具是CloudBees本身。不是功能,而是人。CloudBees CI是企业版Jenkins——我们了解Jenkins,并为开源社区做出贡献。由于我们为开源项目贡献了大量代码,因此我们有独门绝技,可以在出现问题时解决问题。

使用 CloudBees,您就等于拥有:

  • 客户成功经理——客户成功经理通过提示、技巧和更新帮助您优化CloudBees CI体验,确保您始终走在增长的道路上;
  • 专业服务——无论您是刚开始使用CloudBees、掌握DevOps,还是从旧模式转向新模式,我们的专业服务团队都能快速帮助您实现目标;
  • 卓越的支持
  • 最大的Jenkins认证工程师团队为你提供24/7全天候随叫随到的支持;
  • 通过与我们的支持团队一起主动规划您的升级,辅助更新可以使CloudBees CI保持最新、稳定和合规;

CloudBees在中国的授权合作伙伴龙智为您提供咨询、实施、培训和技术支持等服务。

今天的Jenkins已不可同日而语——软件交付已经有了进步,开源社区也接受了这项技术,这使得它更容易与最新技术集成,从而推进您的应用程序开发工作流程。它有了更多的集成、更多的作业、更大的灵活性和更强的功能。让CloudBees来引导您实现灵活性,并使您的工作流到达所需的清洁、高效、合规及快速要求。您已经拥有这个力量,让我们来告诉您如何使用它。

作者:萨曼莎·弗罗斯特(Samantha Frost),CloudBees公司产品营销经理。
文章来源:https://www.cloudbees.com/blog/whoa-the-woes-and-fix-your-infrastructure

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yyds,Elasticsearch Template自动化管理新索引创建

文章目录一、什么是Elasticsearch Template?二、Elasticsearch Template的用法2.1、创建模板2.2、验证模板2.3、应用模板2.4、删除模板2.5、组合模板2.6、如何在同一个模板中定义多种匹配模式2.7、模板优先级2.8、提前模拟索引的最终映射三、Elasticsearch Template…

Python多线程详解

文章目录1. 多线程2. 创建线程2.1 直接创建2.2 继承创建3. 守护线程4. 阻塞线程5. 线程锁5.1 互斥锁(Lock)5.2 递归锁(RLock)5.3 信号量(Semaphore)5.4 事件(Event)6. ThreadLocal7. 线程池7.1 基本使用7.2 as_completed 方法7.3 wait方法7.4 map方法8. Python线程真相参考文章…

linux时间的特殊用法

今天介绍linux下Date时间命令相关的特殊用法 date (当前的时间) 修改系统当前时间: date -s "2022-6-20 9:33:50" 昨天的时间是我们比较常用的: date -d "yesterday" %Y%m%d ( 昨天的时间) date -d "1 day ago" %Y%m%d …

如何写一个简单的爬虫

学习爬虫重要的是知识储备以及实战能力,最近有个学妹要求我帮她写一个爬虫程序,我将我编写的爬虫代码以及解释都记录下来,方便后期更多的伙伴们学习参考。 前置知识-爬虫定义 爬虫指的是一种自动化程序,用于在互联网上获取和抓取…

VB6换个思路解决微信下载文件只读的问题(含源码)

日期:2023年3月10日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

Android Framework——zygote 启动 SystemServer

概述 在Android系统中,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育(fork)出来的,这也许就是为什么要把它称为Zygote(受精卵)的原因吧。由于Zygote进程在Android系统中有着如此重…

docker使用教程(装linux比虚拟机方便)

目录 一、介绍 二、使用 1.下载操作系统 2.查看docker内的容器有哪些 3. 运行指定容器 4.进入容器 ​1.attach进入容器(输入容器ID前4位) 2.exec进入容器(可以输入ID或者NAMES) 5.退出容器 6.在宿主机器和容器之间拷贝文…

时间同步Chrony

时间同步chrony一、Chrony时间服务1、Chrony介绍2、Chrony优点二、配置Chrony服务三、验证一、Chrony时间服务 1、Chrony介绍 chrony 是基于NPT协议的实现时间同步服务,它既可以当做服务端,也可以充当客户端。chrony是ntp的代替品,能更精确…

数据传输服务DTS(阿里巴巴)

数据传输服务DTS(阿里巴巴) 什么是数据传输服务DTS 数据传输服务DTS(Data Transmission Service)是阿里云提供的实时数据流服务,支持关系型数据库(RDBMS)、非关系型的数据库(NoSQL)、数据多维分…

CentOS 7 使用 Composer 配置 phpmyadmin 并管理多个mysql

phpMyAdmin 中文文档 准备工作 CentOS 7 yum 方式安装 phpCentOS 7 安装 Apache HTTP Server安装Composer 安装 phpMyAdmin 按照官方文档 用Composer安装 要安装phpMyAdmin,只需运行: composer create-project phpmyadmin/phpmyadmin 建立网站配置文…

skywalking部暑(zookeeper、kafka、elasticsearch)

服务器IP部暑角色192.168.11.100zookeeper kafka elasticsearch 一、docker部暑 。。。 二、.安装Zookeeper path/data/zookeeper mkdir -p ${path}/{data,conf,log} chown -R 1000.1000 ${path}echo "0" > ${path}/data/myid #zookeeper配置文件 cat > ${p…

Gitee初练 --- 问题合集(一)

Gitee一、Windows找不到gpedit.msc请确定文件名是否正确的提示二、windows 10 凭据无法保存三、解决 git pull/push 每次都要输入用户名密码的问题一、Windows找不到gpedit.msc请确定文件名是否正确的提示 就随便在一个地方建立一个文本文件,将一下内容复制进去 e…

从0-1超详细教你使用nginx打包部署静态资源,以及hash和history配置汇总

首先呢,我们要有以下几个方面的知识和操作,来实现项目部署 第一:我们要搭建nginx部署基础环境 具体流程可参考这个链接从0-1超详细教你实现前端代码nginx部署全流程 第二:我们要知道前端路由hash和history实现以及区别 路由功…

Reactor响应式流的核心机制——背压机制

响应式流是什么? 响应式流旨在为无阻塞异步流处理提供一个标准。它旨在解决处理元素流的问题——如何将元素流从发布者传递到订阅者,而不需要发布者阻塞,或订阅者有无限制的缓冲区或丢弃。 响应式流模型存在两种基本的实现机制。一种就是传统…

【OpenAI 多模态预训练】VideoGPT?微软透露GPT-4或将在下周发布

【多模态预训练】VideoGPT?微软透露GPT-4或将在下周发布 先让我猜个名字,VideoGPT? 太绝了!看完ChatGPT之后就感觉OpenAI正在做多模态的预训练语言模型。万万没想到来的这么快。据介绍,GPT-4或将为多模态大模型&#…

redis经典五种数据类型及底层实现

目录一、Redis源代码的核心部分1.redis源码在哪里2.src源码包下面该如何看?二、我们平时说redis是字典数据库KV键值对到底是什么1.6大类型说明(粗分)2.6大类型说明3.上帝视角4.Redis定义了redisObject结构体4.1 C语言struct结构体语法简介4.2 字典、KV是什么4.3 red…

jsp毕业答辩管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 毕业答辩管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

Spring Security基础入门

基础概念 什么是认证 认证:用户认证就是判断一个用户的身份身份合法的过程,用户去访问系统资源的时候系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。常见的用户身份认证方式有:用户密码登录&am…

基于java的网络选课商城项目部署

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

SAP 生产订单收货入库Goods Receipt

Goods Receipt: 收货这块比较简单,当我们做完报工之后,成品就可以入库了。 那么收货完了,到底会有什么样的影响呢? 会产生物料凭证以及会计凭证,但是若订单中勾选”GR非股价的“,则不会有价值。 这里我们需…