Use timeouts, circuit breakers, and bulkheads to help shield your application from system failures - consider libraries that employ these patterns (like Hystrix [JVM] and Mjolnir [.NET]) when coding integration points between applications. https://github.com/Netflix/Hystrix https://github.com/hudl/Mjolnir