ABC Amber CHM Converter Trial version, ruthenpress.info html. Enterprise SOA: Service-Oriented Architecture Best Practices By Dirk Krafzig. Enterprise SOA: Service-Oriented Architecture Best Practices Strategic Enterprise Architecture Management: Challenges, Best Practices, and Future. Enterprise SOA; Service-Oriented Architecture Best ruthenpress.info - Ebook download as PDF File .pdf), Text File .txt) or read book online.
|Language:||English, Spanish, Arabic|
|Genre:||Academic & Education|
|Distribution:||Free* [*Register to download]|
Book Description. This book spells out guidelines and strategies for successfully using ServiceOriented Architecture (SOA) in large-scale projects. Download Citation on ResearchGate | On Jan 1, , D Krafzig and others published Enterprise SOA - Service-Oriented Architecture Best Practices. Best practices ROI from faster time-to-market – a more responsive enterprise Source: InfoWorld Research Report: Service Oriented Architecture (SOA).
Entirely new products and services have been created, which would have been unthinkable without the support of modern IT. Without a doubt, today's modern enterprises are completely dependent on their IT. Consequently, today's IT is driven by the same dynamics as the enterprise itself. Today, we expect an extremely high level of flexibility and agility from our enterprise IT.
During the post Internet-boom years, cost efficiency quickly became another key requirement, if not the most important one.
Enterprise IT has changed as a result of the constantly increasing pressure. In the early days of enterprise computing, IT was merely responsible for providing storage and processing capacity, with more and more business logic being added throughout the decades. During the different boom phases in the s and s, a plethora of new applications emerged, often side by side with the information silos that had been developed in the previous 20 years.
Today, the increasing cost pressure is forcing us to efficiently reuse existing systems while also developing new functionality and constantly adapting to changing business requirements. The term "legacy system" is now often replaced with "heritage system" in order to emphasize the value that lies in the existing systems. The increases in reuse and harmonization requirements have been fueled by the urgency of integrating the historically grown IT landscapes in order to improve IT efficiency and agility.
While a lot of trial-and-error projects were executed in the s, with more or less high levels of success, the development of EAI and middleware concepts has now been culminated in the principles of Service-Oriented Architecture SOA , which can be seen as an important evolutionary point in the development of integration technologies.
What is important about SOA is that it has taken away the focus from fine-grained, technology-oriented entities such as database rows or Java objects, focusing instead on business-centric services with business-level transaction granularity. Instead, it represents an architectural blueprint, which can incorporate Reader's Guide The reader's guide provides an indication as to who should read this book and the benefits to be gained.
A summary of each chapter provides an overview of the step-by-step approach required for the successful introduction of Service-Oriented Architectures SOA. Who Should Read This Book This book is aimed at the various stakeholders of enterprise software architectures, including software architects and evangelists, designers, analysts, developers, members of IT strategy departments, project managers, representatives of product vendors, and those interested in software architecture and its relation to structures and processes within large-scale organizations.
Furthermore, this book is an excellent introduction to the real world of commercial computing for students in a variety of disciplines. If you are a software architect, this book provides you with hands-on guidelines for the design of SOAs.
You will find the definition of an SOA together with its key terms as we distinguish the SOA from approaches such as component architectures and software buses. Furthermore, this book provides concrete guidance for the most important design decisions one will encounter in practice. These guidelines comprise identifying services, assigning the appropriate service type and allocating the ownership of data to services. You will also discover how to utilize expansion stages in order to enable stepwise SOA introduction.
This book also provides valuable advice on the design of a functional infrastructure for business processes and on how to achieve process integrity, approach heterogeneity, and initiate the technical infrastructure. We discuss these guidelines with respect to different application types, including Web applications, fat clients, mobile applications, EAI, and multi-channel applications. For the purpose of software architects, Chapters 4 to 10 are most valuable. In addition, Chapter 13, which covers SOA project management, will be helpful in ensuring an efficient collaboration within an SOA project.
Do you see yourself in the role of an SOA evangelist? If you intend to implement an SOA within your own organization, you must successfully promote your ideas.
Most importantly, you must be able to communicate the benefits of the SOA to all stakeholders of the application landscape within your organization. Chapter 11 will be of special interest to you because it presents the key benefits of SOA for the organization and each individual stakeholder. In addition, Chapter 12 provides an in-depth description of the steps required to set up an SOA, with considerable practice-oriented advice as to the introduction of appropriate processes and boards.
After reading this book, you should have a deeper understanding of SOAs, enabling you to effectively argue the benefits to different stakeholders and to establish the necessary processes and boards to make your SOA endeavor a success!
If you are a software designer, analyst, or developer working in an SOA project, although you are likely to work in a specific part of your application landscape, this book will help you obtain a better understanding of the entire process. Furthermore, there are key challenges such as process integrity that directly impact your work.
This bookin particular Chapters 7 to 10helps to address these challenges in a coordinated manner within your SOA project.
If you work in the IT strategy department of an large organization, you should read this book in order to find out how SOAs can add to your IT strategy. Your work is likely to be driven by the demand for agility and cost effectiveness. Many enterprises have experienced projects that failed to deliver the required functionality and therefore lost business opportunities.
Furthermore, many application landscapes suffer from high maintenance costs for their inherited assets and the integration of new applications. Finally, several strategies for introducing the SOA within the organization are presented.
Those success stories provide "living proof" of SOA success and offer an impression of the different ways an SOA can be established. If you are an experienced project manager, you should read this book in order to understand the specific benefits of SOAs for project management. The SOA approach implies a major simplification of the overall software development process, and this book makes these benefits accessible.
However, SOAs will challenge you, and as a result, this book presents solutions to the most important problems one encounters in an SOA project, both from the A Roadmap for This Book The successful adoption of an Enterprise SOA is based on three fundamental factors: architecture, organization, and lessons drawn from real-world experience.
A successful SOA adoption accelerates an enterprise by reducing the gap between strategy and process changes on one hand and supporting IT systems on the other. The IT architecture and the business organization are mutually dependent, although they both drive each other.
Finally, real-world experience, in particular previous long-term IT infrastructure initiatives both successful and unsuccessful influence and validate many of the core concepts of SOA.
Not surprisingly, this book is structured around these three factors. After we introduce the subject area in Chapters 1 to 3, Part I, Chapters 4 to 10, focuses on the architecture. Part II, Chapters 11 to 13, discusses the challenges of introducing an SOA at the level of the organization, depicting its benefits, processes, and project management. Chapter 2, "The Evolution of the Service Concept," describes how commercial information technology has moved toward the service concept over the last 40 years.
Today's SOA is the preliminary endpoint of many years of painful "testing.
Chapter 3, "Inventory of Distributed Computing Concepts," introduces the fundamental concepts of distributed computing that are required for subsequent discussions in Part I Chapters Particular topics will be communication infrastructures, synchronous versus asynchronous communication, payload semantics, granularity, and loose versus tight coupling.
Chapter 4, "Service-Oriented Architectures," describes the particular requirements of large organizations for building an architecture and defines the term "Service-Oriented Architecture" as it is used throughout this book. Chapter 5, "Services as Building Blocks," is a direct continuation of Chapter 4. It introduces different service typesnamely basic, intermediary, process-centric, and external servicesand gives an in-depth discussion of their key characteristics.
Chapter 6, "The Architectural Roadmap," completes the discussion started in Chapter 5. Using the concept of building blocks, the high-level structure of SOAs is depicted. Chapter 6 introduces two key concepts: SOA layers and expansion stages.
SOA layers aim to organize the aforementioned services at the enterprise level. Expansion stages are well-defined levels of maturity of an SOA that enable a stepwise implementation.
The aim of this roadmap is to strike a good balance between immediate gains on one hand and long-lasting improvements to the enterprise IT landscape on the other. An SOA should increase the capability of an enterprise to address new business requirements on the short term by reusing existing business logic and data models, thus incurring only minimal cost, resource, and time overheads, while minimizing risks, especially when compared to rewriting entire application systems. In addition, an SOA should provide endurable benefits in terms of agility because it provides a long-term strategy for the increase of the flexibility of an IT infrastructure.
This chapter closely looks at the problems faced by enterprise software today, the resulting requirements for an enterprise IT architecture such as an SOA, and how such an architecture can be established on the organizational level.
Carr published the heatedly debated article "IT doesn't matter" in the Harvard Business Review, claiming that " Because of today's highly competitive global economy, these business processes underlie constant change: Enterprises must constantly sense changes in market conditions and swiftly adapt their strategies to reflect these changes. Therefore, it is a key requirement for modern enterprise IT that changes in company strategy be reflected quickly and efficiently in the company's IT systems, which are the backbone for executing the strategy.
This is exactly where the enterprise software dilemma starts: Today's enterprise software development almost always suffers from lack of agility and from inefficiency. This means that enterprises are not able to match business requirements onto underlying IT infrastructure fast enough, effectively limiting the capability of the enterprise to react appropriately to market demands. In addition, the inefficiency of enterprise software development means that the development that is actually done costs too much when compared to the actual output.
If we look at a typical enterprise software system, we can normally observe an initial phase of high productivity and agility, as shown in Figure During this Green field phase, the system is built with much new functionality, and initial change requests can be implemented relatively quickly and efficiently. However, after the initial system implementation has been put in place and the first couple of change requests have been executed, the ability to make more changes to the system deteriorates dramatically, and maintenance over time becomes harder and harder.
Figure Change requests reduce the agility of a system over time. This stagnation phase, which almost any enterprise software system experiences over time, cannot be explained by a single reasona number of factors contribute to this phenomenon.
Some of these reasons are related to software technology, such as the difficulty of making structural changes to an existing code base. However, most of the reasons are not of a technical nature but rather are related to reasons on the organizational level.
For example, after 1. Enterprise Software Is a Different Animal In order to better understand the problems of enterprise software, we need to look at the specific characteristics of it, which are different from those of other types of software, such as system software, desktop applications, embedded systems, scientific software, or video games.
As the name indicates, enterprise software is tightly coupled with the internal organization, processes, and business model of the enterprise. Enterprise software underlies both cross-departmental dependencies and external business relationships.
Consequently, an architecture for enterprise software must deal with large numbers of different requirements. Many of these requirements are conflicting, while others are unclear.
In almost every case, the requirements are a moving target due to the permanent change of markets, the organization of the enterprise, and its business objectives. It is this involvement in all aspects of the enterprise and the business that makes enterprise software highly complex. Enterprise applications rarely contain a large amount of complicated algorithms. The code that describes a piece of business logic is usually very simple.
The structure of a COBOL-based billing system is much simpler than, for example, an embedded system for a Mars robot with complex real-time and multi-threading requirements. In enterprise applications, one usually finds very simple data structures, which again are different from other systems such as geographic information systems GIS.
Let's consider an example in order to illustrate the difference between enterprise applications and other software: An enterprise application such as a Customer Relationship Management System CRM , a billing system, a shipping system, or an insurance claims processing system. The stakeholders in these systems include different business units and potentially even the CEO, as well as different IT projects, IT maintenance, and operations.
In these scenarios, we will be facing highly heterogeneous teams and often very political environments. The technology landscape will be highly heterogeneous as well, including many different application and middleware platforms. The business data and content will have a very long lifetime, especially when compared with the much shorter cycles of technology innovation.
We need to deal with constantly changing functional requirements that are usually not well-defined. In addition, we will be facing many cross-dependencies between functional requirements, as well as heterogeneous technology platforms. The number of end users will be potentially very large, and the applications will have to be rolled out to large numbers of PCs, often more than 10, The solutions and reference A central aspect of Service Oriented architectures discussed in the paper are reusable Architectures is the loose coupling between across domains and the implementing organizations applications services that is achieved when would benefit in terms of considerable time and cost services publish their functional and non-functional savings.
Section 2 discusses the concept of Service Oriented 2. Section 3 discusses the Strawman necessary for enterprises to protect the investments Architecture that serves as a starting point for the already made in existing solutions despite the need development of Service Oriented Architecture for for new applications that incorporate changing large Enterprises. Section 4 describes the Reference technologies and business requirements. NET platforms, using Design Patterns.
Also, several customers require an approach to plan an enterprise wide strategy that 2 Service Oriented Architecture leads to a scenario of well integrated IT systems within their organization.
SOA, when approach in which an application exposes services properly implemented, addresses the business and that are consumed by clients. SOA differs from the technical integration considerations elegantly. The higher level of abstraction provides Architecture SOA , it becomes imperative to a strategic advantage of facilitating more focus on consider SOA for Enterprise Applications to benefit the business requirement .
A business service can be mapped to one or more technology services for implementation. From a 3 Strawman Architecture for technology perspective, a service is a defined Enterprise-Wide SOA interface with input and output parameters. Typically, an Enterprise is a large organization having forward and backward linkages with other Services can be implemented in various ways.
Net agencies. The Enterprise would, in all likelihood, be platform can provide services. The problem with involved in B2B and B2C transactions. This section these technologies is that they are platform specific presents Strawman Architecture for developing and are not interoperable.
Strawman Architecture is the technologies like Web Services, which can be used initial architecture that serves as a starting point for across platforms and networks. Web Services work developing the target architecture. They are platform-independent, vendor of the target architecture. With the advent of web services, SOA enabled enterprise applications have become vendor independent, to a great extent. A generic view of a service is as a major technology and have products that considered.
These services control the flow and interaction of business services. There are typically two types of Data It can be seen from the figure that the enterprise services that need to be provided in an enterprise: has several applications that need to talk to each Information Services that transform and replicate other.
A key feature of the architecture is the use of data stored across the enterprise in various data Enterprise Service Bus ESB that enables a smooth sources.
ESB is Integration services that provide the ability to often described as a product, especially in the interact with structured and unstructured data marketing literature of various vendors. But, in a services like the databases and flat files. These strict sense, ESB is an architectural style.
The business processes of the and encapsulate access to functionality and data in enterprise may be exposed as services that can be those applications. Client Services with the following four tenets of service orientation ii. The technology landscape will be highly heterogeneous as well, including many different application and middleware platforms.
The business data and content will have a very long lifetime, especially when compared with the much shorter cycles of technology innovation.
We need to deal with constantly changing functional requirements that are usually not well-defined. In addition, we will be facing many cross-dependencies between functional requirements, as well as heterogeneous technology platforms. The number of end users will be potentially very large, and the applications will have to be rolled out to large numbers of PCs, often more than 10, Take, on the other hand, a desktop application, such as a word processor or spreadsheet application. A smaller, more homogeneous technical team will develop this application.
It will be used by office workers as well, but the problem space is more well-defined. The application logic is self-contained, with very few cross-dependencies. Finally, there is no roll-out problem because the end user is typically responsible for the installation himself. As we can see from these examples, enterprise software is unique in many respects, and therefore, it requires unique measures to ensure the efficiency of its development and maintenance.
The Importance of Enterprise Software Architectures According to the second law of thermodynamics, any closed system cannot increase its internal order by itself. In fact, any activity that is geared toward ordering the system will increase its overall disorder called entropy. In many respects, this law is also applicable to enterprise software, which often has very similar characteristics.
Consequently, outside intervention is continually required to help create a higher order and to ensure that development efforts are not lost.
In enterprise software, the architect takes on the role as an outside influencer and controller. It is his responsibility to oversee individual software projects from the strategic point of view of the overall organization, as well as from the tactical, goal-oriented viewpoint of the individual project.
He has to balance different requirements while attempting to create an enduring order within the enterprise software landscape.
The enterprise software architecture is the architect's most important tool at hand. Software architects are constantly confronted with changes to and expansion of functionality that increase system complexity and reduce efficiency. By refactoring current solutions, architects constantly strive to reduce complexity and thereby increase the agility of the system see Figure Software architects use refactoring to fight the constant increase in system complexity.
They might occur in major changes to existing jurisdiction, the end-of-life of a supported product, or the introduction of large chunks of computing infrastructure, such as in the course of a merger or acquisition.
Such events require a major effort at very short notice to keep the architecture in a simple and maintainable state. Devastating consequences have been observed as a result of mergers and acquisitions: concise financial reporting being lost after a merger and raw system capacity being exhausted after an acquisition.
Because it is unknown a priori when such effects will occur, it is vital to keep the enterprise architecture in a maintainable and changeable state all the time. As we will see in the remainder of this book, Service-Oriented Architectures are particular well suited to cope with the needs of such an ongoing incremental process of optimization. The Requirements for an Enterprise Software Architecture As a result of the aforementioned tight coupling with the internal organization, processes, and business model of the enterprise, an enterprise software architecture must fulfill very different requirements than, for example, a software architecture for a system that is controlled by a small number of highly qualified domain experts, such as the Mars robot or a video game engine.
In order to improve agility and efficiency, an enterprise software architecture must provide particular characteristics: Simplicity. The enterprise architecture must be simple in order to allow efficient communication between key personnel.
As previously discussed, many people are involved in the specification and construction of enterprise software. All these people have different roles and consequently different viewpoints with regard to the software.
It is also likely that several different skill sets exist among personnel. These might range from IT coordinators of functional departments to technical architects. Many IT coordinators will have detailed business domain knowledge but no technical expertise.
On the other hand, technical architects will probably have an excellent technical education but have little understanding of the vertical business. Nevertheless, all the people involved must be able to understand and manage the architecture at their respective levels e. Flexibility and maintainability. Every enterprise system is subject to ongoing change. It must continuously be adapted to new requirements due to the need of evolving markets, legal changes, or business reorganizations.
Therefore, the architecture must lead to a highly flexible and maintainable system. The architecture must define distinct components that can be rearranged and reconfigured in a flexible manner.
Local changes cannot be permitted to have an impact on the global system. Providing that the external API of a component remains stable, an internal change should not affect operations outside the component. In this context, one needs to understand that external interfaces of components must be designed very carefully. To a great extent, interfaces must be generic and not specific to a single usage scenario.
However, defining generic interfaces requires excellent domain knowledge, experience, and to some extent, luck. Finally, the internal implementation of a component must allow efficient maintenance, making it is easy to add or modify functionality. Reusability has been a major objective of software engineering for decades, with varying degrees of success.
It is in the interest of an enterprise to gain as much benefit from its software assets as possible. This can be achieved by creating an inventory of useful building blocks and continually reusing them.
One obvious reason for reuse is reduced development and maintenance cost, which can be accomplished by sharing common functionality in code libraries that are used across different projects. However, perhaps a more important aspect of reusability is the ability to share data across applications in real-time, thus reducing content redundancies. Having to maintain the same dataset in multiple databases becomes a nightmare in the long term.
Unfortunately, it is not easy to achieve the goals of reuse. Large organizations have learned that reuse is not always efficient because it is particularly costly to administer, find, and understand the components that should be reused, and sometimes this cost outweighs the benefits. Decoupling of functionality and technology.
The architecture must make an enterprise organization independent of the technology. It must decouple the long lifecycle of the business application landscape from the shorter innovation cycles of the underlying technology.
Moreover, an architecture that is designed to last longer than one or two of these technology innovation cycles must cope not only with changing technologies but also with the actual lifecycles of installed technologies, which can be much longer. It is therefore a major requirement that the architecture tolerate both heterogeneity and change to its technical infrastructure. Furthermore, the development of business functionality must be decoupled from the underlying technology.
In particular, the architecture must avoid dependencies on 1. The Relation of Enterprise Architecture and Enterprise Standards For many decades, enterprise IT organizations have attempted to improve agility and efficiency by homogenizing their systems through the introduction of enterprise-wide IT standards, but mostly with very limited success.
Therefore, it is important to understand that an enterprise architecture is not equal to an enterprise standard, as we discuss in this section. In the s, with relational database systems becoming mainstream, we saw a wave of so-called Enterprise Data Model EDM projects. The idea of these standardization projects was to define one global data model for all the business entities in an enterprise, which was to be shared among all the different organizations and systems in a company.
Almost all of these EDM projects failed, and today, there are usually as many different database schemas out there as there are databases in an enterprise. There are a variety of different reasons for the failure of these EDM projects, including political turf wars between different departments, conflicting interests between the different stakeholders ranging from business representatives over application specialists to DBMS administrators, the sheer technical complexity of the undertaking, and the fact that due to the dynamics and complexity of modern enterprises, it is usually impossible to capture a snapshot of the complete state of the enterprise at a given point in time.
In the s, we saw the next attempt to homogenize the enterprise application landscape, this time through enterprise-wide middleware standards.
The concept of the Enterprise Software Bus became popular. The idea was that by agreeing on a ubiquitous, technology-independent, enterprise-wide standard for communication between software modules, the problem of application integration would be solved once and for all. However, the reality in almost all enterprises today is that in addition to application heterogeneity, we now face the problem of middleware heterogeneity as well.
In many cases, middleware such as CORBA was only used to solve point-to-point integration problems on a per-project basis, instead of being established as a global software bus; as a result, many enterprises now have nearly as many incompatible middleware systems as they have applications.
In general, it seems fair to say that enterprise standardization efforts in IT have failed to deliver on their promise of homogenization and easy application integration. As a reader of a book on Service-Oriented Architectures, you might now be asking yourself, "So what is different this time? How are SOAP and WSDLwhile maybe technically superior and more flexiblegoing to address the organizational challenges of global standards that made the Enterprise Data Model, the Enterprise Software Bus, and many other enterprise standardization efforts fail to a large extent?
This book takes the position that SOA is neither a technology nor a technology standard, but instead it represents a technology-independent, high-level concept that provides architectural blueprints, such as the ones outlined in the first part of this book. These architectural blueprints are focusing on the slicing, dicing, and composition of the enterprise application layer in a way that the components that are created and exposed as services in the SOA are not only technically independent but also have a direct relationship to business functionality.
They enable the structuring of application components on the local level while also catering for global integration of these components.
Therefore, an SOA does not impose adherence to technical standards on the global level and is not based on strict norms and specifications see Figure Organizational Aspects When talking about enterprise IT, it is important to realize that manyif not mostof the problems associated with it are not of a technical nature but can be found on the organizational level instead.
Quite naturally, we have already implicitly touched on many of these organizational aspects in our discussion so far for example, when discussing the reasons for the failure of enterprise standards such as the Enterprise Data Model or the Enterprise Software Bus, which largely resulted from problems on the organizational and not the technical level.
The IT organization and the way projects are managed in a large enterprise are again very different from what one would find, for example, in a company that produced embedded systems or games. First and foremost, it is important to realize that most likely in no other part of the software industry will we find a development and maintenance process that is so closely aligned with the end customer.
If an enterprise is developing a new financial reporting system, it will have to be done hand-in-hand with the finance department and any other stakeholders of the financial reporting system, possibly up to the CEO. A software team that is developing embedded control software for a dishwasher is unlikely to have daily meetings with a housewife about the exact functionality of the software.
An important consequence is that we are dealing with a much more complex and more ambiguously defined decision-making process, which is driven more often by business strategy and political agendas than by technical arguments. The organizational environment we are dealing with is extremely heterogeneous, and many different opinions will have to be incorporated into any decision that is made, be it a decision about budgets, functional requirements, project priorities, or the interesting question of what actually defines the success of an IT project.
For all these reasons, it is vital that our enterprise IT renovation roadmap provides not only a technical roadmap but also an organizational roadmap, which outlines how the technical architecture is to be established on the enterprise level from the political and organizational point of view. The second part of this book provides an overview of this organizational roadmap. Lifelong Learning Enterprise software has always suffered from the mismatch between technical and business-related concepts and the different languages spoken by the people on both sides of the fence.
As a result, we have not only faced inefficiencies, but we also have often lost important knowledge and consequently had to reinvent many solutions. Many attempts have been made in the past to find a common denominator between business and technical concepts.
For example, SQL was invented in the s with the vision that it would give non-technical business analysts a tool to access, analyze, and manipulate business data directly. Today, SQL is largely seen as a tool for technical experts, and it has turned out that most of the entities found in relational databases are too fine-grained and closely intertwined with technical concepts to have a meaning on the business level. It is a key goal of an SOA to provide services that have a concrete meaning on the business level.
Because of this one-to-one mapping between business and technology entities, SOA provides a unique chance for the first time in IT history to create artifacts that have an enduring value for both the business as well as the technology side. SOA provides a chance to make things that have been learned the hard way usable for the organization in the long run. Similarly to human beings, organizations will never be able to stop learning if they want to be successful for long. SOA provides an excellent platform for this lifelong learning on the organizational level because an SOA enables us to constantly compare the nominal and the actual and to react accordingly to fill the gaps or adapt the architecture to reflect changes in business strategy.