The two key issues that any storage system has to solve are as follows:
We will explore these two core issues through the upcoming discussion on architecture and implementation.
Some key architectural principles behind Swift are as follows:
Masterless design: A master in a system creates both a failure point and a performance bottleneck. Masterless design removes this and also allows multiple members of the cluster to respond to API requests.
Loose coupling: There is no need for tight communication in the cluster. This is also essential for preventing performance and failure bottlenecks.
Load spreading: Unless the load is spread out, performance, capacity, account, container, and object scalability cannot be achieved.
Self-healing: The system must automatically adjust for hardware failures. As per the CAP theorem discussed in Chapter 1, Cloud Storage – Why Can...