Choose mainstream operating systems and databases.
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.
Timothy Dyck is a Senior Analyst with eWEEK Labs. He has been testing and reviewing application server, database and middleware products and technologies for eWEEK since 1996. Prior to joining eWEEK, he worked at the LAN and WAN network operations center for a large telecommunications firm, in operating systems and development tools technical marketing for a large software company and in the IT department at a government agency. He has an honors bachelors degree of mathematics in computer science from the University of Waterloo in Waterloo, Ontario, Canada, and a masters of arts degree in journalism from the University of Western Ontario in London, Ontario, Canada.