写点什么

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:1513745

评论

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

探索OS升级迭代的兼容性和安全性!龙蜥社区走进中科方德MeetUp开始报名

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥meetup

Python脚本消费多个Kafka topic

不在线第一只蜗牛

Python kafka

软件测试丨全面解析 Allure 2 的安装与运用

测试人

软件测试

赋能生态系统,Arm 打造全球最大 AI 开发者社区

新消费日报

天润融通携手挚达科技:AI技术重塑客户服务体验

天润融通

倒计时1天!龙蜥社区开源软件供应链及操作系统安全MeetUp即将在广州召开

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥meetup

选择ETL工具需要注意什么技术性问题?

谷云科技RestCloud

数据分析 ETL 数据集成

快递员上门取件API接口接口Domo下载

快递鸟

快递

洞悉数据,守护安全!和鲸助力2024年浙江省交通投资集团数字化主题活动圆满闭幕

ModelWhale

人工智能 交通 数据竞赛

第三代指标平台相较于前两代的显著优势分析

Aloudata

指标管理 指标平台 指标开发

万字长文带你深入Redis底层数据结构

不在线第一只蜗牛

数据库 redis

开放原子校源行(天津大学站) 即将启幕,龙蜥技术专家分享开源技术与实践

OpenAnolis小助手

操作系统 龙蜥社区

香港 Web3 宣言两周年专访 HashKey Tokenisation 总经理 Anna Liu:探索代币化的未来

TechubNews

如何设计实施 Git 工作流程以提升软件研发效能?

思码逸研发效能

git DevOps 编程语言 研发效能 研发效能管理

天润融通解决方案:如何避免门店投诉升级为消费者维权

天润融通

构建真实可靠指标平台:五大核心特征助力企业深度数智化

Aloudata

指标管理 指标平台 指标开发

ChatGPT 开启「眼睛」,实时摄像头对话来了;昆仑万维推出实时语音助手 Skyo丨 RTE 开发者日报

声网

超实用开源前端商城模板,助力电商项目飞速启航!免费直接可用!

恩爸编程

商城项目 商城源码 商城系统 开源商城项目 前端商城模版

产品需求文档在迭代阶段怎样管理

易成研发中心

产品需求 产品需求文档

HarmonyOS NEXT用户专属装扮免费体验!华为主题内容大焕新!

最新动态

鸿蒙NEXT开发案例:血型遗传计算

zhongcx

鸿蒙

喜讯!云起无垠获“中国产业互联网发展联盟IDAC双奖”

云起无垠

作为产品经理,如何分析和管理你的产品需求

易成研发中心

产品需求

【JIT/极态云】技术文档--组织架构简介

武汉万云网络科技有限公司

低代码

人类级别语音 AI 路线图丨 Voice AI 学习笔记

声网

Apache IoTDB v1.3.3 发布|新增数据订阅,DataNode 主动监听并加载 TsFile 等功能

Apache IoTDB

有哪些ppt一键生成软件?这6个AI不容错过!

职场工具箱

效率工具 职场 PPT 办公软件 AI生成PPT

CSA GCR 2024 | 百度安全DDoS防护服务荣获安全磐石奖等多项殊荣

百度安全

鸿蒙NEXT开发案例:简体繁体转换器

zhongcx

鸿蒙

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