Few months ago, I was started to planning my own stack for server management. I was considering structure, thinking which programming language would I have benefit, thinking about expansions later, and so on… And a few weeks ago I started to implement some core services of mine.
Let it have a name, and let it be Olympus!
To be honest, I am bad with naming. And I thought it would be boring to name it like “SuperDuperSomething” or similar. But I like mythology and I was thinking like “What about names from Greek mythology? It would be fine, they already named about everything each other”. And this is how I ended up with Olympus as project name.
In the first round, I make the core services which will be essential to control my cluster. Component names can be seen on the following picture.
Zeus, the king of gods
Zeus is the king of gods. He controls everything by giving orders to the other gods and their servants.
I named cluster controller after him. Task of this component will be:
- Supervise/Monitor the cluster
- Supervise/Monitor/Recover services which are running in the cluster
- Decide what action should happen on which system
- Propagate information/trigger to other components by using Hermes
Hermes, herald of the gods
Hermes is a herald, he is taking news and information among other gods. This component task will be similar.
This component will store and deliver information and triggers among other components. This component’s task will be the following:
- Store information in-memory
- Serve other components with information on a very fast way (with other words, it must have big CPU bound)
- Next to get “poll type” action, it must provides push notifications for those components which are listening
Argos, all seeing eye
Argos is a giant who has hundreds of eyes. In this ecosystem, this component task will be to monitor log files and incoming messages.
If Argos sees any problem or something worth to remark, then it propagate the information to Hermes, who can deliver this information to proper components to check. Then other components can decide that there is something to do or not.
Chronos, the time itself
Chronos is the timer itself. In each server environment, even small or big, we need to execute actions in timely manner, for instance: regular active monitoring.
Chronos task will be execute tasks in timely manner. But supervising that task is successfully executed belongs to another component.
Hephaestus, the builder
Hephaestus is a craftsmen. This task will be build process (pipelines), run then for external trigger and supervise this process.
If the process is failed for some reason, it can report it to Hermes.
Hephaestus can get trigger from manually, but it can receive triggers from Chronos. Hephaestus can also receive triggers from Athena.
Apollo, god of knowledge
Apollo, among others, god of knowledge. This component will be a web-based application.
This will be a knowledge center, where notes can be taken for later usage. It also will have a built-in inventory system.
Apollo will report to Hermes for actions what it made and further actions can be take in chain. For instance: after a document is changed, trigger a pipeline in Hephaestus which will inform other users about the change.
Athena, god of wisdom
Athena will be the most complex component. It will be a rule-based system, which receiving different kind of information, determine the problem and start recovery if possible.
For problem determination, it will call Argos and Apollo’s help for more information, if required. Then try to find out a solution for the issue and execute the proper pipeline in Hephaestus.
With other words, Athena will be an automation system.
Final words
More components will be done later (e.g.: Single Sing-On), after they are done to expand functionality of Olympus. But at the first round, I figured out, that these are the core components. It will be a good challenge to make them, test them and improve them continuously.
It will be also interesting as extra, that I just don’t make them to run on single system. They must work and communicate in a Linux cluster. Phase of development of different components will be updated here on this blog in form of articles.