Friday, March 11, 2011

Software Deployment Methods Compared

I'm sure you'll realize at some point that this is subjective and anecdotal, but caveated (I made up that word) it is based on twenty-some years of experience with deploying crap to thousands of computers.

Manual Installation

Good: Usually works

Bad: Sucks when you have to install 500 or 1,000 within 24 hours

Group Policy

Good: Pretty Simple

Bad: Only works with MSI installers, MSP patches, and ZAP wrapped packages.  No phased deployments.  No status monitoring capability.  No bandwidth throttling.  No automated distribution management (regional/local server shares)

Scripting

Good: Customizable, Flexible.

Bad: Requires some knowledge and experience.  More work required to implement monitoring, phasing, and distribution automation management.  Difficult to manage remote/mobile clients

SCCM

Good: Usually works. Customizable, Flexible. Status monitoring.  Phased deployments. Automated distribution management.  Manages remote/mobile clients and provided automated bandwidth throttling.

Bad: Additional cost.  Additional learning curve.

Snapshot Imaging (Ghost, etc.)

Good: Provides a consistent result for all newly-imaged computers

Bad: Breaks quite a few applications due to replicated information.  Increases imaging process time.  Increases base image build and update time.

Sequential Imaging (SCCM task sequence + OSD)

Good: Provides a consistent result for all newly-imaged computers. Usually eliminates problems incurred with duplicate identification issues commonly encountered with snapshot imaging techniques.  Can often employ existing SCCM packages without the need to repackage twice.

Bad: Requires some learning. Increases imaging process time.

Application Virtualization (App-V, ThinApp, etc.)

Good: Provides encapsulation and portability.  Provides isolation and prevents resource and version conflicts

Bad: Often costly to implement.  Additional learning curve.  Not all products work well with it (most do).

Server Hosted / Terminal Emulation (Remote Desktop, Remote App, Citrix, etc.)

Good: Shared from a single installation.  One target to maintain and upgrade.

Bad: Costly to implement.  Single point of failure*.  Some vendors prohibit this option in their license terms. (* even with clustering and load balancing, this is similar to the risks of cloud services)

No comments: