Azure – Host single web application in multiple countries/locations

amazon-web-servicesazurecloudclusterhosting

We have a web application that consist of a .NET front end, and a SQL backend. We also have a mobile app that connects to the .NET front end using WebAPI. Currently we have the application hosted on a physical server in the USA. We have multiple clients from all over the world that log in to the application from both web browsers and mobile devices.

We have been having quite a few clients asking for two scenarios:

  • "Can the application be hosted in a country other than the USA" (for security/NSA concerns)

  • "Can we host the application ourselves" (For large corporate clients)

We use Github for change management with our front end code. Deploying the website code is fairly easy as we have built a sync utility that allows us to update the production server from our Git repository. However, updating the SQL production server from our testing server is a bit more of a manual task (schema, stored procs, etc.). I know that there is software out there (redgate, etc.) that allows doing similar change management with SQL, however that is not my question.

How do most companies handle hosting an application from multiple geo locations, considering that some clients will want to be able to have their data hosted SOLELY in one location (for security reasons) whereas other clients will want to have their data hosted in one, more or all locations, shared, to allow connecting to the closest server. As an added detail, we make FREQUENT changes to code (daily), so pushing code and SQL changes out to multiple segregated host environments and making sure everything is in sync is a bit of a pain in the butt.

As said, we currently host on a physical server in a data farm. Does going with AWS, Azure, etc. make this task any easier?

Best Answer

I think your really facing two issues here:

  1. Geographical Location

You want your application in multiple locations, this is where a cloud provider such as Azure or AWS will help, you can deploy in multiple regions without needing to have a presence there. You can implement failover in a single region using the built in load balancing tools or span multiple regions with tools like Azure traffic manager. You can allocate users to a single region or multi regions based on your traffic and load balancing profiles.

  1. Deployment

Your second issue is that of being able to deploy your application, particuarly where you are going to have a lot of instances in multiple regions. This isn't really a cloud problem, it's a tools and process problem. If your going to expand to multiple regions and multiple instances in multiple regions then manual deployment in any part of your process isn't going to cut it any more. You need to be able to safely and quickly deploy to all regions (or some) and know that they are all going to be the same, especially if you are load balancing. The only way you are going to achieve this is to look at your process to either remove the complexity, or use tools to handle it for you. There are solutions to manual SQL deployments, you mention Redgate, but there are others, visual studio even has a database versioning tool.

Related Topic