不可变基础设施 – Immutable Infrastructure

本文禁止转载!

3/8号参加了Docker Beijing Meetup,这是一份迟来的总结。

不过这里我倒不想多说Docker的东西,那天我的话题参见这里(http://glide.so/liubin0329/746ff18f318ba1baaf77)

本文主要想说的是“Immutable Infrastructure”,即“不可变基础设施”这个概念。

这个词汇最初应该是由Chad Fowler提出的,关于Chad Fowler,熟悉Ruby的人都应该知道,是一个热情的Ruby/Rails信者,活跃于各种conferences上,现在也是比较有名的TODO软件公司6Wunderkinder的CTO。

什么是 Immutable Infrastructure?

Immutable Infrastructure,直译过来就是不可变基础设施,所谓基础设施,可以认为是我们平常运维中涉及到的所有硬件、软件等的组合。而所谓的不可变,即安装一次,不做修改,用过即扔。有点像一次性产品,或者可以称为即抛型。

按照“The Codeship Workflow: Immutable Infrastructure”给出的定义,不可变基础设施可以定义为如下:

  1. Automate the setup and deployment for every part and every layer of your infrastructure.
  2. Never change any part of your system once it is deployed. If you need to change it, deploy a new system.

翻译过来就是:

  1. 基础设施中的每层的每个组件都可以自动安装、部署。
  2. 每个组件在完成后将不会发生变更,如果要变更,则丢弃老的组件并部署一个新的组件。

这里所说的每一层,指的是从OS(虚拟机、云主机)到集群、节点管理、直到单个节点上运行的软件的安装配置等。

 Immutable Infrastructure产生背景

当然在很多年以前这个概念是得不到技术支持的,我们很难在不同的物理机上实现软件的不可变。不过随着虚拟化技术以及云计算的发展,现在这已经变得可能了。我们更多的时候,面对的不是一台台的物理主机,更多的是云主机实例。安装一个操作系统也不需要几小时,而只需要鼠标点几下,等上两三分钟即可。重装系统这个概念已经不存在,删掉一个主机实例我们也不会心疼。

Amazon的CTO Werner Vogels曾经说过:

“An EC2 instance is not a server—it’s a building block.”

在云计算时代,我们不能再以传统的眼光看云主机了。

 Immutable Infrastructure带来的好处

  1. 解决环境间差异问题
  2. 快速回滚到老版本
  3. 更好的进行CI
  4. 更好的自动化
  5. 更容易进行大规模运维

Docker带来的新发展

Docker不是完全全新的技术,它基本上是利用了之前存在的各种技术,比如LXC、cgroups、AUFS等。不过最近一年Docker发展真是太迅猛了。

有了Docker之后,部署、开发、测试都将变得更简单、更高效,而且几乎可以在三者之间使用相同的运行环境(Docker镜像/容器)。有新版本的代码后,只需要创建个新的Docker镜像即可,开发测试和线上生产环境都可以使用相同的Docker镜像,估计你以后再也不会说“在我的机器上明明运行的挺好的啊”这样的话了。

更多Docker相关信息请参考上面最开始的那个链接。



Posted in Docker, Tech Tagged with: , , , , , , ,

无觅相关文章插件,快速提升流量