Product builder | People Developer | Engineering Management
What is common between streaming movies on Netflix, searching for information on Google, buying clothes on Amazon? You interacted with data services built on distributed systems. You interact with the largest distributed system daily: the Internet.
What is distributed computing?
A distributed computing is a collection of independent software services that provides an illusion to end-users as one system. For example, when we stream a movie on Netflix, we may be fetching data from one system, sending data to another system, and awaiting a response from another system before it streams a movie. To end-users, everything might feel seamless, as though we are simply interacting with a single website.
At the core, a distributed computing hides things from users by providing transparency
Access transparency is what allows us to hide any differences in the data representation of a resource and how it is accessed. An example of access transparency in action is the Application Programming Interface (API). An API is a reliable way to access the resource using the same, repeatable operations, yielding the same result.
Location transparency is what hides where a resource is located. This form of transparency allows for objects within a system to be consistently accessible irrespective of their location. An example of location transparency is the URL (“uniform resource locator”). URL reveals nothing of where the resource lives on a specific region, physical server.
Failure transparency allows for an end-user of a distributed system to continue using the system and accessing any resource without noticing that part of the system has failed. An example of failure transparency is when we continue to experience movies streamed on Netflix uninterruptedly, unaware of some of the failures in the system, network at the back end.
Transparency in distributed computing is a hard problem. It plays an important role in distributed computing to provide the illusion that we are simply interacting with a single web site or system, keeping some of the hard and messy parts away from us.