SnowFlakes服务器,Phoenix服务器和不可变服务器的优缺点是什么?


15

我很好奇一个矩阵,例如对每种服务器的安全性/管理简便性/取证能力进行比较。我可能还会忘记每种类型的其他一些关键功能。

我对类型有一个大致的了解,但是在某些情况下(例如,对于应用程序而言自动化变得复杂时),在它们之间进行选择时,引用矩阵会有所帮助。

为了避免担心它的范围太广,我认为将其拆分为多个问题会分散信息,并且有关安全性比较的问题也需要比较每种类型。

Answers:


16

Phoenix Server一词是由Martin Fowler的一个同事创造的,而这三个术语在Martin bliki的短文中都有描述。

文章中介绍了每个此类服务器的优缺点。主要区别在于服务器的管理方式。

存在服务器来履行某些应用程序的容器作用。由于应用程序经常更改,因此经常需要更改容器的某些属性,例如程序包,配置等。有时还需要由于外部原因而更改容器本身的属性,例如需要修补程序的安全漏洞。被安装。

有几种更改现有服务器的方法:

  1. 首先手动创建服务器,然后在每次需要更改时都不断更改其内容(变异)。
  2. 通常以自动化方式(而非手动方式)为基于“配方”的服务器“烘焙”图像。然后从该映像创建服务器。并对每个更改重复此过程。

前者称为Snowflake,而后者是允许使用Phoenix和Immutable服务器类型的实践。“不可变”表示在创建现有服务器后不会对其进行任何更改,而Phoenix则表示服务器已完全销毁,并在更改过程中使用新的服务器来替换它。


9

当我更多地考虑每种类型的优缺点列表时,这是我的观点(并非详尽无遗,这是我认为重要的操作观点):

  1. 雪花服务器

    • 它们是什么:具有特定配置的系统,数据中心中没有其他服务器具有完全相同的参数。它们通常是手动管理的。

    • 优点

      • 满足他们正在运行的需求。
      • 长寿的更新通常是短裤。
      • 适用于托管产品充分记录了调整的特殊情况。
    • 缺点

      • 有时更新会留下未使用的文件,清理可能很复杂。
      • 当必须对多台机器进行更改时,需要花费一些时间。
      • 没有什么可以防止未记录的更改。
      • 如果发生损坏,则必须重建基本操作系统并进行还原,某些操作系统的调整无法还原,应重新应用,很容易越过一条线而忘记重要的调整。
      • 通常由于手动配置而无法提供。
  2. 凤凰服务器

    • 它们是什么:由某些代码自动配置。
    • 优点

      • 由代码定义,可版本控制。
      • 轻松复制到某个时间点。
      • 寿命长,更新也短。
      • 对受控文件的更改已记录在案,并且不会被忘记。
    • 缺点

    • 有时更新会留下未使用的文件,清理可能很复杂。
    • 并非所有内容都在代码管理下,如果不包括在自动化中,则可能会遗漏人为进行的一些调整。
  3. 不可变的服务器

    • 它们是什么
      • 通常无需访问即可从主映像自动进行一次预配。
    • 优点

      • 由代码定义,可版本控制。
      • 轻松复制到某个时间点。
      • 由于通常取消了远程访问,因此减少了攻击面。
      • 固定配置,任何更改都不会破坏
      • 可从主映像轻松扩展“按需”。
    • 缺点

      • 它们是不可变的,您必须确保可以在0day漏洞影响您的情况下快速发布更新。
      • 并非所有应用程序都适合该模型(例如,数据库并非总是可以完全替换相同的数据,需要进行迁移)。
      • 为崩溃和日志管理的取证分析带来了一些新的挑战。

这些模式都不是唯一的,您必须根据实际需要选择最佳模式。对于灾难后的恢复,雪花会带来很多问题,因此通常在Phoenix和Immutable之间进行更多选择。


2

这三种都是不同的模式,不是在任何特定情况下选择使用哪种模式的情况,而是知道何时识别可以帮助或伤害您的模式的情况。

雪花服务器

雪花服务器是非常表示当以不受控制的方式于点a服务器演变时,它不能容易地再现的情况下的反模式。

我在生产中已经使用这种服务器进行过多次磨合,它们很容易被发现,因为通常会有大量失败的更改和注释,例如“它[更改]在开发/测试/ UAT /阶段中有效”。

凤凰卫视

一个凤凰服务器更是一个主要比的图案Martin Fowler的所说的:

服务器应该像凤凰,定期从灰烬中升起。[一种]

如果将IT服务管理(ITSM)或ITIL语言应用于相同的情况,则可能将其称为IT服务连续性计划或恢复计划:

每个服务的单独计划应为事件的每个阶段提供详细的程序和分步指南,以使恢复团队能够恢复服务,从而满足商定的流程和组件RTO。

不可变的服务器

一个不可变的服务器不可改变的基础设施是我们对待所有部署的基础架构,配置和代码完全不变的,即不变的过程。当我们部署任何新内容时,我们会启动新的基础架构并将代码部署到此基础架构。有趣的是,这基本上可以满足传统上由Evergreening满足的需求。


笔记

  • Martin的同事Kornelis Sietsma在内部讨论列表中提出了“ Phoenix Server”一词。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.