A software design pattern is a description or template which defines how to solve a problem which can then be used in many different situations. The important part of a software design pattern is that it has a common name and way of being described that once learned can be talked about by name only instead of all the details that it describes.
The ultimate goal of any technical architecture should be to make it easily described and understood by others. A well documented architecture will be easier to talk about, explain and implement. It is important to have a name that represents the architecture and the description so that it will not be confused with other concepts. Standard diagrams are also extremely important to convey the ideas to a broad audience.
With all of that being said, I didn’t come by the name of the Zeta Architecture by throwing a dart at a poster of the Greek alphabet I have hanging on my wall. Instead I wanted a name that would mean something, be relevant to the architecture and support the concepts it encompassed.
The high level component view of this architecture is intended to support the goals defined for this new architecture. It is not intended to dictate which specific software or project, open source or otherwise that must be used. There are seven pluggable components of this new architecture, and all of the components must work together:
- Distributed File System - Utilizing a shared distributed file system, all applications will be able to read and write to a common location which enables simplification of the rest of the architecture.
- Real-time Data Storage - This supports the need for high-speed business applications through the use of real-time databases.
- Pluggable Compute Model / Execution Engine - Different groups within a business have different needs and requirements for meeting the demands put upon them at any given time, which requires the support of potentially different engines and models to meet the needs of the business.
- Deployment / Container Management System - The need for having a standardized approach for deploying software are important and all resource consumers should be able to be isolated and deployed in a standard way.
- Solution Architecture - This focuses on solving a particular business problem. There may be one or more applications built to deliver the complete solution. These solution architectures generally encompass a higher level interaction amongst common algorithms or libraries, software components and business workflows. All too often solution architectures are folded into enterprise architectures, but there is a clear separation with the Zeta Architecture.
- Enterprise Applications - In the past these applications would drive the rest of the architecture. However, in this new model there is a shift. The rest of the architecture now simplifies these applications by delivering the components necessary to realize all of the business goals we are defining for this architecture.
- Dynamic and Global Resource Management - Allows dynamic allocation of resources to enable the business to easily accommodate for whatever task is the most important today.
Pretty much everyone in the world seems to know that “Z” is the last letter of the English alphabet. Often times people who are not familiar with Greek letters will say that Zeta is the last letter in the Greek alphabet. They draw this association to the English alphabet just because Zeta starts with the letter Z. However Zeta is actually the sixth letter out of the twenty four in the Greek alphabet.
As I documented this architecture there were six pieces that in some capacity or another needed to know about each other in order to properly interact. The seventh piece which is very important to the overall architecture sat in the middle of the initial six pieces touching each of them. The first six don’t need to know about the seventh in order to work, but for the architecture to really deliver the most benefits, all seven must exist and work together in a heterogeneous way.
There were two different perspectives that are equally important that could be seen in this architecture. Zeta in Greek numbers represents the number seven. This is ultimately why I settled on calling this architecture Zeta.
The hexagon was chosen to represent this architecture as there are six major pluggable components that must work in harmony with the global resource management. There are six major components but really seven total pieces. The location of the components in the hexagon were chosen with good reason as well. The distributed file system sits at the bottom as everything is built on top it. The compute model / execution engine and the real-time data storage are effectively married to the distributed file system as that is where the data will reside whether the data is moving in, or out. The enterprise applications were placed sitting on top of the solution architecture and the deployment / container management system because they are the support for the enterprise applications and define how the enterprise applications will work. Lastly, the resource management touches everything and thusly sits in the center of the diagram.