What is snowflake server? In this article, I will tell you about an interesting term “Snowflake”. So, what are snowflake servers?
What is snowflake server?
Table of Contents
Snowflake – in a normal context, you can imagine that snowflakes are very fragile and melt. It’s completely different from icebergs. But we’re not here to talk about the weather. Let’s get to the main point.
Snowflake servers are servers with very complex service installations without any documentation.
At this point you imagine that this is the reason why the servers cannot be rebuilt. Installation can be performed by one or a group of engineers. However, during their work, they changed a lot of configuration but at the same time did not rewrite anything.
After a while, the original engineers were unable to install an identical new server. This is an outcome that no Sysadmin/DevOps wants to encounter.
You can easily see that these servers are extremely fragile. Just one mistake can completely destroy it without a backup plan.
How to avoid server snowflake?
The answer that probably comes to mind right away is to document everything. Every small change is recorded. This is completely useful but quite time-consuming to do.
- It takes a lot of time to take notes, especially with small changes.
- It takes a lot of time to install a new environment/server based on the documentation. Even though everything is recorded, reading it and doing it all over again is not fast at all. Which may not meet today’s IT automation needs.
Shell script
A favorite solution in the past (perhaps even now) of many Sysadmin/DevOps and programmers (Devs) is scripting. Shell scripts can be considered a simple form of system documentation.
Shell scripts partly solve the problem of automating IT infrastructure. It has advantages:
- Fast: writing and using scripts is very fast, all operating systems support running scripts.
- Simple, familiar structure: this is a big advantage for previous Sysadmins or Devs..
- Suitable for small tasks.
But it also has disadvantages: for a complex and large or very large scale system, use shell script:
- It takes a lot of time to write and handle all possible cases.
- Difficult to synchronize scripts between servers.
- It is difficult to handle duplicate configuration issues when using scripts.
Configuration management tool
With the above disadvantages of both simple documentation and using shell scripts. Using configuration management tools will become more necessary. It will help make IT infrastructure administration easier. The tool suggested here is Ansible. In addition, there are other tools such as: Chef, Puppet, SaltStack.
Advantage:
- Centrally manage entire system configuration.
- Avoid snowflake servers completely.
- Handle duplicate problem.
- Can be deployed for large and very large scale systems.
Conclusion
This is a small article about the snowflake server. This term also does not appear much on technology blogs in Viet Nam. Therefore, I want to write a short article to talk about it and how to remove it from the IT system.
(This is an article from my old blog that has been inactive for a long time, I don’t want to throw it away so I will keep it and hope it helps someone).