A distributed system is a collection of networked processes that coordinate to provide a service. A cloud is one way to package that system: pooled resources, virtualization, self-service allocation, elastic capacity, and usage-based cost.
What changes after one machine
On one machine, a process can usually distinguish a local call from a crash. Across a network, silence is ambiguous: the peer may have failed, the message may be delayed, or the reply may be lost.
client ── request ──> server
X reply lost
Did the operation run? The client cannot know from timeout alone.
This partial failure creates the central design problems: retries, duplicate effects, coordination, stale state, and failure detection.
In plain terms: in a distributed system, “I did not hear back” is not the same as “nothing happened.”
Why clouds help
Cloud platforms make resources programmable. Instead of buying for peak load, a team can acquire and release compute, storage, and networking as demand changes. The benefit is not automatically lower unit cost; it is faster provisioning, shared infrastructure, elasticity, and converting capital expense into operating expense.
Elasticity still needs application support. Adding instances does not help when state is pinned to one node, the database is saturated, or work cannot be partitioned.
Grids, clusters, and clouds
- A cluster is usually a coordinated set of machines under one administrative domain.
- A grid federates resources across organizations, often for large scientific jobs.
- A cloud exposes pooled resources and services through automated interfaces and an operating contract.
The boundaries overlap. The useful question is which failure, ownership, provisioning, and pricing assumptions the application inherits.
Safety and liveness
Distributed properties often fall into two groups:
- Safety: something bad never happens; for example, two clients never both own the same exclusive lock.
- Liveness: something good eventually happens; for example, a valid request eventually completes.
Retries may improve liveness while threatening safety through duplicate writes. Coordination may protect safety while reducing liveness during a partition.
Review card
- Networks introduce partial failure and uncertain outcomes.
- Cloud adds programmable pooling, elasticity, and an economic model.
- Elastic infrastructure does not make an unpartitionable application scalable.
- State assumptions matter more than product labels.
- Safety prevents bad states; liveness guarantees eventual progress.