Application Consolidation Best Practices
By Timothy Dyck
Choose mainstream operating systems and databases. Consolidate around operating systems and databases that will run as large a percentage of your application set as possible.
Use portable APIs and generic SQL ANSI C with POSIX, Java, Web scripting languages, Perl and .Net Framework languages all provide portability insurance. Make a policy of preferring generic SQL to vendor-specific syntax where the two are functionally equivalent, and use the data abstraction APIs in your programming language of choice as much as possible.
Modularize applications Web applications and other three-tier designs cost less and are easier to consolidate than monolithic designs because parts of the application can be consolidated without affecting other application tiers.
Use single sign-on and distributed directories Avoid built-in application directories and turn to single sign-on or (as a less attractive option) directory synchronization tools to make application consolidation easier without disrupting existing user names or passwords.
Design for high availability If you put all your eggs in one basket, you have to watch that basket very carefully. Running multiple mission-critical applications on a single server or server partition means that uptime is much more critical. Well-thought-out failover systems and disaster recovery plans are an absolute must.
Pursue vertical (scale up) and horizontal (scale out) scalability Horizontal scaling (through the use of multimachine clustering) is much cheaper in terms of initial investment and provides the best price/performance ratio for consolidation, but it is also much more restrictive in the types of applications supported.
Delegate administrative domains This is one of the biggest technical challenges in application consolidation and a major reason for server sprawl in the first place. Many packaged applications dont support the concept of administrative domains or delegation. Server partition or system virtualization techniques may be the only viable approach to properly partition some applications.