ZeroTurnaround Blog

Product Updates, Company News & Fun

LiveRebel extends support for failsafe .NET application deployments

liverebel_logo RGB

Lately, we’ve been looking to understand how developers and IT operations on Microsoft .NET platform deploy their applications and were curious to see whether LiveRebel could help. So we interviewed IT professionals from different companies to find out.

The .NET approach to releasing apps

At the start, .NET folks are quite happy with the technologies and tools they use, and their deployment processes. Unlike in Java, they do not complain about the need to redeploy and time it usually takes, right from the very start.

The “Microsoft way” of releasing apps carried out using visual tools like Visual Studio and Team Foundation Server. It involve several mouse clicks and setting numerous checkboxes. The integration between Visual Studio and Team Foundation Server provides a well-defined, but not very customizable process. They build and package releases, generate MS SQL Server database evolution scripts and deploy directly to Internet Information Server (IIS). Few teams take an alternative approach. They prepare releases with continuous integration (CI) servers like Jenkins, CruiseControl or TeamCity, and deploy to IIS using command-line tools like msdeploy, appcmd and scp.

So what wrong with the current process?

Since the releases happen either by executing scripts or by copying application files over to a virtual folder in IIS, there is no reliable way to keep track of which app version is deployed in which environment. Furthermore, updating apps interrupt end users and any deployment failures take time to recover from. We asked .NET folks about these issues and here are the answers we got:

  • How are app versions and the environments they are deployed to currently tracked?

    • CI servers provide logs about successful builds

    • List in team wiki

    • Shared document (e.g. an Excel sheet) on a shared network drive

    • Folklore (asking someone who knows)

  • Do app updates in production cause user interruption?

    • Typically, 100% availability is not guaranteed. Updates and maintenance require downtime and can lead to the loss of user sessions.

    • Some companies use expensive load-balancers (e.g., F5) to drain sessions and reroute new requests to another server while performing the update. This process is still very “manual” and requires a system administrator to “flip the switches.”

  • How long to recoveries from production failures take?

    • Recovery is performed manually and could take up to several hours.

The Cure

LiveRebel orchestrates deployments after an application version has been built and packaged by the IDE or a CI server. It addresses all the issues brought up in the previous section and more (environment-specific configuration management, overview of application deployments, automatic rollback in case of failure, custom scripting, database schema management, etc). You can get familiar with all features of LiveRebel on our website.

Deploying your .NET app with LiveRebel

Export your project from Visual Studio into a folder and zip it, or configure your continuous integration server to package the build into a zip archive. That’s it. The only thing left is to upload the archive to LiveRebel (using graphical or command-line interface) and setup the IIS server that you’d like to deploy onto. Read on.

In LiveRebel 2.7 (coming on June 4) we’ve added a new kind of server agent, the Web Server Agent. With it, you can deploy packaged applications into folders exposed by IIS. The agent also acts as a proxy between the end-user browser (or a load-balancer) and the web server (IIS).

Configuring and verifying port mappings on the Web Server agent

LiveRebel pauses requests during application updates so that users never see a 404 error, and then perform a rolling update across two or more web servers. During the update, the LiveRebel Web Server Agent drains sessions on one set of servers by routing requests associated with new sessions to the other set. When all sessions have expired on the first set, the application is updated on the first set. Once updated, the first set serves all requests while the second set is updated after all its sessions are drained.

LiveRebel’s Applications page manages app versions, and let you deploy them using different strategies

Monitor app and server health once deployed

Once the app has been deployed, LiveRebel monitors applications and servers for health in real-time as shown below. Hovering over the health beacons expose request throughput, latency and the slowest requests on that particular server.

Servers page gives overview of application versions deployed across different environments

Deploy your .NET app with LiveRebel now!

Check out the user manual for step-by-step instructions on how to set up LiveRebel 2.7 server agents (file server agent, web server agent) with IIS. Then try using the different update strategies with our release candidate. See how you can achieve quick and failsafe, no downtime app deployments.

Feel free to leave your comments below, or tweet us @LiveRebel … happy deploying!

Download LiveRebel Now!

  • Justin

    Hmm, do you have experts on your team who really deploy ASP.NET apps? I’m not convinced that telling people to zip up their Visual Studio project and send it to LiveRebel is the best approach. What about web.config transforms during the deployment process, for example? We use the Publish feature to deploy so we can specify target deployment build and how to package Global resources.

    Also you did not seem to touch on application pools at all, which are key in app deployment.

    For us, the biggest concern is loss of user sessions, but this can also be tweaked in the application (pool) config for how session recycling works.

  • Pavel Grigorenko

    Hi Justin, thanks for your comment! We’re not saying our approach is the best. It fixes several problems described above, but not all, of course. We’ll be looking into more deep integration with .NET platform in the future, so sharing your concerns regarding deployments and application updates are highly appreciated!