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.
I like his point of view. Yet, I don’t think that all of the rules make sense. In particular:
No dark point ever interacts directly with another dark point, they always go through their respective bright points first.
That’s not right. I mean it does not scale. Imagine VoIP or other stream-oriented medium to high-bandwidth protocol. It just doesn’t scale unless you throw huge amount of bandwidth to the problem.
Most of the architecture presented seems right, but the bright points should also allow for point-of-meeting to the dark points so that they can agree on a direct connection if at all possible due to NAT/Firewall restrictions.
Update: Johannes comment (thanks, btw) below that it’s true that dark points can talk to each other due to performance issues. He’s right, that should be the only reason. Of course, my comment about his architecture was just a minor pet peeve. I do agree with him about the rest.