DEV Community

Discussion on: Explain Distributed Systems Like I'm Five

Collapse
 
cjbrooks12 profile image
Casey Brooks

A distributed system is best explained in contrast to a centralized system.

A centralized system is like your school, we'll call it Sloan Elementary School. You go to school, you ride the bus, you learn from your teachers, you eat from the cafeteria, and you take pride in being a Sloan Unicorn-Sloth. Everything you do there is somehow being managed by Sloan Elementary, is paid for by Sloan Elementary, and likely has the name "Sloan Elementary" printed on it. Sloan Elementary School wears many hats and is the centralized authority for everything having to do with your education.

In contrast, a distributed system is more like the free-for-all out on the playground during recess. There are lots of kids out there from many different grades, playing many different games. The 5rd grade girls are playing kickball in the field (along with that one boy who has a crush on the pitcher), the 3rd grade is split up between Four-Square, Tag, and 2-hand-touch football, and you're having a lot of fun with your other kindergarten friends running and jumping around the playset. There is no one telling the students in each grade what they should do, they are just self-organizing and doing what they want.

But these recess game groups don't have ultimate freedom to do what they want, they need to have some structure in place amongst the games. Otherwise, you might have the football thrown in the middle of the Four-Square game and mess everyone up, or the kickball first base might be at the top of the slide. These groups need to work together to figure out where each one can play their games and come to an agreement on who is doing what so that everyone on the playground has the best time possible.

Collapse
 
cjbrooks12 profile image
Casey Brooks

In more technical terms, a centralized system would be like you building a website. You would have a single server or maybe a cluster, but it all works toward the one product, and you're managing everything with that website.

A distributed system is like the internet. No one person owns the internet, anyone is free to add new servers wherever they want. But in order to be a part of it, you need to follow a set of protocols to ensure that your new server plays nicely with all the others already on the internet.