Elements of an application are isolated into pools, so that If one fails, the others will continue to function.
When to use this pattern?
Isolate resources used to consume backend services.
Isolate critical consumers from standard consumers.
Protect the application from cascading failure.
When NOT to use this pattern?
Less efficient use of resources.
The added complexity is not necessary.
Design Approach
Option 1: Use a dedicated container for each consumer.
Option 2: In case of service chaining, use async communication between the service call.
Considerations
Level of isolation.
Combine with retry, circuit breaker, and throttling patterns.
Consider processes and thread pools.
Deploying into separate VMs, containers, or processes.
Asynchronous communication
Level granularity.
Monitoring.