The Snowflake Server is a system which is difficult to reproduce due to the unique and undocumented methods by which it came to its current state. Developers and systems administrators grow to fear altering these servers in case they cause damage.
The Noflake Manifesto proposes that we have reached a point where there is no longer any excuse for such servers to exist.
All servers should:
- Have their hardware specifications known and documented.
- Have their build process automated.
- Have their configuration managed and version controlled.
- Be regularly tested for consistency with documented expectations.
Google Docs and Github wikis, amongst others, allow for collaborative, secure, version controlled document editing.
Build systems do not have to be complicated. Something as simple as a collection of shellscripts, when version controlled and documented, are the seeds of a replicable system.
Open source configuration management and deployment software, including Chef, Puppet and BOSH are well tested, documented and deployed across thousands of production environments.
Companies making use of cloud computing services such as Amazon EC2 can afford to regularly and automatically build new machines to replace existing ones, ensuring no uncontrolled state becomes a dependency.
Don’t build snowflakes.