4 ms·
<ignorant_comment> why can't most cases be solved by coding all components of the distributed system as servers exposing APIs by various simple protocols (SOAP
by nnq 14y ago
<ignorant_comment>
why can't most cases be solved by coding all components of the distributed system as servers exposing APIs by various simple protocols (SOAP or simpler json based web APIs)... then have all servers/components developed by different teams and maybe using different languages and platforms and have each of them solve the problems they encounter... forget about determinism, forget about reproducible state, go 100% fluid and asynchronous
</ignorant_comment>
...oh, wait, did I just describe the hive-mind-ish (but gorgeous:P) monster that the web is evolving into? :)
(edit to add long winded off topic reasoning: why should we even try to understand as a whole the complex systems we create? can't we just build them out of understandable components and accept the fact that any large distributed system will tend to evolve into something beyond the comprehension of any human mind and accept that "100% understanding" !== "control" and that we don't even need that much control, we just need to make things work 95% of the time. just divide the problem, divide the people and let the "hive mind" evolve... functional languages and the conceptual tools they offer us, useful as they surely are, just foster the illusion that complete understanding and control of the systems we create will continue to be possible - I'd argue that some of what we now cal "distributed systems" are already tipping past the edge of "undestandabilty" and we should slowly learn ways of controlling their evolution and components and not the systems as a whole...)
- toolslive 14y agonot all evolution converges, and even if it would converge, you might want to influence where it's going, no?
- nnq 14y agoyes. but imagine how dog breeders influence where a certain dog race's evolution is going... I imagine a day when some of the computer systems will be engineered this way, with a good mathematical framework for evolution and all... and I think we're closer to this than it may seem, just look how programming languages "evolved" and were "selected" in the last half a century... everything was very empirical, otherwise we'd all be coding in a Lisp for experimental programming and an ML family language for the rest maybe... ...anyway, it's going very off topic so better leave it and let's get back to ..."work" :|
- tinco 14y agoBecause sometimes you need the systems to cooperate, not just serve data. The problems the OP describe all have to do with sharing state. The protocols you describe are stateless.
- nnq 14y agoI know it was a bit off topic, that's why I labeled it as 'ignorant_comment', but... in how many types of problems do we really need an actual "shared state"? can't this shared state be something like the "sum of states of the system components that expose stateless APIs", like an "emergent property type of state"? Even for real problems like how many social networks centered around a person with property X have a network property Z we only need approximate answers... I was just expressing an intuition that as we go past "Level X" (put a large number in there), keeping the OP's metaphor, we may graduate out of this need for a clearly defined shared state for most of the problems we are trying to solve... we may think in terms of a "perceivable state" that gives as a probability for the system to be in a certain "'real' state"... (think of the human consciousness or self, we imagine that it really exists, that there actually is an "I" or "self", we consider "my mind in this second" as a "state"... but it can just as well be seen as an emergent property, a perceived state that has a certain probability to exist in a certain way based on the states of zillions of components more or less well connected)