【译】基础设施即代码

原文https://martinfowler.com/bliki/InfrastructureAsCode.html

基础设施即代码是一种像其他软件系统一样通过源代码定义计算资源和网络基础设施的方法。代码可以被用来进行评审和反复构建(https://martinfowler.com/bliki/ReproducibleBuild.html) ,遵循测试实践, 完全适合持续交付(https://martinfowler.com/bliki/ContinuousDelivery.html) 。 它是过去十年用来适应不断增长的云计算平台(https://martinfowler.com/bliki/CloudComputing.html) 的方法,并且以后会成为处理计算基础设施的主要方法。

Paste_Image.png

我在石器时代(https://www.thoughtworks.com/insights/blog/infrastructure-code-iron-age-cloud-age) 长大,当要发布一个新的服务应用意味着要去找些硬件来运行,为了让硬件满足应用需求需要配置硬件,并将应用部署到硬件上。管理这些硬件通常是昂贵的,但也是长期的,通常是几个月。但现在我们活在云时代,启动一个服务器只是几秒的事,只需要互联网和一个信用卡。这是一个动态基础设施,软件命令用于创建服务器(通常是虚拟机,也可以是裸机的安装包),管理和销毁它们,手头不需要有螺丝刀。

实践

基础设施即代码基于一些实践:

  • 使用定义文件:所有配置都定义在可执行的配置定义文件里,如shell脚本,Ansible playbook,Chef recipe,或者Puppet manifests。任何时间不需要登录服务器做一些运行时调整。任何此类调整都会造成SnowflakeServer(https://martinfowler.com/bliki/SnowflakeServer.html) ,这些变更都要在开发编码时进行最后的调整。这意味着用代码做变更需要很快。幸运的是计算机执行代码很快,它们管理上百台服务器比任何人类打字都快。
  • 自说明系统与处理:与给人类看的文档说明,并依赖一般标准的人类可靠性,代码更加精确且在运行时绝对一致。如果可能,其他人类可读的文档可以从这些代码里生成。
  • 版本化所有东西: 将所有这些代码放在源代码管理中。这样所有的配置和所有的变更都可以被审查并记录,你可以用重复构建(https://martinfowler.com/bliki/ReproducibleBuild.html) 来帮助发现问题。
  • 持续测试系统并处理:测试能让电脑在基础设施配置中快速的发现许多错误。用现代的软件系统,你可以给你的基础设施代码设置部署流水线(https://martinfowler.com/bliki/DeploymentPipeline.html) ,这样你可以实践基础设施变更的持续交付(https://martinfowler.com/bliki/ContinuousDelivery.html) 。
  • 小步变更而不是批量变更:基础设施更新的越大,越有可能存在问题并更难检测错误,尤其是一些相互影响的情况。 小变更对于找错误更容易而且容易回滚。 当变更基础设施时频率能减少难度(https://martinfowler.com/bliki/FrequencyReducesDifficulty.html) 。
  • 保证服务持续运行:系统升级或修复不能接受宕机。蓝绿部署(https://martinfowler.com/bliki/BlueGreenDeployment.html) 和并行变更(https://martinfowler.com/bliki/ParallelChange.html) 技术能保证进行小变更而不需要损失可用性。

收益

这些动态基础设施技术都让我们很容易的启动新的服务器,当新的配置替换上去或负载变小时安全的销毁机器。创建新服务器只是通过运行脚本来按需创建服务实例的一个例子。这种方式非常适合PhoenixServers(https://martinfowler.com/bliki/PhoenixServer.html) 和ImmutableServers(https://martinfowler.com/bliki/ImmutableServer.html) 。

用代码定义服务器配置意味着在服务器间有绝对的一致性。手动调整配置往往像雪花一样会有一些微妙的差异,经常会导致诡异的问题并难以调试。这个问题在有不一致的监控时更早,所以一样用代码保证监控也是一致的。

最重要的是用配置代码保证变更更安全,在升级应用和系统软件时承担更小的风险。问题可以被定位和更快的修复,最差的情况下也可以回滚到上一次的工作配置。

将基础设施像版本控制一样管理有利于兼容性和审查。每一行你对配置的变更都可以被记录并不容易出问题。

所有这些在你需要控制更多服务器时都显得更重要了 ,如果你正在向微服务(https://martinfowler.com/microservices) 迁移,基础设施及代码成为一个必要的能力。基础设施即代码技术可以用来管理大集群服务器,无论是配置服务器和处理它们如何进行交互。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,392评论 25 707
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,436评论 6 428
  • 最近,走路或坐公交的时候,偶尔会冒出我竟然在厦门感想。如若让5年前的自己猜此刻,我绝对会猜不到。按照常理出牌的话:...
    Ivy虞姬阅读 239评论 0 0
  • 欧文投进的那个三分,成了压死骆驼的最后一根稻草。 第1节 没崩,两支队伍紧紧撕咬着比分。 第2节 勇士领先7分结束...
    会卖萌的小尾巴阅读 297评论 0 0