Application integration poses its own special difficulties, some technical and some organizational.
Because application integration is a relatively new area of IT for most organizations, often no single product resolves all application integration issues. Instead, an application integration environment usually consists of a series of technologies, including prepackaged and custom software applications.
When you build an application integration environment, you are creating an environment that allows components to communicate with each other even though they were never designed to do so. In many cases, these components are not even aware of each other. They may include a variety of preexisting systems (some of which are essential to your environment), packaged applications with proprietary APIs, geographically disbursed databases, and a variety of hardware, operating systems, and protocols. Yet your environment needs to be noninvasive to existing applications. In these conditions, complex architectural issues such as the following can arise:
Control and coupling
Data exchange and data formats
Distribution and concurrency
Scalability, reliability, and availability
Some of the most significant technical challenges of designing an application integration environment involve identifying the technical needs for your solution and determining the combination of products and services that will provide for those needs. Because this segment of the market is still evolving rapidly, you should pay particular attention to the maturity of integration technologies, methodologies, and standards. You do not want to completely rebuild the application integration environment itself every few months. The aim, instead, is to have a relatively stable application integration environment, which is flexible enough to allow the addition of new applications or the alteration of relationships between applications.
Organizational issues in application integration arise mainly from the fact that your application integration environment will span multiple departments in your organization. Staff in different departments may choose to deploy applications that will then need to integrate with the rest of your environment. To design a truly effective application integration environment, you need to isolate application integration as a separate management function, and determine who is responsible for making it happen. In larger organizations, you may have a group of people specifically responsible for this function, including application integration architects, application architects, and application owners, whereas in other cases, application integration may be one of many management functions that you are responsible for. Either way, by defining the application integration management function in this way, you help to ensure that it is properly considered whenever changes are made to the IT infrastructure.
Establishing governance processes around application integration can be difficult, because the processes must encompass not only application integration, but also the end systems and business processes that are being integrated. In fact, during the deployment phase, you should be involved in defining the baseline infrastructure as well.
Organizational issues in application integration can be particularly tricky when you are working in a decentralized enterprise or in a business-to-business (B2B) scenario. However, these scenarios often have the greatest need for an effective application integration environment. Therefore, it is particularly important to resolve any organizational issues early on, so that you can focus on resolving the technical challenges of application integration.