Назад | Перейти на главную страницу

Размещение одного веб-приложения в нескольких странах / регионах

У нас есть веб-приложение, состоящее из клиентской части .NET и серверной части SQL. У нас также есть мобильное приложение, которое подключается к интерфейсу .NET с помощью WebAPI. В настоящее время у нас есть приложение, размещенное на физическом сервере в США. У нас есть несколько клиентов со всего мира, которые входят в приложение как с веб-браузеров, так и с мобильных устройств.

У нас было довольно много клиентов, которые просили два сценария:

Мы используем Github для управления изменениями в нашем внешнем коде. Развернуть код веб-сайта довольно просто, поскольку мы создали служебную программу синхронизации, которая позволяет нам обновлять рабочий сервер из нашего репозитория Git. Однако обновление производственного сервера SQL с нашего тестового сервера - это немного больше ручная задача (схема, сохраненные процессы и т. Д.). Я знаю, что существует программное обеспечение (redgate и т. Д.), Которое позволяет выполнять аналогичное управление изменениями с помощью SQL, но это не мой вопрос.

Как большинство компаний обрабатывают размещение приложения из нескольких географических местоположений, учитывая, что некоторые клиенты захотят иметь возможность размещать свои данные ИСКЛЮЧИТЕЛЬНО в одном месте (по соображениям безопасности), тогда как другие клиенты захотят разместить свои данные в одном, более или все местоположения, совместно используемые, чтобы разрешить подключение к ближайшему серверу. В качестве дополнительной детали мы вносим ЧАСТО изменения в код (ежедневно), поэтому перенос кода и изменений SQL в несколько отдельных сред хоста и обеспечение синхронизации всего лишь немного затруднительно.

Как уже говорилось, в настоящее время мы размещаем на физическом сервере в ферме данных. Облегчает ли эту задачу переход на AWS, Azure и т. Д.?

Я думаю, вы действительно столкнулись с двумя проблемами:

  1. Географическое положение

Вы хотите, чтобы ваше приложение находилось в нескольких местах, здесь вам поможет облачный провайдер, такой как Azure или AWS, вы можете развернуть его в нескольких регионах, не требуя присутствия там. Вы можете реализовать отработку отказа в одном регионе с помощью встроенных инструментов балансировки нагрузки или охватить несколько регионов с помощью таких инструментов, как диспетчер трафика Azure. Вы можете распределить пользователей в один или несколько регионов в зависимости от вашего трафика и профилей балансировки нагрузки.

  1. Развертывание

Вторая проблема - это возможность развернуть приложение, особенно там, где у вас будет много экземпляров в нескольких регионах. На самом деле это не проблема облака, это проблема инструментов и процесса. Если вы собираетесь расширяться до нескольких регионов и нескольких экземпляров в нескольких регионах, ручное развертывание в любой части вашего процесса больше не сократит его. Вы должны иметь возможность безопасно и быстро выполнять развертывание во всех регионах (или некоторых) и знать, что все они будут одинаковыми, особенно если вы выполняете балансировку нагрузки. Единственный способ добиться этого - посмотреть на свой процесс, чтобы либо устранить сложность, либо использовать инструменты, чтобы справиться с этим за вас. Есть решения для ручного развертывания SQL, вы упомянули Redgate, но есть и другие, у Visual Studio даже есть инструмент управления версиями базы данных.