domain platform Commons: 3/5

Shared-Nothing Architecture

Also known as: SN Architecture, SNA

Please add the content for the 8 sections of the pattern body here.

1. Overview

The Shared-Nothing Architecture (SNA) is a distributed computing model where each node is entirely self-sufficient. Nodes do not share memory, storage, or any other resources. Each node has its own private memory and disk space. Communication between nodes is done by passing messages over a network. This architecture is highly scalable and resilient, as the failure of one node does not affect the others. The concept of shared-nothing architecture dates back to the 1980s and was initially developed for parallel database systems.

2. Core Principles

The core principles of the Shared-Nothing Architecture are:

  • Node Independence: Each node in the system is independent and self-sufficient, with its own processor, memory, and storage.
  • No Shared Resources: Nodes do not share any resources. This eliminates resource contention and single points of failure.
  • Data Partitioning: Data is partitioned (sharded) across the nodes in the cluster. Each node is responsible for a subset of the data.
  • Message-based Communication: Nodes communicate with each other by passing messages over a network. There is no shared memory for inter-node communication.

3. Key Practices

In traditional shared-memory or shared-disk architectures, the shared resources can become a bottleneck as the system scales. Contention for shared resources can limit performance and scalability. Additionally, a failure in a shared component can bring down the entire system, creating a single point of failure. The problem is how to design a system that can scale horizontally and is resilient to failures.

4. Implementation

The Shared-Nothing Architecture solves this problem by eliminating shared resources. Each node is independent, and data is partitioned across the nodes. This allows for horizontal scaling by simply adding more nodes to the system. Since there are no shared resources, there is no single point of failure. If a node fails, only the data on that node is affected, and the rest of the system can continue to operate.

5. 7 Pillars Assessment

Pillar Score (1-5) Rationale
Purpose 3 Serves a clear technical purpose in system design
Governance 3 Can be governed through standard engineering practices
Culture 3 Supports engineering culture of reliability and quality
Incentives 3 Aligns incentives toward system stability
Knowledge 4 Well-documented pattern with extensive community knowledge
Technology 4 Directly applicable to modern technology stacks
Resilience 4 Contributes to overall system resilience
Overall 3.4 A valuable technical pattern that supports commons infrastructure

Pros

  • Scalability: Shared-nothing architectures are highly scalable. New nodes can be added to the system to increase capacity and performance.
  • Resilience: The architecture is resilient to failures. The failure of a single node does not bring down the entire system.
  • No Single Point of Failure: By eliminating shared resources, the shared-nothing architecture avoids single points of failure.

Cons

  • Complexity: Designing and managing a shared-nothing system can be complex. Data partitioning, replication, and consistency need to be carefully handled.
  • Network Overhead: Communication between nodes relies on the network, which can introduce latency and become a bottleneck.
  • Data Distribution: Uneven data distribution can lead to hotspots, where some nodes are overloaded while others are underutilized.

6. When to Use

  • Google Bigtable: A distributed storage system for managing structured data that is designed to scale to a very large size.
  • Amazon DynamoDB: A key-value and document database that delivers single-digit millisecond performance at any scale.
  • Apache Cassandra: A free and open-source, distributed, wide-column store, NoSQL database management system designed to handle large amounts of data across many commodity servers.
  • Apache Hadoop: A framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models.

7. Anti-Patterns & Gotchas

In the cognitive era, with the rise of AI and machine learning, shared-nothing architectures are more relevant than ever. Large-scale machine learning models require massive amounts of data and computational power. Shared-nothing architectures provide the scalability and parallelism needed to train and deploy these models. For example, distributed deep learning frameworks like TensorFlow and PyTorch can leverage shared-nothing clusters to train models on large datasets.

8. References

The Shared-Nothing Architecture has a mixed alignment with the Commons principles:

  • Shared Resource: While the architecture itself does not promote shared resources, it can be used to build systems that provide shared services to a community.
  • Democratic Governance: The decentralized nature of the architecture can support democratic governance by avoiding central points of control.
  • Equitable Access: By enabling scalable and resilient systems, the architecture can help provide equitable access to services.
  • Sustainability: The scalability of the architecture can lead to increased energy consumption. However, it can also be used to build more efficient systems by optimizing resource utilization.
  • Community Benefit: The architecture can be used to build systems that benefit a community, such as open data platforms or collaborative applications.

8. References

  1. Shared-nothing architecture - Wikipedia
  2. Shared Nothing Architecture - GeeksforGeeks
  3. Shared Nothing Architecture: Pros, Cons & Best Practices - Cloudian