Distributed Cloud
February 09, 2024
Overview
Distributed Cloud is not a term that is commonly used in the industry. However, it does point to a set of Cloud services that are distributed in nature. Given the ambiguity of the term, it's safe to say that someone who searches for this is not familiar with the Cloud or distributed systems.
Here are some links that might help to start learning:
Distributed Cloud Services
Below are some of the most common examples of Distributed Cloud services:
Serverless
Serverless products are services that do not require provisioning compute instances (units of CPU + Memory). They scale up in real-time to demand, and scale down once demand has subsided. Learn more at: What is Serverless?
Distributed SQL
Distributed SQL uses replicated nodes of data to increase throughput. Data is typically eventually consistent and any conflicts are resolved via quorums. Learn more about Distributed SQL strategies to increase speed.
Cloud Functions
Cloud Functions like AWS Lambda are encapsulated instances of code that can be up and running upon invocation within milliseconds. Once the code completes, that encapsulated instance of code is terminated. This can scale up to tens of thousands of running functions concurrently. All the infrastructure is handled for you.
Serverless Container Services
Cloud Functions have timeouts measured in minutes; many workloads need more time. Serverless Container Services like AWS Fargate enable your code to run in more feature-rich containers that support large-scale, long-running applications. As traffic increases, so does capacity, and vice versa. This is similar to long-running compute instances with auto-scaling (like EC2 Auto Scaling), but with the management overhead of the instances and cluster removed.
CDNs (Content Delivery Networks)
Content Delivery Networks use locations around the world to replicate static content (or even very small amounts of code). This decreases the distance and latency from the user to the content.
Tradeoffs: Distributed vs Monolithic Cloud Services
The table below describes the generalized tradeoffs when choosing between Distributed or Monolithic Cloud services.
Distributed Services | Monolith Services | |
---|---|---|
Scalability | Highly scalable. The maintenance of scaling is often completely removed from the user. | Scalable, but requires more maintenance and monitoring by the user. |
Reliability | Highly fault-tolerant. Failure of one node typically doesn't impact the overall system. | Depends on the user's capacity for maintenance and complexity. It's not highly fault-tolerant out-of-the-box. |
Performance | Higher latency due to the nature of distributed systems and potential geographic spread of nodes. | Lower latency because there is less network hops within the system. |
Cost | Potentially higher cost due to the increased complexity of the service and offloaded maintenance burden. However, this is not always the case. Serverless Functions are very cost-effective at low loads. | Potentially more cost-effective for provisioned workloads. |
Maintenance and Management | Depends on the service. Can be less maintenance and management as is the case with many Serverless products. Could also be more maintenance and management, as would be the case with some Distributed SQL products. | Simpler to manage from the perspective of inherent complexity of the system. However, depending on the service, it could require work to keep current with updates. |
Security | Depends on the service. Cloud Functions are very secure services because they're such isolated, transient, and minimal environments. On the other hand, any self-managed service would require more overhead to keep secure. | Monolithic services can be easier to keep secure because there are fewer parts. However, they can also be more self-managed, increasing risk. |