Fault tolerant approaches discussed in this Netflix blog :
- network time out and retries
- separate threads on per-dependency thread-pools
- semaphores (via a tryAcquire(), non-blocking call)
- circuit breakers