写点什么

Lyft:用 SaltStack 代替 Puppet

  • 2014-08-25
  • 本文字数:1638 字

    阅读完需:约 5 分钟

美国拼车应用创业公司Lyft 宣布用 SaltStack 代替 Puppet 作为其系统配置管理工具。根据 Lyft 工程师 Ryan Lane 在其博客中的叙述, Ansible 也在考虑之列。但 Lyft 在综合考虑易用性、成熟度、性能和开发社区等因素后,认为 SaltStack 更胜一筹。

就易用性而言,SaltStack 复杂的文档结构和密集的文字,使得其学习曲线更为陡峭。Ryan 表示,虽然 Ansible 的文档对初学者而言更简单易读,但随着项目规模的增大,SaltStack 的文档对开发者的帮助更大。深入分析配置文件(Ansible 中称为 playbooks,SaltStack 称为 stat definitions)突显了二者的区别。Lyft 的工程师发现,SaltStack 保持了输入、输出、配置文件的一致性,所有文件均使用 YAML 格式,而 Ansible 则使用不同的文件格式(INI,YAML)。循环和条件的实现方式也不同。Ansible 将逻辑部分内嵌在 DSL 中,而 SaltStack 使用 Jinja (一个 Python 模板引擎)。Ryan 和他的同事更喜欢 SaltStack 的方法。另一个决定性的因素是 SaltStack 拥有“卓越的”自省(introspection)性能。

在成熟度方面,针对 Lyft 的用例,Ansible 和 SaltStack 都能提供所有必要的性能和足够的成熟度。不过 Ryan 发现 SaltStack 有更丰富的特性:可以以不同的文件格式输出到不同的位置;可以从不同的来源加载 pillars (其本质是一种数据结构);如果以代理模式运行,可以通过 reactor 系统触发本地事件。

性能方面,以 Lyft 的用例做测试,SaltStack 速度更快,尤其是在 no-change 运行模式下:

Salt:

  • Full run: 12m 30s
  • No change run: 15s

Ansible:

  • Full run: 16m
  • No change run: 2m

在相同的应用场景下 SaltStack 的运行速度远远快于 Ansible,Ryan 因此曾在 Ansible 上提交过一个问题,不过该问题目前已经关闭。Ansible 的创始人Michael DeHaan 在Hacker News 上提供了一篇关于Ansible 性能调节的文章,不过文章内容并没有回应Ryan 对于在Ansible 中用户相关操作运行缓慢的抱怨。

至于开发社区,Ryan 和他的同事认为SaltStacks 更为友好,开发者数量也更多。虽然Ryan 说“Ansible 几乎是由mpdehaan 一个人开发的”,但Michael DeHaan表示 Ansible“目前有 810 名贡献者”。Lyft 的工程师们还认为 SaltStack 社区是个更友好、更有助于开发者的社区,对特性请求的接受度也较高。与 Asible 相比,他们可以向 SaltStack 提交更多的变更,虽然 SaltStack“有时候在接受代码时不够严格(我希望看到更多的代码审查)”。这似乎是个项目管理的哲学问题,而 Michael DeHaan 在 Hacker News 上写道“当我们不同意时一定会拒绝。我认为这非常重要。筛选和测试在一定程度上决定了一个项目。”

促使 Lyft 选择替换 Puppet 的主要原因是其复杂的、有将近 10000 行代码的代码库。因为 Lyft 遵从“谁开发,谁运行”的原则,其 DevOps 团队认为 Puppet 代码库不再适合开发者使用。而使用 SaltStack 和 Ansible,用 1000 行左右的代码就能复制 Puppet 的架构。

当被问到彻底重写 Puppet 的可能性时,Ryan 写道:

从头开始重写可能会大幅降低代码量,可能也会降低运行时间。即便如此,我认为重写 Puppet 会耗费我相当长时间。

Lyft 对新工具有几个主要的需求。工具应该允许无主架构,因为主节点增加了“一个不必要的故障节点,同时牺牲了性能”。代码应该能顺序阅读,而不会有任何优化打破该原则。代码应该简洁,有少量的配置管理抽象。工具应该支持将横切配置(例如监控)和服务 / 应用特定配置放置在不同代码库的设计。

InfoQ 发表过一个基础架构配置管理工具的系列,其中就有 SaltStack Ansible 的介绍。我们也组织过一次该领域主要产品的用户间的虚拟座谈会。有意思的是,Ryan 指出的SaltStack 和Ansible 的几项特点,在我们的虚拟座谈会中也被重点提到过。

查看英文原文: Lyft Replaces Puppet With SaltStack


感谢赵震一对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-25 17:085476

评论

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

有了这个云端Mock功能,你的简历起码提升30分!

Liam

前端 Postman 前端教程 API文档 前端工具

哪些人比较适合加盟自助洗车

共享电单车厂家

加盟自助洗车

24小时无人自助洗车要如何加盟?

共享电单车厂家

自助洗车加盟

为什么PO的角色在Scrum框架中不可替代

ShineScrum

Scrum 产品经理 PO 产品负责人

雅加达利用SAS优化抗疫救助资金发放,帮助中小微企业度过难关

E科讯

将虚幻引擎5与Perforce Helix Core集成使用吧!

龙智—DevSecOps解决方案

perforce 虚幻引擎5 Helix Core

字节跳动数据库的过去、现状与未来

火山引擎开发者社区

数据库 微服务 分布式数据库

那些年,我们在Apache SeaTunnel 2.1.0部署中踩过的坑【含源码分析】

Apache SeaTunnel

Apache 大数据 开源 workflow Seatunnel

看完这篇异地多活的改造,我决定和架构师battle一下 / 得物技术

得物技术

架构 容灾 双活 双活容灾 异地多活

洗车行业前景好不如开个自助洗车店

共享电单车厂家

自助洗车加盟 开自助洗车店

关键点标注的酷炫,你想象不到

澳鹏Appen

人工智能 数据标注 数据训练 关键点检测 关键点

将不费吹灰之力成为卷王的秘籍传授于你!

龙智—DevSecOps解决方案

Jira插件 龙智自研插件 Jira飞书插件

【高并发】你知道吗?大家都在使用Redisson实现分布式锁了!!

冰河

并发编程 多线程 高并发 异步编程 6月月更

展示 Postlight 的 WordPress + React Starter Kit

海拥(haiyong.site)

WordPress 6月月更

6元自助洗车机一般都什么价位

共享电单车厂家

自助洗车加盟 6元自助洗车机

使用Sonar来优化您的基础架构代码

龙智—DevSecOps解决方案

漏洞 SonarQube

OpenHarmony 3.1 Release版本关键特性解析——OpenHarmony新音视频引擎——HiStreamer

OpenHarmony开发者

Open Harmony

C#入门系列(一) -- 初识C#语言

陈言必行

C# 6月月更

了解es6语法简介

小恺

6月月更

DataPipeline:让数据生产力的历史进程,再前进一步

DataPipeline数见科技

DataOps 数据管理

移动端异构运算技术-GPU OpenCL编程(进阶篇)

百度Geek说

2022云原生网络趋势 | K8s托管整个基础设施、多云、边缘计算、安全等场景,将云原生网络带向新战场

York

云原生 网络 Kube-OVN cni 6月月更

博睿数据拨测入场加速广电深度融合

博睿数据

智能运维 博睿数据 智慧广电

自助洗车机还能加盟你不知道吧?

共享电单车厂家

自助洗车机 自助洗车加盟

孩子上网冲浪更安全,这份儿童节礼物值得拥有

最新动态

从冬奥跳台飞跃向千家万户:联通“臻宽带”的起跳瞬间

脑极体

Redis 忽然变慢了如何排查并解决?

码哥字节

redis Redis 核心技术与实战 6月月更

顶级好用的 React 表单设计生成器,可拖拽生成表单

蒋川

低代码 开发工具 React 表单 组件

InfoQ 极客传媒 15 周年庆!无限生长未来可期!

InfoQ写作社区官方

热门活动 InfoQ极客传媒15周年庆

八大误区,逐个击破:担忧安全防护与合规性?这可能是您对云最大的误解

龙智—DevSecOps解决方案

Atlassian atlassian云版 Atlassian白皮书

特别的儿童节,OceanBase 送上一份特别的惊喜

OceanBase 数据库

oceanbase

Lyft:用SaltStack代替Puppet_DevOps & 平台工程_João Miranda_InfoQ精选文章