EnterpriseClassDefinition < OpenPortal < TWiki

TWiki . OpenPortal . EnterpriseClassDefinition



Enterprise-Class Software

Introduction

One of the goals of the OpenPortal? software projects is to produce enterprise-class portal-related components for use in an enterprise-class portal server product.

What is enterprise-class software?

Simply, enterprise-class software is software that is suitable to be used by an enterprise to implement business-critical solutions.

What makes software enterprise-class?

Software is enterprise-class when it exhibits the characteristics that are generally needed by enterprises when deploying those solutions. The definition of enterprise-class software consists of identifying those characteristics.

Characteristics of Enterprise-Class Software (ECS)

The list of characteristics below build on one another to form a definition of enterprise-class software.

Multiuser

ECS is used by multiple users at the same time, typically thousands, hundreds of thousands or even millions of users.

Internationalization

The various users of ECS come from different locales and speak and read different languages. ECS supports the ability to display user interfaces in various languages using localized conventions for denoting numbers, time, dates, currencies, etc.

Accessibility

The various users of ECS also have different abilities or lack thereof. This requires that ECS provides the ability for assisstive technology to be used for people with handicaps so that the functions provided by the software are available to everyone. This includes being compliant with the United States government section 508 standards and the W3C? web accessibility standards.

Scalability

To support many users, ECS provides scalability to arbitrarily sized systems. The software design must specifically identify any limits imposed on overall system scalability. The software must support the use of multiple CPUs or threads and multiple process instances on a single system (vertical scalability) as well as distribution across multiple computer systems (horizontal scalability).

High Availability

Because so many people depend on ECS and because it is used for mission critical functions, ECS must support the ability to configure the system for high availability. The degree of availability is determined by the overall redundancy in the system. When parts of the system fail, then other parts continue to offer the service. Availability is measured in terms of planned and unplanned downtime. Planned downtime includes periodic system upgrades, application of fixes, backups, etc. Unplanned downtime is due to hardware or software faults that cause parts of the system to stop operating. ECS may have requirements for total system uptime to be 99.999% (5 nines) or better which translates into no more than 3 minutes per year of downtime.

Reliability

The reliability of the system is a measure of how often the system fails, either due to faults in the system itself or due to operator errors. System failures directly impact the availability of the system so an unreliable system is difficult to make highly available. ECS must contain fewer faults than other software, and it must have a human interface design that reduces the likelihood of operator errors.

Performance

While system scalability allows many users to be served, if the software does not perform with sufficient efficiency, the cost to deploy a system for the required number of users will be prohibitive. Therefore the performance of ECS is important. Performance is measured based on several factors: CPU usage, memory usage, and disk usage. Performance is important not only for the main function of the system, but also for installation time, administrative functions, etc.

Security

Because ECS is used for mission critical functions, security is essential. ECS must ensure that users are authenticated and that access to all data is authorized. The software must provide the ability to encrypt data as it moves through the system and potentially when it is stored. Security also includes the ability to verify that the system is secure through audit trails, protections of passwords entered through command line tools, secure by default installation, and other security best practices.

Flexibility/Customizability/Integratability/Portability

ECS is used to solve complex business problems on a large scale. Generally ECS is never installed as a stand-alone system; rather it must be integrated with other systems that already exist within the enterprise. This requires flexibility within the ECS. ECS cannot, for example, provide its own identity management function because typically there is another identity management function that the enterprise is already using. The enterprise may have adopted standard systems to manage databases, provide access control, run web applications and even to run their computers down to the operating system level. This means that ECS must provide sufficient portability and customizability to be conformed to the enterprise environment. ECS must also operate in an environment where there are inter operating systems that are not controlled by the enterprise, such as browsers that are used by end users or systems interconnected from business partners. This means that ECS must support a broad array of options for connecting systems.

Enterprises generally customize the user interface of ECS so that it is tailored to the users of the enterprise. ECS must provide the flexibility to do this.

Usability

Because of the large number of users served by ECS, the mission critical nature of the business problem being addressed, and the system complexity that is introduced due to the previous topics, usability is a critical factor for ECS. ECS is developed using specialists in human interface engineering so strike an appropriate balance between ease of use and complex functionality.

Compatibility/Maintainability

To minimize downtime as part of providing high availability, ECS must provide compatibility from one release to the next. Backward compatibility means that the when a new version of ECS is installed, it continues to work with the customizations and other systems witch which it interacts. Forward compatibility means that when systems around the ECS are upgraded, the ECS must continue to function as it did before, even though the new software may support new protocol versions, etc. The compatibility requirement applies to both interfaces within a single system and over-the-wire interfaces with other systems. It also applies to communication between multiple instances of differing versions of the ECS on different hosts when deployed to provide scalability or high availability.

When fixes are provided for ECS, downtime for installing the fix must be minimized by providing support for incremented update (patch). Also risk of upgrading must be minimized by providing the ability to back out updates should a fault be encountered. ECS may also interface with automatic update systems.

Manageability/Serviceability

The scale of the deployment of ECS requires that it provide features that allow it to be managed effectively. Management areas can be thought of in terms of FCAPS - fault, configuration, accounting, performances, and security management. The operators of ECS must be able to monitor what is happening in the system and to diagnose faults when they occur. Fault diagnosis requires being able to collect sufficient information about the fault when it occurs, preferably without having to reproduce the fault.

Supported

With any mission critical software deployment, the enterprise must have a reliable way of getting support for diagnosing problems and getting fixes. This includes 24x7 availability for support personnel and an organization with the experience and expertise to understand the ECS and how it is used in enterprises.

Documentation

Along with good support, documentation is also critical for ECS in order to support the characteristics identified above.

Similar Terms and Other Definitions

Wikipedia provides a definition for Enterprise Software which is more about what the software actually does rather than its general characteristics. There is a comment at the end though that does identify one sarcastic characteristic of enterprise (or enterprise class) software as being overly complex software.

A Justin Gehtland blog entry talks about enterprise-class software and the software that runs the enterprise. He uses terms like "behemoths", "10 million transactions a minute", and "an amalgamation of equipment" when describing enterprise-class software. Stefan Tilkov's blog entry takes this one step farther, comparing enterprise-class software to a set of large rocks, with solidity being their strength, while the software that runs the enterprise is like water that flows around the rocks.

----- Revision r1 - 20 Oct 2007 - 19:28:09 - Main.tmueller