Distributed computing for the non-technical audience (Part I)

Purity Maina
Women in Technology
4 min readSep 13, 2023
https://blockchainengineer.com/centralized-vs-decentralized-vs-distributed-network/

Good day!

With the growth in technological expansion worldwide, distributed systems are more and more widespread. This article aims to introduce you to distributed systems as a non-technical audience and help you understand how distributed computing works and some real-time examples of distributed systems we interact with on a daily basis.

distribution.noun — The action of sharing something out among a number of recipients. “The government released about 74,000 tonnes of rice for distribution among people affected by the cyclone”.

Oxford Languages and Google

What is a distributed system?

Data is more distributed today than ever, and modern applications no longer run in isolation but instead rely on distributed systems. We will incrementally work through an example of a distributed system so that you can get a better sense of it all.

A distributed system is a connection of independent nodes linked together on a given network, working together to appear as a single computer to the end user. All the nodes in the system communicate with each other by handling processes in tandem. Each of these nodes contains a small part of the distributed operating system software; they are physically separate but linked together using the nodes on the given network.

This happens by coherently coordinating and communicating through messages or events to fulfil one end goal. The complexities of achieving the end goal remain hidden from the end user.

Let’s look into an example of this. We use real-time package tracking systems at work when customers order a product. How do we use distributed systems to achieve this? Assume we have 3 different nodes; Alpha, Beta and Cepha, all in a shared fulfilment system. Once an order is made, a notification is sent to service Alpha which will collect the order and client details and send it to service Beta, which will validate the order and client information, and successfully notify service Cepha. Which will inform the fulfilment centre of the request for the order to be shipped off.

The services don’t have to stop at just 3 services — the job may be distributed among hundreds or even thousands of nodes/services, turning a task that might have taken days for a single computer to complete into one that is finished in a matter of minutes. All these services (nodes) work concurrently in the background and notify the user of the delivery date and time (all complexities are hidden from the end user.

What are some of the characteristics of distributed systems?

  1. Resource Sharing: this refers to the ability to share information and messaging, ensuring consistency between redundant resources, such as software or hardware components, and improving fault tolerance, reliability and accessibility.
  2. Openness: this is concerned with extensions (typically through APIs) and improvements in the system for instance, how openly the software is developed and shared with others. If one node fails, it is expected that the remaining nodes can continue to run without disrupting the overall system.
  3. Concurrency: this focuses on the ability to maintain the same activity or functionality that can be performed by separate users in remote locations. What a client in Europe sees in real-time should be what a Kenyan client sees too, regardless of the server location.
  4. Scalability: this refers to the ability of the system to grow either in numbers or scale (might be worthwhile looking into vertical and horizontal scaling) without affecting the responsiveness of the system. how do the computing and processing capabilities multiply when extended to many machines?
  5. Fault tolerance: this looks into the system’s reliability; if there is a failure in hardware or software, with the expectation that the system continues to operate correctly without performance degradation. easy and quick can failures in parts of the system be detected and recovered
  6. Transparency: the complexity of distributed systems remains hidden, allowing users to interact with a single logical device rather than being concerned with the system’s architecture.
  7. Heterogeneity: this refers to the level of diversity of the system, node (or services) implementations can all vary and differ among dispersed system components. Nodes and components are often asynchronous, with different hardware, middleware, software and operating systems.

I will be writing part 2 of this sequel soon, we will look into considerations that should be made prior to implementing a distributed system.

--

--

Purity Maina
Women in Technology

A software engineer building Tech products for the African market.