HiveBrain v1.2.0
Get Started
← Back to all entries
patternModerate

What are the pro and cons of SnowFlakes Servers, Phoenix Servers and Immutable Servers?

Submitted by: @import:stackexchange-devops··
0
Viewed 0 times
prothewhatserversaresnowflakesphoeniximmutableandcons

Problem

I'm curious about a matrix like comparison on security/ease of management/forensic ability for each type of server. I may forget some more key features of each type also.

I've a general idea about the types but a reference matrix would be of help when choosing between them on some cases (when the automation become complex for the application for example).

To avoid concern about it being too broad, I feel that splitting it in multiples question would scatter the information and that a question about security comparison would need to compare each type also.

Solution

The term Phoenix Server was coined by a fellow of Martin Fowler, and all three terms described in short articles on Martin's bliki.

  • Snowflake Server



  • Phoenix Server



  • Immutable Server



The pros and cons of each such server are described in the articles. The main difference being in the way the server is managed.

Servers exist to fulfill the role of a container for some application(s). Since applications change often, it is often required to change some attributes of the container - such as packages, configuration, etc. It is also sometimes required to change attributes of the container itself because of external reasons, such as security vulnerabilities that require patches to be installed.

There are several ways to change an existing server:

  • Manually create the server initially, then keep changing its content (mutating) each time a change is required.



  • "Bake" an image for a server based on a recipe, usually in an automated way (not manually). Then create servers from that image. And repeat this process on every change.



The former is called Snowflake, while the latter is a practice that allows Phoenix and Immutable server types. Where Immutable states that no changes are made to an existing server once it was created, and Phoenix means that a server is destroyed completely and a new one is used to replace it during the change process.

Context

StackExchange DevOps Q#49, answer score: 17

Revisions (0)

No revisions yet.