服务
关于
CloudProse博客

2015年7月9日,星期四

部署应用程序的最安全,最一致的方法。它为什么重要,以及Docker如何在不变的工作上迈出了一大步。

在Trek10,我们坚信不变的基础架构和不变的部署。我们认为,这是现代云基础架构中最强大且经常被忽视的方面之一。从来没有听说过?这是故事:

配置管理:并非全部答案

在过去的几年中,Chef,Puppet,Ansible和Salt等配置管理解决方案的兴起使代码定义的配置变得更加普遍。这是一个非常强大的概念:您可以(通常)高度可移植,跨平台的方式使用一些代码来定义已安装软件和其他依赖项的配置状态。这使许多服务器的配置效率更高,并且配置过程的可重复性更高。由系统管理员进行一次性配置的日子已经一去不复返了。

但是,这些工具经常以限制其功能的方式使用。这是术语“不可变的”的出现。这些工具可用于将某些代码定义的更改应用于现有状态。很好,但是现有状态是什么?如果您不能保证某些现有状态,那么如何确定您的更改将达到预期的效果?

不可变的配置管理更加严格:某些代码定义了配置更改,但始终将其应用于具有某种基本或多或少“空”状态的初始系统。通常,这是一个预先构建的映像,例如给定版本的CentOS或Ubuntu。

因此,基本理念是,永远不改变现有状态。进行任何更改时,都将在代码中进行更改,在某个基本的“空”系统上运行该代码,并从头开始构建新的不可变系统,然后用新的替换旧的。这不仅保证了状态的一致性,而且还迫使您使一切自动化。

不可变的部署:始终将其全部替换

因此,如果要从不可变状态定义操作系统配置,那么您的应用程序呢?好吧,同样的原则也适用。如果您通过对现有状态进行一些更改来部署应用程序(即,将一些内部版本复制到文件夹中,覆盖以前的内部版本),则可能会出错。依赖关系可能不匹配,可能未应用所有更改,或者关于现有状态的某些假设可能是错误的。 IT部门中的每个人都处于这种情况下:发生了生产部署,发生了一些故障,每个人都说“但它在登台工作!”。

因此,最佳实践不仅是使用相同的不可变模型部署您的OS配置,而且还要部署您的应用程序。基本上,无论何时要进行更改(无论是针对应用程序,操作系统还是依赖项),都应构建一个全新的不可变状态,然后在暂存环境中测试该新状态,然后进行部署。

超越烘焙AMI

在过去的几年中,在AWS内实现不变配置管理的最常见方法是“烘焙AMI”。 Netflix广受欢迎,其他许多人(包括Trek10)也采用了它。基本思想是使用/构建一些工具,这些工具以某种“空状态”启动新的AWS服务器,使用配置管理工具配置服务器并部署应用程序,然后创建最终的Amazon Machine Image(VM映像)。州。然后,此AMI表示给定的部署,可以将其运送到暂存环境,然后再交付到生产环境。

这是对旧的做事方法的重大改进,并且符合我们上面描述的不可变部署的定义。但是它有一些明显的缺陷……它需要一些不平凡的工具,并且这可能是一个缓慢的过程。当您刚刚为应用程序部署了一个小错误修复程序时,从头开始重建完整的VM并运送其所有GB数据是一种非常低效的模型。

码头工人!

我们认为,这就是Docker真正成为引人注目的解决方案的地方。它解决了许多上述问题,并使不变的基础架构和不变的部署成为更为简单的主张。就像上面描述的那样,Docker容器是一组配置依赖项和应用程序的不可变表示。但是它位于原始虚拟机之上,因此它不包括所有操作系统定义。这使得构建起来更容易,并且移动起来更轻便。这给您带来很多好处:

  • 内置配置管理: 如果您的要求不是太复杂,则只需使用Dockerfile定义依赖项,就无需使用其他配置管理工具。将Dockerfile与Chef Cookbook进行比较后,您会欣赏到简单性方面的改进。
  • 轻量级版本: 通常,构建Docker映像比启动VM,配置它和创建AMI要快得多。
  • 易于移动: Dockerhub和私有Docker注册表使存储和部署Docker映像变得容易。而且,由于图像定义通常是MB而不是GB,因此它的发布或下载和启动速度要快得多。
  • 对本地开发人员有用: 与仅在AWS云中完成烘焙AMI有所不同,Docker易于在本地开发中使用。因此,现在您不仅在阶段和生产中拥有相同的代码定义的不变基础架构,而且在开发中也具有相同的代码。
  • 便携式: Docker具有高度的跨平台和跨基础架构,这意味着您不必再局限于某个基础架构提供商或Linux风格。

底线

如果您想要一致定义的基础架构和服务器,请考虑一成不变。而且,如果您想要一种轻量级的方法来完成此任务,请考虑使用Docker。

已经自己使用Docker或正在考虑试用它?我们已经实现了Docker&适用于世界各地公司的AWS基础架构,很乐意为您提供帮助!向我们发送电子邮件 [email protected].

作者
安迪·沃宗(Andy Warzon)Trek10
安迪·沃宗(Andy Warzon)

创办人& CTO

创办人&CTO Andy一直在AWS上进行开发已有十多年,并且是AWS认证解决方案架构师-专业人士。