How would you design a system for handling failures and ensuring resiliency in a distributed ASP.NET Core Web API application on Azure ?