Architecture
Stray thoughts on the subject.
Asymmetry
Tiger, tiger, burning bright. In the forests of the night,. What immortal hand or eye. Could frame thy fearful symmetry?
- William Blake
Slowly and inevitably, the vision of total symmetry between components on various platforms has faded from sight. I wanted everything to run the same everywhere - apparently it ain't happening, at least not in the way I had hoped.
In the place of symmetry arises fearful asymmetry. Some functions will be more suitable to some platforms, other to others ... at least for some PyWacket components.
But maybe the fearful can also yield some insight. Does absolutely everything need to run on all platforms or can the strengths of different platforms be utilized to produce a better result overall ? Wasn't specialization one of the motivations for PyWacket in the first place ?
So ... in place of fearful symmetry arises fearless asymmetry ... at least that's how I'm looking at it right now. Maybe something to add to Lessons Learned.
Maybe the question is "what is the minimal subset of requirements that can provide a useful integration backplate across the great divide of incompatible platforms" ?
http://en.wikipedia.org/wiki/Asymmetry
http://en.wikipedia.org/wiki/Information_asymmetry
In contract theory and economics, information asymmetry deals with the study of decisions in transactions where one party has more or better information than the other. This creates an imbalance of power in transactions, which can sometimes cause the transactions to go awry, a kind of market failure in the worst case.
Maybe the point is information symmetry across platforms rather than functional symmetry ???
http://en.wikipedia.org/wiki/Principal%E2%80%93agent_problem
The principal–agent problem or agency dilemma occurs when one person or entity (the "agent") is able to make decisions that impact, or on behalf of, another person or entity: the "principal"
The problem arises where the two parties have different interests and asymmetric information (the agent having more information), such that the principal cannot directly ensure that the agent is always acting in its (the principal's) best interests ...
See MicrosoftWindows#SSHforWindows ... not ! And Servers#ANoteOnSamba
The High Cost of Symmetry
A simple analysis of a complex topic ... number of two way connections
Number of Machines | Peer to Peer Connections ( n(n-1) ) | Client to Server Connections ( 2(n-1) ) | Ratio P/P to C/S Connections |
1 | 0 | 0 | |
2 | 2 | 2 | 1 |
3 | 6 | 4 | 1.5 |
4 | 12 | 6 | 2.0 |
5 | 20 | 8 | 2.5 |
6 | 30 | 10 | 3.0 |
7 | 42 | 12 | 3.5 |
... etc ...
The ratio is increasing as n/2. Clearly the cost of peer to peer will eventually outweighs the benefit.
Think about database synchronization, challenging at at 3-4 peers, maybe become too difficult to manage at around 4-5 peers.
Even more expensive is configuring identical software on several machines
Peer to Peer
Machine 1 | Machine 2 | Machine 3 | Machine 4 |
Transport | Transport | Transport | Transport |
Exchanges | Exchanges | Exchanges | Exchanges |
Databases / Datastores | Databases / Datastores | Databases / Datastores | Databases / Datastores |
Integrated Applications | Integrated Applications | Integrated Applications | Integrated Applications |
Versus Central Server
Machine 1 | Machine 2 | Machine 3 | Machine 4 |
Transport | Transport | Transport | Transport |
Exchanges | <- | <- | <- |
Databases / Datastores | <- | <- | <- |
Integrated Applications | Integrated Applications | Integrated Applications | Integrated Applications |
The client machines have much simpler configuration, at the cost of operational dependency on the server and less fail-over capability.
The term 'application topology' seems to be appropriate, but there isn't a clear sense of a defintion.
http://www.webopedia.com/TERM/A/application_topology_mapping.html
A subset of network topology and network mapping software, application topology mapping software tools are designed to map or diagram the layout of mission-critical applications in an enterprise, how different apps are connected to each other, how they can be accessed by various computers and networks, and how they are currently performing in terms of efficiency and availability ...
Application topology mapping tools also typically include application discovery and dependency mapping capabilities as well as application performance management (APM) features ...
The closest Wikipedia gets to a defintion is:
Wikipedia http://en.wikipedia.org/wiki/Business_transaction_management
BTM provides visibility into the flow of transactions across infrastructure tiers, including a dynamic mapping of the application topology.
There are also product specific references to SOA as application topology based on interfaces, interface defintions and interface calls, as interface-oriented architecture.
Clearly, what I'm talking about is a higher-level definition that interfaces, more like filling functional slots.
See https://wiki.openstack.org/wiki/Neutron and http://docs.openstack.org/icehouse/install-guide/install/apt/content/basics-networking-neutron.html
See http://en.wikipedia.org/wiki/Network_topology
Information Architecture
What means ?
http://en.wikipedia.org/wiki/Information_management
Information architecture (IA) is the structural design of shared information environments; the art and science of organizing and labelling websites, intranets, online communities and software to support usability and findability; and an emerging community of practice focused on bringing principles of design and architecture to the digital landscape.
Typically, it involves a model or concept of information which is used and applied to activities that require explicit details of complex information systems.
What means ?
See KnowledgeBase#KnowledgeManagement
Continual Improvement Process
Show me your meta-data !
http://en.wikipedia.org/wiki/Continual_improvement_process
Some successful implementations use the approach known as Kaizen (the translation of kai (“change”) zen (“good”) is “improvement”). This method became famous from Imai's 1986 book Kaizen: The Key to Japan's Competitive Success.
The core principle of CIP is the (self) reflection of processes. (Feedback)
The purpose of CIP is the identification, reduction, and elimination of suboptimal processes. (Efficiency)
The emphasis of CIP is on incremental, continual steps rather than giant leaps. (Evolution)
Key features of Kaizen include:
Improvements are based on many small changes rather than the radical changes that might arise from Research and Development
As the ideas come from the workers themselves, they are less likely to be radically different, and therefore easier to implement
Small improvements are less likely to require major capital investment than major process changes
The ideas come from the talents of the existing workforce, as opposed to using research, consultants or equipment – any of which could be very expensive
All employees should continually be seeking ways to improve their own performance
It helps encourage workers to take ownership for their work, and can help reinforce team working, thereby improving worker motivation.
The elements above are the more tactical elements of CIP. The more strategic elements include deciding how to increase the value of the delivery process output to the customer (effectiveness) and how much flexibility is valuable in the process to meet changing needs.
How to build a truck and drive a truck at the same time ?
User Permissions As An Architectural Element
The PyWacket messaging ( AMQP-like ) function becomes something like a user in its own right. On one hand, it prevents open exposure to misused permissions - on the other hand, it requires careful identification of other peers and translation of permissions across the 'permissions frontier'.
Needs further development.
The network level PyWacket User spans across multiple machines and OSes. It provides the transport layer between different 'localhost' exchanges on different machines running under the same ( or different ) users.
Clearly, the transport layer need to be able to identify and locate different exchanges on its own machine and be able to use its peer transports to locate exchanges on other machines.
Note that the PyWacket User may have local exchanges of its own that interact with local Personal User exchanges, that is, spanning the 'permissions frontier' within the same machine as well as across machines.
https://en.wikipedia.org/wiki/Principle_of_least_privilege
... the principle of minimal privilege or the principle of least authority) requires that in a particular abstraction layer of a computing environment, every module (such as a process, a user, or a program, depending on the subject) must be able to access only the information and resources that are necessary for its legitimate purpose. ...
Legitimate purpose ? What's that ?
https://en.wikipedia.org/wiki/Privilege_separation
... privilege separation is a technique in which a program is divided into parts which are limited to the specific privileges they require in order to perform a specific task. This is used to mitigate the potential damage of a computer security attack. ...
What I want.
https://en.wikipedia.org/wiki/Privilege_bracketing
... is a temporary increase in software privilege within a process to perform a specific function, assuming those necessary privileges at the last possible moment and dismissing them as soon as no longer strictly necessary ...
What I don't want.
Also See
DesignPatterns#ArchitecturalDesignPattern