Как говорит Марк, это большое дело, и, честно говоря, я бы не полагался на знания незнакомцев о переполнении стека, чтобы сформировать свое мнение. Вообще говоря, оборудование и т. Д. В наши дни довольно надежны, и за сравнительно небольшие деньги вы можете достичь очень высокого уровня доступности (диски RAID, хранилище NAS и т. Д.). Если вам нужен более высокий уровень доступности, чем вы можете достичь с помощью этого маршрута, вы попадаете на территорию специалиста - вам нужен совет того, кто делал это раньше. Это также дорого - переход с 99,9% до 99,99% может легко удвоить стоимость решения. Нерешительные меры, как правило, усугубляют, а не улучшают, создавая дополнительную сложность как в инфраструктуре, так и в коде. Сложность - это то место, где существуют ошибки, и ошибки снижают доступность более эффективно, чем аппаратные сбои.
Сказав это ....
Все зависит от того, насколько интенсивно работает ваше приложение с данными, насколько кэшируется приложение, насколько сложны данные и т. Д.
Вы можете посмотреть на кластерную базу данных - дорого, как с точки зрения лицензирования / аппаратного обеспечения, так и с точки зрения времени администратора баз данных, но теоретически вы можете кластеризовать несколько центров обработки данных, увеличивая время работы до 100%.
Вы можете взглянуть на решение для обмена сообщениями, а не на прямой доступ к базе данных; Решения для организации очередей сообщений (у Microsoft есть такая) - это принципиально иной способ разработки приложений по сравнению со стандартным «приложением ASP.Net, говорящим напрямую с базой данных», но он может работать с огромными объемами и обеспечивать очень высокие гарантии отработки отказа.
Вы можете посмотреть на слои кэширования - хранение всех ваших данных в кэше может позволить вам сохранить иллюзию работающего сайта, даже если базовая база данных отключена.