Understanding enterprise integration
Application and data integration is foundational to delivering new customer experiences and services. Commonly, one team manages a monolithic integration technology for an entire enterprise, but applications are becoming more complex—they are distributed, and must scale and change rapidly to keep pace in competitive markets. These new challenges require an iterative approach based on cloud-native integration technologies and agile teams.
Every modern business must share data. If you are a large business trying to take advantage of big data, you know that big data is an integration challenge. To do this, the applications and devices at the core of your business strategy must be accessible to each other—and, very likely, across multiple cloud environments. Enterprise integration encompasses the technologies, processes, and team structures that connect data, applications, and devices from everywhere in your IT organization.
Enterprise integration models have evolved over the years from those with a relatively small number of point-to-point connections, to a centralized model connected through an enterprise service bus (ESB), to a distributed architecture with many reusable endpoints.
What, as in, “what are you integrating?”
First and foremost, enterprise integration is a data challenge. So much data exists within organizations now that the term “big data” is often used to indicate the size—and also the variety—of data sources. A large volume of data existing in a variety of nonstandard formats can be of significant business value, but first it must be integrated from multiple sources or applications. The Internet of Things (IoT) also represents a new opportunity to connect with customers and analyze useful data through everyday devices, but you must filter out the critical data that needs to go to your datacenter. Web applications further add to the complexity of enterprise integration, especially when legacy applications must be integrated with a service-based architecture, like microservices.
How, as in, “how are you integrating your apps, devices, and data?”
In the past, a centralized enterprise service bus (ESB) managed by a centralized team could connect every endpoint in your environment. However, a centralized approach to teams and technologies can bottleneck modern systems, which need fast, easy avenues to integrate between distributed components. Depending on your data and service needs, a combination of messaging, application connectors, data streams, enterprise integration patterns, and application programming interfaces (APIs) that can be deployed faster and iteratively are more suited to modern application development.
Messaging is a way for different components in a distributed application architecture to communicate. Components can send and receive messages across different languages, compilers, and operating systems as long as each side of the communication understands the common messaging format and protocol.
A service mesh is used to route messages within a microservices architecture.
Application connectors are architectural elements that model the rules for how components interact. They are standard class connections customized for certain APIs, so they can be used to quickly integrate new endpoints.
Data streams provide a constant flow of information that applications can add to or consume from, independent of the transmission of that data. For instance, Apache Kafka is a distributed data streaming platform that can publish, subscribe to, store, and process streams of records in real time.
EIPs are collections of technology-independent solutions to common integration problems. Patterns also provide a common language for developers and application architects to describe integrations.
An API is a set of tools, definitions, and protocols for building application software. It lets your product or service communicate with other products and services without having to know how they’re implemented.
A cloud-native application is a collection of small, independent, and loosely coupled microservices, deployed in Linux containers, and connected through APIs or messaging. Each service implements a business capability, and is developed by small teams using DevOps workflows like continuous integration and continuous deployment (CI/CD). This allows services to be built quickly, deployed automatically, and updated regularly—no more waterfall development cycles.
Cloud-native applications are designed to deliver business value like the ability to rapidly incorporate user feedback for continuous improvement. In short, cloud-native app development is a way to speed up how you build new applications, optimize existing ones, and connect them all together.
Because cloud-native applications are distributed, they represent a unique integration challenge when compared to traditional, monolithic apps. Agile integration enables cloud-native development in part because it brings the application requirements and business needs of integration together.
Source : Integration