|
11.1. The Enterprise PerspectiveAs described in Chapter 1, the main motivation for creating an SOA is the desire to increase agility of the enterprise IT systems. In addition, SOAs offer benefits at several levels, ranging from a reduction of technology dependence to a simplification of the development process to an increase in flexibility and reusability of the business infrastructure. The ultimate goal of the additional reusability and flexibility provided by an SOA is the Agile Enterprise, in which all processes and services are completely flexible and can be rapidly created, configured, and rearranged as required by business experts without the need for technical staff (see Figure 11-1). Among other things, this facilitates a superior time-to-market for new business initiatives. This vision of an Agile Enterprise reconciles the growing demands of a global and rapidly changing business environment with the limitations of current technological and organizational infrastructures. Consequently, the Agile Enterprise is not so much characterized by a fixed state of the enterprise but rather by an ongoing change process within the enterprise. Figure 11-1. SOAs and their benefits.Several sources contribute to the pressure on enterprises to instigate ongoing changes. Enterprises are continually forced to reinvent themselves by offering their customers new or better services to stay ahead of or keep pace with competitors. In order to remain as cost effective as possible, partners and suppliers must be regularly evaluated and, if need or opportunity arises, substituted by alternatives offering better quality, prices, or conditions. In addition, mergers and takeovers often require the integration of new systems, applications, and processes into the enterprise's IT and business infrastructure. However, as unrelenting as this pressure toward constant change is, it is often obstructed by technological and organizational obstacles. For example, replacing a partner or supplier might be straightforward in theory, but it could require major efforts in reality. These efforts could involve a complete redevelopment of technical interfaces and a major redesign of business processes. Similarly, integrating a newly merged or acquired company's IT infrastructure and processes might call for a large-scale integration project. In addition, although offering new or better services might be desirable from the business perspective, it often proves to be technologically or organizationally infeasible. Typically, this can arise for two reasons:
For an enterprise to become an Agile Enterprise, it is therefore necessary to construct a technological and organizational infrastructure guaranteeing as much flexibility as possible. SOAs provide the means for achieving this flexibility by leveraging an appropriate architecture. In the following subsections, we describe the benefits of introducing an SOA at the level of the enterprise in detail. 11.1.1. AGILITYOne of the primary motivating factors for using SOAs is the potential increase of agility they offer. In order to fully understand this benefit, we must identify the different levels at which enterprise projects are threatened by complexity. Inevitably, complexity diminishes the enterprise's agility. The following elements of complexity can be distinguished:
Without an appropriate architecture, the risk of complexity preventing agility is very serious because changes might be infeasible or so expensive that the costs exceed the benefits. SOAs can help to significantly reduce complexity at all levels. This is of particular importance for enterprises, given their need to become more agile in order to react as quickly as possible to changing business environments and offer new services to customers, suppliers, and partners that make a difference with respect to competition. SOAs achieve their simplicity by the following means:
11.1.2. COST SAVINGSWe have already seen that agility and efficiency are the primary benefits of an SOA. This is mainly due to the fact that a commercial organization's agility and efficiency should help increase profit and aid in effecting savings. In this section, we discuss possible sources for cost savings. In particular, in price-sensitive, low-margin, mature markets in which the possibility of product innovations is rather limited, cost efficiency plays a key role. In these markets, often the price of the product makes the difference and hence provides the competitive advantage. In general, we distinguish between direct (saving IT costs) and indirect contributions (saving business costs). 11.1.2.1 Cost Savings at the Business LevelSOAs can help to reduce costs in the enterprise's core business. These cost savings are largely related to the SOA's agility. There is a number of obvious examples:
It should be noted that the possibilities of cost savings enabled by SOAs are not limited to the examples stated here. 11.1.2.2 IT Cost SavingsIn principle, three major sources for IT cost savings can be distinguished:
Most of these benefits are more or less directly related to the high degree of reusability provided by SOAs, which we will now discuss in more detail. 11.1.3. REUSE AND THE RESULTING BENEFITSReuse has long been a holy grail of the IT industry. The initial idea focused on reusing code through class libraries or code templates. However, within an enterprise, code reuse often has less far-reaching impact than the reuse of runtime components. Being able to reuse a component at runtime by linking it into a number of different sub-systems means not only that we are sharing a common code base, but more importantly that the different sub-systems are now sharing the same application data. This significantly reduces redundancies and inconsistencies in business data, which is a huge benefit. It is important to point out that it is a key benefit of an SOA that it contributes to runtime reuse. The use of a service is not confined to the project for which it is initially developedit can also be reused in other applications. This allows for a holistic IT strategy in which projects are not separated activities but instead contribute to each other and can be combined to achieve an overall synergy. Moreover, usage is not tied to the technical infrastructure on which the service has been deployed. The service interface provides an abstract layer that can be used in the context of arbitrary technical infrastructures. Therefore, the service itself can be used in different technological contexts that guarantee protection of investment. Another major benefit of reusability concerns design, modification, and optimization of the implemented business processes. When using an SOA, a business process can be composed directly from services or individual service operations. On one hand, it is possible to create a new servicethat is, an intermediary or process-centric service (see Chapter 5, "Services as Building Blocks")simply by arranging or "choreographing" existing building blocks. On the other hand, modifying or optimizing an existing service is also straightforward because it only requires a rearrangement of the operations used in the service. Finally, reuse of existing code significantly reduces the risk of failure in enterprise projects. Using proven components, that is, code that has already been in operational use, eliminates time-consuming debugging and functional testing. It also enables the project to proceed iteratively in small steps. Enterprise projects can start with a comparatively small scope implementing the basic functionality. Based on this initial implementation, new functionality can be added step by step, reusing the functionality that has already been proven. 11.1.4. INDEPENDENCE FROM TECHNOLOGYAs previously stated, SOAsin particular the service contracts that describe servicesprovide an abstraction from the underlying technology. This independence offers several benefits for an enterprise. Most importantly, business considerations can assume their natural role as the driving force for decisions. Focus on technology can be a major problem in IT projects. This is not to say that technology is irrelevant, but often, discussions about "the right technology" threaten to tie up resources that could be better spent designing and optimizing business functionality. SOAs help to shift the attention from technological issues to questions of service functionality and service design. In other words, the question of which services to offer is separated from the question of how to implement the services. Independence from technology also increases independence from software vendors. The opposite of a service-oriented approach can be caricatured as a project in which the functionality and features of a particular software product or technology determine the scope of the project. Applying an SOA enables choosing the best of breed products and combining them as required by the particular application, not as stipulated by software vendors. However, contemporary application landscapes are characterized by a variety of different incompatible technologies (e.g., J2EE versus .NET). This heterogeneity makes it particulary hard to create and maintain cross-departmental business processes. Due to the tight coupling of business functionality to specific technology, it can be arbitrarily difficult to force different parts of the architecture to work together. SOAs mitigate these obstacles by decoupling the technologies of the provider and consumer of specific business functionality. SOAs do not eliminate the heterogeneity itself but rather its impact on agility and efficiency. It is the very nature of big application landscapes to tend toward heterogeneity. Fighting this heterogeneity is infeasible, and SOAs therefore embrace heterogeneity as a given fact and cope with it in the best way possible. Independence from underlying technology permits a decoupling of technology lifecycles from the lifecycles of business services. Thus, the introduction of a new technology within an enterprise does not require a makeover of the business processes and services. Similarly, new business services can be introduced without the need to wait for new, innovative technology to become mature, stable, and affordable. Although an SOA provides a lot of technological independence, you will never completely eliminate technology dependencies. In fact, every SOA requires a certain amount of technical infrastructure (see Chapter 9, "Infrastructure of a Service Bus"). Distributed logging and data transport are two prominent examples. However, if the SOA is properly deployed, this technical infrastructure is largely encapsulated. 11.1.5. ADEQUATE BUSINESS INFRASTRUCTUREThe traditional IT infrastructure of enterprises is characterized by a strong focus on technology and monolithic applications with fixed functionality. Technology, processes, business rules, and core business logic as well as data are tightly coupled. These applications are usually inflexible and can only serve as an appropriate business infrastructure in their original context. Thus, as the business context of the enterprise evolves over time, these applications often do not keep up with the enterprise's business strategy, which might have evolved in an entirely different direction. SOAs, if applied correctly, can correct the mismatch between the demands of the ever-changing business environment and the constraints imposed by a rigid IT infrastructure. The business infrastructure of enterprises that implement an SOA will differ from traditional infrastructures. Instead of carefully planning and executing large-scale projects spanning several years, a step-by-step approach becomes feasible. The scope of enterprise projects will thus become twofold: on one hand, projects will create new services and functionality for immediate use, while on the other hand, the services developed will later serve as building blocks for future projects. More importantly, SOAs decouple technology, processes, business rules, and data. This implies that if one of these becomes obsolete, the others can still remain in use. Consequently, an SOA-enabled enterprise will create a sustainable business infrastructure over time that consists of flexible building blocks that can be continually reused. 11.1.6. MORE EFFICIENT DEVELOPMENT PROCESSUsing an SOA in an enterprise project also impacts the development process considerably. Chapter 13 will describe in detail how project management should be conceived when applying an SOA. At this point, we concentrate on how an SOA can help to reduce the complexity of the development process in general. One obvious advantage of the contract-driven SOA approach is a natural relationship between business-oriented project artifacts such as use case descriptions and technical deliveries such as interfaces or even services. From the perspective of the development process, the main benefit of using an SOA is that it allows for a high degree of modularity, which in turn makes it possible to decouple the development process. Let us more closely examine what this means. First, it means that the services to be developed in an enterprise project can be implemented independently of each other. By its very definition, a service is self-contained and can be used autonomously. In other words, it is not implicitly tied to the environment in which it has been implemented. If the service needs other services to perform correctly, all these dependencies are explicitly modeled and implemented as service calls with well-defined interfaces. As a consequence, development teams in an SOA-based enterprise project can be decoupled, such that each team is responsible for implementing a specific list of services. Interaction between the teams is then reduced to a minimum, focusing mostly on the agreement of service interfaces. However, the definition of interfaces is one of the main development tasks in any development. An SOA provides a guideline for the interface definition and simplifies the process of achieving them. Project management can focus on managing small development teams and can employ efficient techniques not applicable for large teams with highly interconnected tasks. The overhead of project management is thereby significantly reduced. A critical phase in most development projects is the integration of code developed by different teams. Problems that had not been apparent when developing the individual modules often surface in the integration phase. One major reason for the integration phase becoming a bottleneck is the inability to separately test and debug code. Once again, the SOA helps to reduce complexity in this respect because it enables the independent testing of individual service operations to a certain degree. 11.1.7. EVOLUTIONARY APPROACHSOAs can be distinguished from other architectures because they explicitly address many of the enterprises' non-technical constraints. One of the most important constraints is based on the fact that large organizations tend to evolve in small steps. The organization's IT infrastructure should enable a similar evolution. There are several reasons for this:
SOAs are particularly well suited to enable a step-by-step approach due to two major characteristics. First, SOAs enable an efficient decomposition of large segments of functionality into largely decoupled components of manageable sizei.e., application frontends and services. A project organization can directly follow this decomposition. Big projects that appear to be too risky, too difficult to rollout in the business organization, or technically infeasible can be broken down into subprojects that can individually be brought to success. Even if a single subproject fails, there is no overall threat to the enterprise. Second, unlike other architectures, SOAs are not tied to any specific technology. This enables an enterprise to be very flexible while introducing new functionality. More importantly, SOAs can make changes or amendments to technology and business functionality by treating them in an independent manner. However, the real world is even more complex. Endeavors such as the introduction of a new architecture paradigm do not follow a long-term project plan. Instead, it is a fact that the requirements of day-to-day business have a higher priority. This implies that the introduction of an architecture will be more like an ongoing effort that accompanies the major business projects. As discussed in Chapter 6, SOAs reflect this requirement by their very nature. They enable an increase in both the scope of the SOA's technical foundation and its "content"the business functionalityin small steps. 11.1.8. SOA ENABLES FEEDBACK AT DIFFERENT LEVELSIt is undisputed that the enterprise architecture impacts all levels of the enterprise's organization with a variety of different stakeholders involved. It is therefore essential that the enterprise architecture address the key needs of these stakeholders (we will discuss the appropriate benefits from the perspective of the individual stakeholders in Section 11.2.). However, it is not only the architecture that impacts their stakeholdersit also works in reverse, or at least it should. All stakeholders should be able to influence the architecture in order to make the full range of knowledge of the entire enterprise available to create an architecture in the best way possible. Many previous approaches have been comprehensible only to IT experts and therefore do not reflect this essential requirement. Consequently, only a few people have been able to contribute to the architecture, with the effect that valuable knowledge has not been used to make decisions crucial for the entire enterprise. SOAs provide useful abstractions at different levels. They are not only comprehensible to IT experts but also to representatives of the functional departments. This characteristic of an SOA opens up vast knowledge from many people to contribute to its success and, incidentally, enables the management of the IT and business departments to gain appropriate influence on the main architectural decisions. It can also facilitate buy-in from the department members consulted. 11.1.9. MITIGATING RISKThe risk-mitigating effect of an SOA is a key benefit. Depending on the concrete business of an enterprise, this could even be the most important benefit of an SOA. According to the Standish Group [Sta2001], the key reasons for problems in IT projects are:
At a minimum, some key characteristics of an enterprise SOA can help to partially address these issues in a number of ways.
Finally, we must add that even failed projects can contribute to the business infrastructure of the SOA by amending business services or service operations that can be reused in future projects. As a consequence, the enterprise can benefit from at least a fraction of failed project efforts in the long term. |
|