Abstract
Before we dive into the architecture of each layer of the stack. I want to briefly introduce the abstract concepts that are true in all layers. The following sections will only deal with the technical implementation of these concepts. They will only show different architectures.
I tried to tackle this concepts with an engineering fashion, stealing a bit from the complexity theory and the theory of computation.
Computation
This concepts is probably also the most fundamental. Computation is a process that takes some input and produces some output. The input and output can be anything, but in the context of this cookbook, both input and output are data. In each layer we will try to understand who are the agents of computation. Who is that transforms the data from one state to another. Computation is what mainly drives the cost of the system in terms of entropy and therefore in terms of money and energy. This is why this is where we should focus our effort to best gather results from our system.
The challeges here are:
- make computation as efficient as possible in terms of time, energy and money. Of course this is a tradeoff, but we should always try to find the best balance.
Data
Data is the medium of computation. It is the input and output of computation. This is what we apply our algorithms against. This is most straightforward concept but still essential for the properties that hold.
The challeges here are:
- saftely store data so that it is not lost. I can’t stress enough how important this is. Data is the most valuable asset of any system. Whithout data there is no need of transport anything and no need of computation.
Transportation
Ideally data is always accessible to be compute but in the real world this is often not the case. This is way this is a fundamental concept for out purposes. In computer science usually this layer is often forget and the focus is one the computation (algorithms) and the data (data structures). This is becuase in the context of computer science, the hypotesis is that the data is always accessible. However this assumption is backed by the amazing jobs that many network engineers do, and is something we will have a great deal of focus on. I believe the concept of networking and transportation is what most of computer science engineering often more lacks on of the three.
The challeges here are:
- make data accessible to computation
- protect data from unauthorized access
Stack
The stack I will present in the following pages is composed by 5 layers:
More on that
If I catch your interest, I recommend you the following resources:
- The Art of Computer Programming
- Stephen Wolfram on Computation
- Concept of entropy
However they are far from the homelab focus of these cookbook. They are still coupled with the main ethos of this cookbook, that I have previously described in the overview. All of this basically deal with the same concepts, but from different perspectives and different environments.
I am a overly obsessed with the concept of computation so if you want to discuss about it from both a more phylosofical or mathematical point of view or, feel free to reach out to me.