Many of us have already heard of the term “software stack.” It shows the software layers in boxes stacking up on each other, all the way from operating system, to middleware, and to applications. When these layers are offered as services, we have IaaS (Infrastructure As A Service), PaaS (Platform As A Service), and SaaS (Software As A Service) respectively for so called cloud service stack. These two stacks are essentially similar if not the same.
If we stop for a moment and think more about the bigger picture, we can find out that the stack is actually aligned with the compute, which is key part of the compute, network, and storage triad.
Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.
How about network stack? There is the famous OSI model with several layers of protocols (physical layer, data link layer, network layer, transport layer, session layer, presentation layer, application layer). So networking is covered. I actually think the software stack was inspired by the OSI model, but haven’t done research on this.
Now is the last part, which is the storage or data. Interestingly, while searching for data stack, I got many top pages on stack of data structure – the one that pushes or pops an item at a time on the top. This is of course not what I intended to discuss here.
What I intend to discuss is at high level – how the data is layered in terms of its meaning abstraction of values. This may or may not relate to the software stack. In other words, there is no direct mapping from a software layer to a data layer.
The following is a diagram on data stack:
On top of that is the file system, which interprets and organizes the bits into files of bytes and characters with specific encodings like UTF-8 for Unicode. These files are more human consumable than the underlying storage. They are also better organized with folders (or directories) in a file system.
Moving up is the model layer, which gives some level of meanings to the underlying files. For example, the underlying text file is interpreted as an XML with a specific schema, therefore can be parsed by XML parsers. There are standard content formats defined by MIME.
At the top of the layers is the domain, which clearly defines the meaning of the data, and makes it ready for a software application to make full sense of it. The meaning is more than the literal interpretation but closely related to domains which set up context for a piece of data.
In the same way in which software stack maps to cloud service stack, the data stack will be offered as data services as well: storage as service (SaS), file as service (FaS), model as service (MaS), and domain as service (DaS).
With this data stack, the story of stack architecture of computing is now complete.