Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Enterprise application integration
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Use of software for integration}} {{Other uses|Enterprise integration}} {{multiple issues| {{more citations needed|date=February 2020}} {{original research|date=February 2020}} }} '''Enterprise application integration''' ('''EAI''') is the use of [[software]] and computer systems' architectural principles to integrate a set of [[enterprise computer application]]s.<ref name="Enterprise Application Integration">{{Cite book|last=Linthicum|first=David S.|url=https://books.google.com/books?id=LIYadz3qEyEC&q=Enterprise+application+integration+what+is|title=Enterprise Application Integration|date=2000|publisher=Addison-Wesley Professional|isbn=978-0-201-61583-8|language=en}}</ref> == Overview == Enterprise application integration is an integration framework composed of a collection of technologies and services which form a [[Middleware (distributed applications)|middleware]] or "middleware framework" to enable integration of systems and applications across an enterprise.<ref name="Enterprise Application Integration"/> Many types of business software such as [[supply chain management]] applications, [[Enterprise resource planning|ERP]] systems, [[Customer relationship management|CRM]] applications for managing customers, [[business intelligence]] applications, [[payroll]], and [[human resources]] systems typically cannot communicate with one another in order to share data or business rules. For this reason, such applications are sometimes referred to as [[islands of automation]] or [[information silo]]s. This lack of communication leads to inefficiencies, wherein identical data are stored in multiple locations, or straightforward processes are unable to be automated.{{citation needed|date=February 2020}} Enterprise application integration is the process of linking such applications within a single organization together in order to simplify and automate business processes to the greatest extent possible, while at the same time avoiding having to make sweeping changes to the existing applications or data structures. Applications can be linked either at the back-end via [[API]]s or (seldom) the front-end ([[GUI]]).{{citation needed|date=February 2020}} In the words of research firm [[Gartner]]: "[EAI is] the unrestricted sharing of data and business processes among any connected application or data sources in the enterprise."<ref>In its April 2001 report for AIIM International, "Enterprise Applications: Adoption of E-Business and Document Technologies, 2000–2001: Worldwide Industry Study," Gartner defines EAI as "the unrestricted sharing of data and business processes among any connected applications and data sources in the enterprise."<br />{{cite journal |url=http://www.techstreet.com/direct/ExSum_EU.pdf |title=Enterprise application integration |journal=Information Management Journal |date=March–April 2002 |last=Gable |first=Julie |access-date=2008-01-22 }}</ref> The various systems that need to be linked together may reside on different [[operating system]]s, use different [[database]] solutions or [[computer language]]s, or different date and time formats, or could be [[legacy system]]s that are no longer supported by the vendor who originally created them. In some cases, such systems are dubbed "[[stovepipe system]]s" because they consist of components that have been jammed together in a way that makes it very hard to modify them in any way.{{citation needed|date=February 2020}} === Improving connectivity === If integration is applied without following a structured EAI approach, [[point-to-point connection]]s grow across an organization. Dependencies are added on an impromptu basis, resulting in a complex structure that is difficult to maintain. This is commonly referred to as spaghetti, an allusion to the programming equivalent of [[spaghetti code]]. For example, the number of connections needed to have fully meshed point-to-point connections, with {{mvar|n}} points, is given by <math>\tbinom n 2 = \tfrac{n(n-1)}{2}</math> (see [[binomial coefficient]]). Thus, for ten applications to be fully integrated point-to-point, <math>\tfrac{10\times9}{2} = 45</math> point-to-point connections are needed, following a [[quadratic growth]] pattern. However, the number of connections within organizations does not necessarily grow according to the square of the number of points. In general, the number of connections to any point is only limited by the number of other points in an organization, but can be significantly smaller in principle. EAI can also increase coupling between systems and therefore increase management overhead and costs.{{citation needed|date=February 2020}} EAI is not just about sharing data between applications but also focuses on sharing both business data and business processes. A [[middleware analyst]] attending to EAI will often look at the [[system of systems]].{{citation needed|date=February 2020}} === Purposes === EAI can be used for different purposes:{{citation needed|date=February 2020}} *[[Data integration]]: Ensures that information in multiple systems is kept consistent. This is also known as [[enterprise information integration]] (EII). *Vendor independence: Extracts business policies or rules from applications and implements them in the EAI system, so that even if one of the business applications is replaced with a different vendor's application, the business rules do not have to be re-implemented. *Common facade: An EAI system can front-end a cluster of applications, providing a single consistent access interface to these applications and shielding users from having to learn to use different software packages. === Patterns === This section describes common design patterns for implementing EAI, including integration, access and lifetime patterns. These are abstract patterns and can be implemented in many different ways. There are many other patterns commonly used in the industry, ranging from high-level abstract design patterns to highly specific implementation patterns.<ref name="Enterprise Integration Patterns">{{cite web | url=http://www.enterpriseintegrationpatterns.com/patterns/messaging/ | title=Messaging Patterns Overview | publisher=Enterpriseintergationpatterns.com and Addison-Wesley | date=2015 | access-date=2016-05-19 |author1=Hohpe, Gregor |author2=Woolf, Bobby }}</ref> ==== Integration patterns ==== EAI systems implement two patterns:<ref>MSquare Systems (2014-05-21). "Types of EAI". Archived on 2014-05-21 at https://web.archive.org/web/20140521124430/http://www.msquaresystems.com/enterprise-application-2/eai. ''[[MSquare Systems]]'' Retrieved on 2014-05-28 from http://www.msquaresystems.com/enterprise-application-2/eai.</ref> ;[[Data mediation|Mediation]] (intra-communication):Here, the EAI system acts as the go-between or broker between multiple applications. Whenever an interesting event occurs in an application (for instance, new information is created or a new transaction completed) an integration module in the EAI system is notified. The module then propagates the changes to other relevant applications. ;[[Federation (information technology)|Federation]] (inter-communication):In this case, the EAI system acts as the overarching facade across multiple applications. All event calls from the 'outside world' to any of the applications are front-ended by the EAI system. The EAI system is configured to expose only the relevant information and interfaces of the underlying applications to the outside world, and performs all interactions with the underlying applications on behalf of the requester. Both patterns are often used concurrently. The same EAI system could be keeping multiple applications in sync (mediation), while servicing requests from external users against these applications (federation).{{citation needed|date=February 2020}} ==== Access patterns ==== EAI supports both asynchronous (fire and forget) and synchronous access patterns, the former being typical in the mediation case and the latter in the federation case.{{Citation needed|reason=Reliable source needed for the whole section|date=May 2016}} ==== Lifetime patterns ==== An integration operation could be short-lived (e.g., keeping data in sync across two applications could be completed within a second) or long-lived (e.g., one of the steps could involve the EAI system interacting with a human [[work flow]] application for approval of a loan that takes hours or days to complete).{{Citation needed|reason=Reliable source needed for the whole section|date=May 2016}} === Topologies === There are two major topologies: [[Hub and spoke|hub-and-spoke]], and [[Enterprise service bus|bus]]. Each has its own advantages and disadvantages. In the hub-and-spoke model, the EAI system is at the center (the hub), and interacts with the applications via the spokes. In the bus model, the EAI system is the bus (or is implemented as a resident module in an already existing message bus or [[message-oriented middleware]]).{{citation needed|date=February 2020}} Most large enterprises use zoned networks to create a layered defense against network oriented threats. For example, an enterprise typically has a credit card processing (PCI-compliant) zone, a non-PCI zone, a data zone, a DMZ zone to proxy external user access, and an IWZ zone to proxy internal user access. Applications need to integrate across multiple zones. The '''Hub and spoke''' model would work better in this case.{{citation needed|date=February 2020}} === Technologies === Multiple technologies are used in implementing each of the components of the EAI system:{{citation needed|date=February 2020}} ;Bus/hub: This is usually implemented by enhancing standard middleware products ([[application server]], message bus) or implemented as a stand-alone program (i. e., does not use any middleware), acting as its own middleware. ;Application connectivity: The bus/hub connects to applications through a set of '''adapters''' (also referred to as '''connectors'''). These are programs that know how to interact with an underlying business application. The adapter performs one-way communication(unidirectional), performing requests from the hub against the application, and notifying the hub when an event of interest occurs in the application (a new record inserted, a transaction completed, etc.). Adapters can be specific to an application (e. g., built against the application vendor's client libraries) or specific to a class of applications (e. g., can interact with any application through a standard communication protocol, such as [[SOAP]], [[SMTP]] or [[Action Message Format]] (AMF)). The adapter could reside in the same process space as the bus/hub or execute in a remote location and interact with the hub/bus through industry-standard protocols such as message queues, web services, or even use a proprietary protocol. In the Java world, standards such as [[J2EE Connector Architecture|JCA]] allow adapters to be created in a vendor-neutral manner. ;[[File format|Data format]] and [[data transformation|transformation]]: To avoid every adapter having to convert data to/from every other application's formats, EAI systems usually stipulate an application-independent (or common) data format. The EAI system usually provides a data transformation service as well to help convert between application-specific and common formats. This is done in two steps: the adapter converts information from the application's format to the bus's common format. Then, semantic transformations are applied to this (converting zip codes to city names, splitting/merging objects from one application into objects in the other applications, and so on). ;Integration modules: An EAI system could be participating in multiple concurrent integration operations at any given time, each type of integration being processed by a different integration module. Integration modules subscribe to events of specific types and process notifications that they receive when these events occur. These modules could be implemented in different ways: on [[Java (programming language)|Java]]-based EAI systems, these could be [[web application]]s or [[Enterprise JavaBean|EJBs]] or even [[POJO]]s that conform to the EAI system's specifications. ;Support for [[Database transaction|transaction]]s: When used for process integration, the EAI system also provides transactional consistency across applications by executing all integration operations across all applications in a single overarching distributed transaction (using [[two-phase commit protocol]]s or [[compensating transaction]]s). === Communication architectures === Currently, there are many variations of thought on what constitutes the best infrastructure, component model, and standards structure for Enterprise Application Integration. There seems to be a consensus that four components are essential for a modern enterprise application integration architecture:{{citation needed|date=February 2020}} #A centralized broker that handles security, access, and communication. This can be accomplished through integration servers (like the [[Schools Interoperability Framework|School Interoperability Framework (SIF)]] Zone Integration Servers) or through similar software like the [[enterprise service bus]] (ESB) model that acts as a services manager. #An independent data model based on a standard data structure, also known as a [[Canonical Model|canonical data model]]. It appears that XML and the use of XML style sheets have become the ''[[de facto]]'' and in some cases ''[[de jure]]'' standard for this uniform business language. #A connector, or agent model where each vendor, application, or interface can build a single component that can speak natively to that application and communicate with the centralized broker. #A system model that defines the APIs, data flow and rules of engagement to the system such that components can be built to interface with it in a standardized way. Although other approaches like connecting at the database or user-interface level have been explored, they have not been found to scale or be able to adjust. Individual applications can publish messages to the centralized broker and subscribe to receive certain messages from that broker. Each application only requires one connection to the broker. This central control approach can be extremely [[scalable]] and [[Event-driven SOA|highly evolvable]].{{citation needed|date=February 2020}} Enterprise Application Integration is related to middleware technologies such as message-oriented middleware ([[message-oriented middleware|MOM]]), and data representation technologies such as [[XML]] or [[JSON]]. Other EAI technologies involve using [[web service]]s as part of [[service-oriented architecture]] as a means of integration. Enterprise Application Integration tends to be data centric. In the near future, it will come to include [[Enterprise Content Integration|content integration]] and [[business process]]es.{{citation needed|date=February 2020}} === Implementation pitfalls === In 2003 it was reported that 70% of all EAI projects fail. Most of these failures are not due to the software itself or technical difficulties, but due to management issues. Integration Consortium European Chairman Steve Craggs has outlined the seven main pitfalls undertaken by companies using EAI systems and explains solutions to these problems.<ref>{{cite web|title=Dancing Around EAI 'Bear Traps'|date=2003-12-15|first=Gian|last=Trotta|url=http://www.ebizq.net/topics/int_sbp/features/3463.html|access-date=2006-06-27}}</ref> #Constant change: The very nature of EAI is dynamic and requires dynamic project managers to manage their implementation. #Shortage of [[middleware analyst|EAI expert]]s: EAI requires knowledge of many issues and technical aspects. #Competing standards: Within the EAI field, the paradox is that EAI standards themselves are not universal. #EAI is a tool paradigm: EAI is not a tool, but rather a system and should be implemented as such. #Building interfaces is an art: Engineering the solution is not sufficient. Solutions need to be negotiated with user departments to reach a common consensus on the final outcome. A lack of consensus on interface designs leads to excessive effort to map between various systems' data requirements. #Loss of detail: Information that seemed unimportant at an earlier stage may become crucial later. #Accountability: Since so many departments have many conflicting requirements, there should be clear accountability for the system's final structure. Other potential problems may arise in these areas:{{citation needed|date=February 2020}} *Lack of centralized co-ordination of EAI work.<ref>{{cite web|title=Avoiding Pitfalls of Integration Competency Centers|date=2013-10-25|first=Antti|last=Toivanen|url=http://integrationwarstories.com/2013/10/25/avoiding-pitfalls-of-integration-competency-centers/|access-date=2013-10-26|archive-url=https://web.archive.org/web/20170730052826/https://integrationwarstories.com/2013/10/25/avoiding-pitfalls-of-integration-competency-centers/|archive-date=2017-07-30|url-status=dead}}</ref> *Emerging Requirements: EAI implementations should be extensible and modular to allow for future changes. *Protectionism: The applications whose data is being integrated often belong to different departments that have technical, cultural, and political reasons for not wanting to share their data with other departments === See also === *[[Enterprise architecture framework]] *[https://www.chakray.com/en/strategies-for-enterprise-application-integration/ Strategies for Enterprise Application Integration] *[[Business semantics management]] *[[Data integration]] *[[Enterprise information integration]] *[[Enterprise integration]] *[[Enterprise Integration Patterns]] *[[Enterprise service bus]] *[[Generalised Enterprise Reference Architecture and Methodology]] *[[Integration appliance]] *[[Integration competency center]] *[[Integration platform]] *[[System integration]] ==== Initiatives and organizations ==== *[[Health Level 7]] *[[Open Knowledge Initiative]] *[[OSS through Java]] *[[Schools Interoperability Framework]] (SIF) == References == {{Reflist}} 7. CloudLeap, Inc., [https://cloudleap.com/erp-integrated-shipping/ Enterprise Resource Planning] (ERP) Seamlessly integrate with any ERP Systems and technologies, streamlining parcel shipping process.{{Authority control}} [[Category:Enterprise application integration| ]] [[Category:Thought experiments]]<!-- [[Category:Articles with thought experiments?]] rather than about -->
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Multiple issues
(
edit
)
Template:Mvar
(
edit
)
Template:Other uses
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)