Eu estou supondo que por "ISP" você quer dizer quem fornece Internet em sua casa ou escritório. Além disso, também oferecerei sugestões para lidar com co-localização e vários locais.
Provavelmente, a melhor maneira de evitar interrupções devido a tempo de inatividade em uma conexão com sua residência ou escritório, por meio desse ISP, é usar um serviço de colocation, um provedor de hospedagem gerenciada ou um provedor de aplicativos como o AppEngine. Normalmente, são serviços hospedados em um datacenter de nível de operadora com alimentação redundante, refrigeração e conectividade com a Internet, para que possam ser muito mais confiáveis do que, digamos, uma conexão por cabo ou DSL em sua casa.
Dependendo do nível de serviço, essas instalações podem sobreviver a problemas de rede, problemas de energia e muito mais, com pouco ou nenhum impacto na acessibilidade de seu aplicativo. Eles fornecerão roteadores redundantes, conexões com várias conexões à Internet, comutadores de transferência de energia e muito mais.
Esses serviços estão disponíveis em todos os tipos de preços, portanto, raramente é econômico tentar criar um serviço desse tipo para apenas um ou alguns servidores.
Se o seu aplicativo realmente precisa ser capaz de sobreviver até mesmo a uma interrupção maior, a solução típica é obter serviços em várias instalações, como as descritas acima, e projetar seus serviços para poder fazer failover de uma instalação para outra ou ser capaz de correr de ambos os locais ao mesmo tempo. Isso geralmente requer trabalho extensivo para projetar e arquitetar aplicativos para operar dessa maneira, replicar dados entre locais, etc ...
Eu vou dizer que acho que muitas pessoas pensam sobre a disponibilidade bem antes que elas realmente possam justificar a implementação de tal coisa. Se você não tem usuários, é provavelmente mais importante trabalhar para chegar ao ponto em que você pode obter usuários, em vez de aumentar drasticamente a dificuldade de chegar lá para torná-lo capaz de sobreviver a um evento raro. Então, meu conselho seria manter os pés no chão ao decidir que nível de redundância e replicação fazer. Ter serviços totalmente redundantes e distribuídos é um processo longo e envolvido.