将来,开发人员应该如何处理生产应用程序呢?是应该将本地的生产环境复制到云,还是应该直接在云环境中编写和运行所有代码,或者采用介于二者之间的某种方式?
原文链接:https://www.signadot.com/blog/large-engineering-teams-testing-on-k8s/
(资料图)
未经允许,禁止转载!
作者 | Nica Mellifera 译者 | 弯月
责编 | 王子彧
出品 | CSDN(ID:CSDNnews)
在过去的几年里,我们看到很多开发团队从纯粹的本地开发转向基于云的开发环境。目标是提高开发速度,并控制无法完美复制环境的问题。
在本文中,我们来看看一些企业团队的解决方案。
在谈论开发人员在哪里编写新代码时,我们经常提及他们“测试”代码。这里的“测试”指的是自动化单元测试或端到端测试之前的一个阶段,开发人员需要在这个阶段研究如何让代码与其他资源交互。在测试驱动开发中,这两个阶段可能没有明显的区分。在本文中,为了简洁起见,我们将统一使用“测试”,尽管这个词本身还包括单独的一个部署后期阶段。
在尝试与四个不同的企业工程团队交流后,我发现他们的故事有很多相似之处,所以在此我将他们合并成一个故事。值得注意的是,不仅他们的最终结论非常相似,而且每个团队在确定基于云的开发环境之前都尝试了类似的解决方案。
我研究的案例有 Lyft、Reddit、Doordash、Eventbrite 和 Prezi。虽然并非所有团队最终都选择使用共享的 Kubernetes 集群,但他们都试图用类似的方法解决类似的问题,而且都面临着共同的困难。
在考虑改变开发人员的环境时,我们要考虑的一个关键问题是:在开发陷入停滞之前,如何确定投入精力对开发工作流程进行重大改革是否值得?
为此,Eventbrite 团队在一篇文章中讨论了这个决策,标题是:“为什么我们的开发环境运行了一个700个节点的K8s集群?”首当其冲必须考虑的不利因素是:通过共享集群来测试代码时,工具和集群的开发时间以及维护成本都会增加。
关于在共享 K8s 集群上进行测试,Eventbrite 提到了如下好处:
你是否曾听开发人员说:“在我本地运行测试时完全没问题”。在云中运行测试可以提高一致性。事实证明,在探究测试失败的原因或解决难以重现的问题时,共享开发人员环境能给予极大的帮助。
这是在共享集群上进行测试的核心优势:更早地发现未知的未知数,并永久消除可怕的一个常见问题:“在我机器上没问题。”
为了方便开发人员搭建环境,Prezi 等团队提供了服务安装、测试以及运行等方面的hook脚本。他们的工具还可以管理服务间通信。但是,由于每位开发者机器的独特性,hook脚本经常会因为依赖冲突而运行失败。工程师们花了很多时间来解决这些问题,但在几个月后重新访问服务时还是会遇到新的问题。
这种不一致的问题是大型开发团队没有同步所有依赖项的必然结果。通常这种不一致在经过长时间的调试后才会显现出来。
当谈论使用容器化工具共享开发环境时,大多数人都会想到Docker。通过容器化所有依赖项并使用 Docker Compose 进行编排,就可以强制开发人员每天同步依赖项。与第一阶段相比,这种方法的巨大优势在于,无需等到失败才意识到你的环境需要更新。
最大的缺点是,很快你就会发现自己的 macbook 烫手。
每天下载新的容器并重新构建,只为了尝试一些开发上的小改动,这会极大地影响开发人员的速度。
Docker Compose 的问题在于,它的成本通常是隐藏的,你的笔记本电脑由于运行复杂的工作负载而停滞,因此而造成的时间浪费都无法明确地记入损失。也许每个小时它都会时窃取 10 分钟。但这不会成为阻止我们在一个月内发布新功能的障碍,结果导致你必须承担所有压力,在截止日期之前完成工作。
为了解决本地机器资源有限的问题,我们可以在云中提供虚拟机, 并在其中运行 docker compose。然而,当服务和相关数据库等的数量超过 15~20 时,这类系统将变得难以管理。
对于 Reddit 团队,此问题已被确定为已知限制。他们开发了一个自定义工具来最大程度地减少重建和重新下载,以尽量减少每天的启动时间,并迁移到 kubernetes 集群以共享开发人员进行试验时所需的大部分资源。他们为此开发了一个名为Tilt的工具进行管理。如果你的团队有足够的资源,不仅可以改变开发环境流程,还可以维护内部工具,那就可以考虑采用这种方式大幅缩短每天早上的构建时间。
在 Kubernetes 之上构建远程环境,这样开发人员的代码和依赖项由开发者体验团队集中管理,而开发人员的电脑上只需运行一个轻量级命令行工具和几个库。
Eventbrite采用的方式与之类似,他们使用了一个名为 yak 的自定义工具来处理开发人员代码和共享集群之间的交互。yak 还有一个巨大的好处是可以方便开发人员体验Kubernetes:
这种“轻量级”的交互可以为团队带来舒适感,逐步过渡到开发运维。
与共享集群的交互有两种模式:有些人希望与其他团队的工作状态完美同步;而有些人则希望能够根据自己的设计进行修改。
图片源自 Reddit Eng 博客,展示了大多数资源的共享方式,而且不会受开发人员实验的影响。
在 Prezi,开发人员可以自由地在自己的沙箱(Kubernetes 命名空间)中进行试验,而且可以通过两种不同的模式运行服务:
●依赖模式:在这种情况下,工具需要提供一组特定的服务,并使用 Helm 和 Helmfile 简单地部署依赖项的预构建和预优化容器。
●开发模式:这种模式适合正在积极开发的服务。我们使用 Skaffold 构建图像并同步更改,以便开发人员快速查看修改结果并获得反馈。
一般而言,你需要设置“待测”服务和剩余的“稳定依赖项”。依赖关系可以按需启动,就像基于命名空间的方法一样;或者依赖关系始终存在并通过 CI/CD 工作流不断更新的共享层来满足依赖关系,就像请求路由一样。
以上所有这些案例都涉及内部开发人员体验团队维护的工具。这种开发者体验的成本不容小觑,而且我们也不得不思考这样一个问题:“为什么没有适用于这种模型的 SaaS 解决方案?”
Signadot 就是这类的一款 SaaS 工具,可以帮助你共享 Kubernetes 集群并仅在你关心的服务上进行实验。
两名开发人员可以同时使用共享的开发集群。环境不需要模拟,而且运营团队只需维护一个开发集群。
Signadot 绝不是通过开源工具共享开发集群的唯一方式,但它可以处理一些困难的边缘情况,例如服务之间的请求路由,从而降低了多个开发人员共享一个开发集群的难度。
推荐阅读:
▶小米辟谣武汉总部35岁以上员工只保留10%;丰田致歉!200万车主车辆数据遭泄露;jQuery 3.7.0 发布|极客头条
▶突发!沉痛悼念技术大牛左耳朵耗子(陈皓)
▶突发!OPPO 关停“造芯”业务 ZEKU:近 3000 名员工“原地失业”,赔偿 N+3
标签:
精彩推荐
直播吧5月15日讯西甲第34轮,巴萨客场4-2战胜西班牙人,提前夺得西甲冠军。詹俊在微博表示:“祝贺哈维完整
1、如果你们石家庄那边的上年平均工资是36166元,那么计算自己交费的是这样基数算的!36166乘以0 2再乘以你
01大会主题加快工业绿色低碳转型促进经济高质量发展02主办单位工业和信息化部、广东省人民政府、广州市人民
美国布法罗市枪击案一年后枪支暴力与种族仇恨伤痛难愈---5月14日是造成10名非洲裔美国人死亡的布法罗市大规
5月12日,凯淳股份(301001)融资买入3560 62万元,融资偿还3295 81万元,融资净买入264 81万元,融资余额5
香港中环9号码头上挤满粉丝。李志华摄大批悉心打扮的粉丝到场支持。李志华摄香港中环海滨挤满粉丝。李志华
东南网5月14日讯(福建日报记者卞军凯)每一份外卖,都必须使用食品安全封签。入网餐饮服务提供者未能对餐
为兰博基尼倒出一个,最后为十个自然吸气气缸欢呼。兰博基尼的死总是悲惨的,但当得知Huracan已经走到生命
热!北京今天或现今年首个高温日明日高温仍不退场
1、巨擘的意思是比喻在某一方面杰出的人或事物。2、一、读音:[jùbò]二、出处《孟子·滕文公下》:“...
一大早,彭引在重庆万州的办公室里,像往常一样在电脑上使用PCS系统查看气井实时生产数据,突然她愁眉不
1、在我们聊天的时候,为了表达自己的心情,或者活跃聊天的气氛,经常会使用一些语气词。2、在我们聊天的过
1、新加坡并不只是一座孤岛,它由一个本岛和大约63个小岛组成。2、本岛从东到西约42公里,从南到北约23公里
1、人本原理,是管理学四大原理之一,顾名思义就是以人为本的原理。2、它要求人们在管理活动中坚持一切以人
扬子晚报网5月14日讯(记者孙云岳张晨瑆张昊)今天,2023中超联赛第7轮,成都蓉城主场对阵长春亚泰。上半场
格隆汇5月14日丨亚洲联网科技00679HK公布附属公司公司间接全资附属公司于2023年5月12日以总代价约人民币401
1、如何在电脑上开启或取消QQ设备锁登陆自己的qq,点击主界面左下角的主菜单,选择安全-安全中心首页。2、
岱勒新材近日接受调研时表示,一季度公司实现营业收入1 53亿元,较上年同期增长24 90%,实现归属于上市公司
【多地三甲招聘无人报名编制不香了?】如今在网上有个段子:“宇宙尽头就是考编”,多少年轻人为编制“...
为深入推进春季交通安全整治和风险隐患排查专项行动,杨凌示范区公安局交巡警支队自5月13日起全体取消休假
ICE美棉花日线图棉花日线图棉花1小时回顾下这周的棉花行情,
1、长安大学控制工程怎么样长安大学自主设立计算结构力学专业有博士授权。自主设立计算结构力学专业二级学
1、去百度文库,查看完整内容>内容来自用户:茂林控制计划□样件□试生产□生产控制计划编号零件号 最新...
大家好,今日关于【外媒:梅西开场第一次触球就被嘘】的话题登上了各大平台的热搜榜,受到全网的关注度非常
固态电池制造商辉能科技在中国台湾地区投资42亿元新台币建置全球第一座1-2GWh的固态锂陶瓷电池超级
资讯News
06-20
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
聚焦Policy
当好农民工的“护薪人” 近日,罗某等7名农民工在收到被拖欠的工资后,纷纷打电话向江西省南昌市...
“通讯录里所有人都知道我欠钱了” □ 本报记者 韩丹东 □ 本报见习记者 张守坤 ...
大连宝马车撞人案肇事司机被判死刑 本报讯 记者韩宇 10月29日,辽宁省大连市中级人民法院一审...
医院财务迷上网络赌博输光5000万元公款 □ 本报记者 马维博 □ 本报通讯员 汪宇堂 曹...
辊环车削 雕琢毫厘(工匠绝活) 【绝活看点】 23年来,雷虎始终扎根一线,改进钢材轧制工艺...
交警严查超标电动自行车挪用“白牌” 截至昨晚6时,处罚电动自行车违法行为共计6585笔;下一步将...
明起寒潮来袭 北方气温普降10℃以上 中央气象台预计,本周日北京平原地区最低气温降至-4℃左右...
多种蔬菜价格降幅达五成 包括菠菜、蒿子秆等 预计本月中旬蔬菜恢复供需平衡 本报讯(记者...
北京周日最低气温或达-4℃ 本报讯(记者 赵婷婷)北京青年报记者昨天从中央气象台获悉,新一股...
昌平一家四口确诊新冠肺炎 天通北苑第二社区升级为中风险地区 朝阳两涉疫校区及16所学校停课 ...