Yesterday’s personal news highlight, for me, was that:
…a bunch of computer-generated gibberish masquerading as an academic paper has been accepted at a scientific conference … the World Multi-Conference on Systemics, Cybernetics and Informatics
as reported by CNN. This relates to me, for two reasons:
My former boss Jürgen Bortolazzi, a prolific author of (good!) research papers, used to joke that it wasn’t really him who wrote those papers but that he had developed a Prolog-based paper generator. It’s great to see that somebody actually developed such a thing, and it works!
But closer to home, I know that conference! I had a paper there, a few years back, in fact even an invited paper! So I decided to travel to Florida and give a talk on it. And having done so, I remember very well that I turned around to my wife, who came with me for a brief vacation afterwards, saying: "what a waste of time" … maybe this was just the first known computer-generated paper at that conference.
I was laughing so hard yesterday, it simply had to happen, and it had to happen to that conference.
There is client-server software, and there is peer-to-peer software. Are these two architectures all we ever need for distributed software?
I’d like to suggest that some of the world’s most successful distributed software architectures are neither client-server nor peer-to-peer when you look at them closely. They follow an architectural pattern that I’d like to call the 4-Point Architecture.
Consider e-mail, a distributed and network-centric application if there ever was one. To accurately describe how e-mail gets sent from my computer to your computer, we need four computers in the picture (the "four points" of this architecture):
In this case, My Computer first hands the e-mail message to my SMTP server through one of several possible protocols (e.g. SMTP, POP, …). The SMTP server then uses SMTP to send the message to your SMTP server, which in turn holds the message until Your Computer downloads it using a protocol such as POP.
In this architecture, we have elements of both peer-to-peer and client-server: either SMTP server can initiate communication to another SMTP server, which makes them peer-to-peer. (However, SMTP is not a symmetrical protocol, which means we run client-server on top of peer-to-peer.) The relationship between an SMTP server and its client computer is clearly a client-server relationship.
If we redraw the picture in a more generic manner, we arrive at this: (and I will get to the labeling in a second)
The 4-Point Architecture is also used by the following technologies:
We could call this architecture a mix of client-server and peer-to-peer. However, it comes with some rules that cannot adequately be described without looking at all 4 points of the architecture:
Why do I think this 4-Point Architecture is important? It’s important because it is a generally-useful, proven architecture for distributed applications that includes all kinds of devices, not just "bright" servers. Some of its benefits are:
Watch the 4-Point Architecture to become more prominent going forward in many places … it simply makes too much sense not to.