Search code examples
.netazureamazon-ec2cloudappharbor

Deploying .NET windows apps on cloud


Is there any way a .NET windows app can be deployed on cloud? what about PaaS (platform as a service). I am very new to this all cloud buzz. Any help in this regard will be highly appreciated.


Solution

  • You've two major families of cloud infrastructures to think about: IAAS (infrastructure as a service), where you effectively rent a virtual machine by the hour, or PAAS (platform as a service) where you rent a full deployment infrastructure.

    Amazon EC2 is the largest and leading player in the IAAS market. You can rent a VM with Windows Server (and SQL Server, if you wish) pre-installed and pre-configured. You need to deploy, configure and maintain your application yourself; the Visual Studio tools work well for this once you have your instance configured.

    You also need to maintain Windows on the VM, too - this includes Windows updates.

    Azure is the leading PAAS platform for Windows. Deploying an application to Azure is made fairly simple, as Microsoft have some excellent tools integrated with Visual Studio to make this as painless as possible. Microsoft will take care of maintenance of the operating system and the underlying plumbing, which can be an important configuration for medium-to-large size applications.

    And as others have mentioned some vendors blend both approaches: AppHarbor has aspects of both an IAAS and a PAAS.

    To get the best out of either platform it's worth using the specialist storage technologies. Both have a simple key/value pair storage system that is much faster than a SQL database, but with tradeoffs such as no support for transactions. However, depending on your application and its size, this can greatly speed things along.

    The great benefit of cloud infrastructures is that you need no longer care about things such as

    • hosting a network of on-premise servers, with redundancy
    • high-speed two-way network connections
    • disaster recovery and backup
    • network latency internationally
    • scaling out: in general, you just buy another instance to handle extra load

    If you already have a crack team of data centre experts on hand, and a superfast network, then it may well not be appropriate.

    I'd suggest that you evaluate

    • the usage of the application: is it lightly used? internal or external?
    • the uptime requirements: how much money will you lose if when the site fails?
    • the amount of IT resource you have available: cloud infrastructures are "developer friendly" and can reduce the need for operations staff
    • your budget: it may actually be more cost effective to stay with an on premise system

    Good luck!