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.
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!