2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Slack 对 Chef 架构进行改进,提高其安全性和稳定性

作者:Matt Saunders

  • 2024-11-29
    北京
  • 本文字数:1393 字

    阅读完需:约 5 分钟

Slack 对 Chef 架构进行改进,提高其安全性和稳定性

在近期的一篇博文中,Slack 的工程部详细介绍了他们在 Chef 基础架构上的重大改进,将管理着上万个 EC2 实例中运行的服务、数据库和应用程序的架构从单一的 Chef 堆栈转移为了弹性更强的分片基础架构。


这次的架构转移,Slack 希望能解决一些之前难以解决的限制问题:


  • 为节点分配分片

  • 发现周围邻居

  • 找寻 Chef

  • 上传常用代码合集(Cookbook)


在先前的设置中,Slack 是在沙盒、开发和生产这三个环境中使用一个 Chef 栈。这种架构风险很高,因为更改是会在不同环境中同时部署的,堆栈中的任何问题都可能影响整个基础架构。这套系统是用一个叫 DishPig 的流程来处理每小时触发的 cookbook 更新。



为了解决这些限制,工程团队进行了以下几项关键改动:首先是创建多个 Chef 堆栈,以便于分散负载并确保系统的弹性,新的实例采用 AWS Route53 加权 CNAME 记录并分配给特定分片。此外,Slack 工程团队还将开发和生产环境的 Chef 基础架构分离成不同的堆栈。


为解决在新分片基础架构中发现节点的难题,Slack 工程团队采用了 Consul 来做服务发现。这点需要仔细地实施,从而避免与 Nebula 重叠网络之间产生循环依赖关系。团队开发了定制的 Chef 库函数,从而简化基于各种条件的节点查询,有效地取代了先前的 Chef 搜索功能。


Slack 还创建了一项名为 Shearch(“分片 Chef 搜索”的简称) 的新服务,用于在多个 Chef 堆栈中进行搜索,还可以整合在不同分片上的搜索结果。Slack 团队还开发了一项叫做 Gnife 的新工具,取代传统 Chef Knife 命令来实现跨多个分片的操作。


团队采用 Chef Librarian 取代了 DishPig 系统,这项服务可以独立管理 cookbook 的版本和环境更新,从而实现更为可控的部署。在合并变更时,GitHub Actions 会生成一个包含全部代码库副本的压缩包,并用时间戳格式(YYYYMMDD.TIMESTAMP.0)更新 cookbook 的版本。


Chef Librarian 提供了更新环境到特定版本和环境相互匹配功能的 API 端点,利用 Chef Librarian,Slack 可以在沙盒和开发环境中对更改进行测试,然后再推送到生产环境,从而降低了出问题的更改影响所有环境的风险。这项服务会将工作版本和部署信息存储到 DynamoDB 中,可以更为方便地跟踪和查看。



当用户的变更被推送到环境中时,Slack 应用会通知用户并使用 Git 中的 commit 备注判断并标注对应的团队成员。Kubernetes CronJob 负责跨环境的版本推送和安全检查,以便在发现问题时阻止推送。


Slack 将角色简化到基本信息和运行列表,让 Chef 角色(无法通过版本控制)的风险降到最低。只有在相关环境更新时,角色才会上载到相关的 Chef 堆栈中。


Slack 在考虑更进一步地改进其 Chef 基础设施,其中一项是按照 AWS 可用性区域划分生产的 Chef 环境,这样可以对变更的部署进行更为细粒化的控制。Slack 还在探索采用 Chef PolicyFiles 和 PolicyGroups 的可行性,不过这将会对他们当前的设置带来巨大的改变。


和十年前的风光不同,Chef 不再是那么地受欢迎,这可能是由于 Ansible 和其他云原生解决方案等替代品的兴起。IT 行业向容器化的转变改变了许多企业的配置管理方式,多数企业转投了 Kubernetes 和 Docker 的怀抱。Chef 在 2020 年被 Progress Software 收购可能也影响了它在长期的采用率。


即使如此,Chef 仍然拥有坚实的用户基础,这在已实施了 Chef 或者是有适合 Chef 方法的特定用例的组织中尤为突出。


查看英文原文链接:

https://www.infoq.com/news/2024/10/slack-chef-architecture/

2024-11-29 08:1513755

评论

发布
暂无评论
发现更多内容

Activiti数据库表结构

金陵老街

在华为P50 Pro中,听到AI异构通信的朱弦三叹

脑极体

如何利用 SEI 实现音画同步?

ZEGO即构

音视频 音画同步 数据流录制 flv

进化十多年,四足机器人的网红属性有改变吗?

脑极体

markdown不支持代码块和表格,离开这里了

DBKernel

字节架构师离职后,熬夜整理55W字Java面试手册,逆风翻盘进阿里

Java 编程 程序员 架构 面试

DevOps如何攻克研发流程六大痛点?

BoCloud博云

排查指南 | 两个案例学会从埋点排查 iOS 离线包

蚂蚁集团移动开发平台 mPaaS

mPaaS

腾讯「小借条」引发的思考:区块链+的商业模式让各企业争先恐后的奥秘

CECBC

netty系列之:netty中的懒人编码解码器

程序那些事

Java Netty nio 程序那些事

DevOps 调查第十年,如何借助工具实现落地?

飞算JavaAI开发助手

DevOps 基础软件 自动化平台

前端基础五之jQuery基础

ベ布小禅

8月日更

Go- 基本类型和运算符

HelloBug

Go 语言 布尔类型 基本类型和运算符 数字类型

Fil火爆的原因是什么?fil未来价格会多少钱一枚?

分布式存储 IPFS fil fil价格 fil行情

替换及重置Homebrew默认源以及M1安装

一个大红包

8月日更

凭借一份“面试真经pdf”,我四面字节跳动,拿下1-2级offer

Java 程序员 面试 后端 计算机

租房市场是流动的么?

escray

生活记录 8月日更 搜房记 租房

坚持“一城市一矿山” 拾起卖争当循环产业领跑者

InfoQ 天津

【六顶思考帽】学习心得

LeifChen

8月日更 六顶思考帽 创新思维

千字真言,字字珠玑,我的Golang学习笔记,赤诚分享

奔着腾讯去

Go 语言

牛掰!“基础-中级-高级”Java程序员面试集结,看完献出我的膝盖

Java 编程 面试 IT 计算机

「古老」茶产业碰上「年轻」区块链,能否擦出新火花?

CECBC

腾讯、阿里纷纷看好的NFT,能否成为拯救区块链的良药?

CECBC

fil挖矿难度大不大?fil挖矿1T收益是多少?

fil挖矿难度大不大 fil挖矿1T收益是多少

Apache APISIX 在 Airwallex 的应用 | 专访 Airwallex 技术平台负责人李杨

API7.ai 技术团队

Apache 开源 案例分享 api 网关 APISIX

fil挖矿必看!fil挖矿步骤有哪些?fil挖矿的效率如何?

分布式存储 IPFS fil fil挖矿

浅谈云上攻防——Kubelet访问控制机制与提权方法研究

腾讯安全云鼎实验室

k8s 云安全

Go 让 Apache APISIX 如虎添翼

API7.ai 技术团队

Apache 开源 插件 APISIX Go 语言

狂刷《Java权威面试指南(阿里版)》,冲击“金九银十”有望了

Java 程序员 架构 面试 大厂

字节大牛的1850页Leetcode刷题笔记外泄!用实力折服众人

Java 程序员 字节跳动 面试 算法

厉害!GitHub星标70K阿里大佬手写的Spring Boot实战手册真不错

Java 编程 程序员 架构 计算机

Slack 对 Chef 架构进行改进,提高其安全性和稳定性_架构_InfoQ精选文章