| CONTENTS | PREV | NEXT | INDEX | J2EE BluePrints |
While timing has always been a critical factor to adopting new technologies, the accelerated pace inherent in a virtual, information-driven business model has put even greater emphasis on response times. To leverage Internet economics, it's imperative not only to project enterprise systems into various client channels, but to do so repeatedly and in a timely manner, with frequent updates to both information and services. The principal challenge is therefore one of keeping up with the Internet's hyper-competitive pace while maintaining and leveraging the value of existing business systems. In this environment, timeliness is absolutely critical in gaining and maintaining a competitive edge. A number of factors can enhance or impede an organization's ability to deliver custom enterprise applications quickly, and to maximize their value over their lifetime.
The ability to develop and deploy applications is key to success in the information economy. Applications need to go quickly from prototype to production, and to continue evolving even after they are deployed.
Productivity is thus vital to responsive application development. Providing application development teams with standard means to access the services required by multitier applications, and standard ways to support a variety of clients, can contribute to both responsiveness and flexibility.
One destabilizing factor in Internet and other distributed computing applications is the current divergence of technologies and programming models. Historically (in Web terms), technologies such as HTML and CGI have provided a mechanism for distributing dynamic content, while backend systems such as transaction processors and database management systems have provided controlled access to the data to be presented and manipulated. These technologies present a diversity of programming models, some based on well-defined standards, others on more ad-hoc standards, and others still on proprietary architectures.
With no single application model, it can be difficult for teams to communicate application requirements effectively and productively. As a result, the process of architecting applications becomes more complex. What's more, the skill sets required to integrate these technologies aren't well organized for effective division of labor. For example, CGI development requires coders to define both content and layout to appear on a dynamic Web page.
Another complicating factor in application development time is the choice of clients. While many applications can be distributed to Web browser clients through static or dynamically generated HTML, others may need to support a specific type of client, or to support several types of clients simultaneously. The programming model needs to support a variety of client configurations, with minimum effect on basic application architecture or the core business logic of the application.
Imagine a brick-and-mortar business trying to increase its customer base by a scale of 10. How much time and effort would they expend on remodelling storefronts, building new warehouses, and so on, to keep up? The fact is, the constant rework would drastically impact their ability to serve the customers they're trying to attract.
This holds for businesses in the information economy as well. The ability for applications to scale easily and automatically to accommodate anticipated--or unexpected--growth is key to achieving the goals. Systems that require any restructuring or redeployment to scale will impede growth and diminish the company's expected performance.
In order to scale effectively, systems need to be designed to handle multiple client interactions with ease. They need mechanisms for efficient management of system resources and services such as database connections and transactions. They need to have access to features such as automatic load balancing without any effort on the part of the application developer. Applications should be able to run on any server appropriate to anticipated client volumes, and to easily switch server configurations when the need arises.
Much of the data of value to organizations has been collected over the years by existing information systems. Much of the programming investment resides in applications on those same systems. The challenge for developers of enterprise applications is how to reuse and commoditize this value.
To achieve this goal, application developers needs standard ways to access middle-tier and backend services such as database management systems and transaction monitors. They also need systems that provide these services consistently, so that new programming models or styles aren't required as integration expands to encompass various systems within an enterprise.
Application development responsiveness requires the ability to mix and match solutions to come up with the optimum configuration for the task at hand. Freedom of choice in enterprise application development should extend from servers to tools to components.
Choices among server products gives an organization the ability to select configurations tailored to their application requirements. It also provides the ability to move quickly and easily from one configuration to another as internal and external demand requires.
Access to the appropriate tools for the job is another important choice. Development teams should be able to adopt new tools as new needs arise, including tools from server vendors and third-party tool developers. What's more, each member of a development team should have access to tools most appropriate to their skill set and contribution.
Finally, developers should be able to choose from a ready market of off-the- shelf application components to take advantage of external expertise and to enhance development productivity.
Somewhat ironically, projecting information assets to extract their value can jeopardize that very value. Traditionally, IT departments have been able to maintain a relatively high level of control over the environment of both servers and clients. When information assets are projected into less-protected environments, it becomes increasingly important to maintain tight security over the most sensitive assets, while allowing seemingly unencumbered access to others.
One of the difficulties in integrating disparate systems is providing a unified security model. Single signon across internal application and asset boundaries is important to creating a positive user experience with the applications. Security needs to be compatible with existing mechanisms. In cases where customers need to access secure information, the mechanisms need to maintain high security (and user confidence) while remaining as unobtrusive and transparent as possible.