Since a couple of years WSO2 offered the WSO2 Enterprise Service Bus (ESB) as the core component in the mediation / transformation part of your SOA landscape. The ESB has morphed into the Enterprise Integrator, a bundled product that comprises of not only the Enterprise Service Bus, but also includes the Data Services Server and some other products that were bundled with it, like the Business Process Server profile, the Message Broker profile and the Analytics profile.
If you want to be complete, we should also include the microservices framework for Java, a Spring boot-like equivalent to build microservices and even the Business Rules Server into the mix. And let’s not forget about the Integration Studio, the recently revamped IDE for the Enterprise Integrator.
Functionality of the Enterprise Integrator was not that different from the Enterprise Service Bus. Of course, the product bundling made it a more powerful engine, but it still runs the Synapse and Axis2 frameworks that have been the core of the Enterprise Service Bus since it was originally developed.
But the new WSO2 Enterprise Integrator 7.0.0 is different.
What’s in a name?
The new version of the Enterprise Integrator is again a bundling of products, but now in a markedly different way. There is no more Message Broker or Business Process Server profile packaged. Enterprise Integrator 7.0.0 is essentially three separate components, that are individually downloadable, and provide you a combination of new and familiar tools to do mediation and transformation, micro services development and processing of continuous data streams. All three are optimized for containerized target platforms.
The three separate Components are called:
- 1. Micro Integrator
- 2. Ballerina Integrator
- 3. Streaming Integrator
Let us take a closer look at the individual components.
Micro Integrator
The Micro Integrator is not new, we have seen this lightweight version of the Enterprise Integrator has been available since the release of WSO2 EI version 6.3.0. The Micro Integrator uses Synapse and Axis2 but lacks the well-known management console that we know from the full-blown Integrator.
This means that it’s a separate and different product from the old Enterprise Integrator (Integrator profile), since it’s not 100% compatible. For instance, services that use one of the admin services will not work, since they are not included in the product. In a way, this makes sense, at least as you adhere to the immutable container logic. In other words, you’re not supposed to manage a running container, but instead implement your changes in a new version of the container image. Apart from these administrative differences, in terms of mediation and transformation, the product is still very much like the familiar and trusted Enterprise Integrator. It supports all the functionality that we know from EI, and we’ve had no trouble at all in running existing sequences on the new version. But do test all your artifacts before you move to the new platform.
The loss of the management console is partially compensated in a command line interface allowing you to monitor the synapse artifacts in the Micro Integrator instance. However, the possibility to Hot Deploy is no longer supported, because of the immutable containers. You’re simply supposed to start the Micro Integrator purposely with the deployed CAR file. Also note that the new model allows for smaller integration nodes, no longer running all integrations of the entire enterprise on a single ESB, but instead, allow for DevOps teams to run their own Micro Integrator instance. This will surely help organizations that adopt a DevOps way of working in improving their agility.
Ballerina integrator
The Ballerina Integrator is meant for developers who use decentralized integration architectures, microservices, and cloud-native apps; it can be used to create integration microservices using the code-first integration style. The integrations you compile will give you much smaller runtimes, starting quicker, and processing messages much faster. And since the Ballerina language is Turing complete, you are no longer constrained by using the integration patterns supported in the Integrator.
This is a significant change from the configuration based Micro Integrator.
Ballerina Integrator is based on the Ballerina programming language (ballerina.io), that was developed over the last couple of years in its own community led by WSO2. It’s based on the best aspects of other languages like Java, Go, Python, Swift, and so on. The focus of Ballerina is massively distributed (micro)services, and includes first-class, cloud-native functions as well as a graphical sequence diagram tool. It helps you to organize your systems as a collection of components interchanging messages. In fact, this is what the cloud-native computing model boils down to. It’s no coincidence that Ballerina is so well aligned with cloud native computing. And yes, it fully supports serverless computing too. As a matter of fact, it’s one of the few languages supported on AWS Lambda.
Ballerina works with libraries that can be included to offer specific functionality, including connection to cloud-based services and common integration patterns, including distributed transactions, compensation, and circuit breakers. It also supports the connectors and adaptors we all loved on the traditional Integrator. The Ballerina Central provides a rich and growing source of these.
In Ballerina, both JSON and XML are native data types, aka first-class citizens. Calling functions and services that return these data types was never so easy. To further help the distributed architecture, Ballerina assumes every call over the network may throw an error, simplifying to handle such errors. Ballerina comes with key language constructs, such as service endpoints, network-aware data types, connectors, and workers, which makes it simple and effective to build robust integrations across network endpoints.
For developers, working with Ballerina is going to be a change compared to the Micro Integrator. We are going to be writing code again, surfing the (integration) infrastructure as code wave, but also use powerful libraries not to reinvent the integration wheel.
Streaming integrator
Integration teams inevitably need to integrate events and streaming data, which often requires complex processing and event triggering — or worse, dealing with raw data. This type of data streaming isn’t new to WSO2. It’s the technology behind the Analytics engines used with the Enterprise Integrator, Identity Server and API Manager, as well as the throttling mechanism used in the API Manager. But the Streaming Integrator can also be used to capture more business-related data as opposed to the more technical data in the Analytics product. Is uses a powerful query language called Siddhi which allows to capture, analyze and output data.
It can process event streams that carry a large volume of data moving at high velocities, and data sources/targets can be different in terms of protocols, data formats, etc. With the Streaming Integrator you can easily query continuously over timeframes, sometimes called buckets. If you want to raise an alert if in each bucket of one minute over the last five minutes a certain device failed to phone home, the Streaming Integrator is your friend.
Streaming Integrator supports seamless integration with Micro Integrator and Ballerina Integrator, for instance to follow up on an event raised in the Streaming Integrator. It’s fully compatible with major streaming messaging systems such as Kafka and NATS, as you would expect. It can extract data from major databases and can even integrate data in cloud storage. And it happily runs in a container.
Summary
The new EI 7.0.0 is a collection of three products that enable you to integrate microservices in your IT landscape, regardless if they are traditional Synapse / AXiS2 based or on the new Ballerina platform. This allows API-centric integration teams to connect APIs, data, streams, SaaS, and legacy apps.
Micro Integrator and Ballerina Integrator address two different integration approaches (configuration-driven vs. code-driven) and an integration user can decide which approach is best. Lastly, it includes the Streaming Integrator for any integration use case that requires processing a stream of events.
Streaming Integrator (SI) is a lightweight stream processor that understands streaming SQL queries to capture, analyze, process, and act on events in real-time.
This has been a high-level overview of the product without the in-depth look at each individual component. We believe it’s positioned for the future where microservices and integrations based on traditional ESB functionality will coexist. That coexistence can be quite long if you invested heavily in SOA-style integration. Otherwise, there is little if anything that the Micro Integrator brings, which isn’t supported in the Ballerina Integrator as well (albeit somewhat experimental at this stage).
Enterprise Integrator (EI) 7.0.0 is a separate product that will co-exist with the EI 6.x.x product of which a new version (EI 6.6.0) is expected later this year. This is simply a continuation of the more monolithic EI for clients who currently use EI. Should you be interested in Integrator Analytics, then it is good to know that the Analytics profile in EI 6.5 can be used seamlessly in combination with the EI 7.0 Micro Integrator. EI 7.0.0 is quite different from the EI 6.x.x, but there is no urgent need to move to EI 7.0.0, since the existing products will be supported for the coming years. However, if you consider building your own cloud, or adopting a public cloud, to host your future operations, you will be happy with this new line of products. Even more so if you embrace a DevOps way of working.
As Yenlo, we’re always very excited to help bring the future to fruition. These innovations especially resonate with us, as they allow us to adopt a more productive way of working. A way that fits to an agile organization and empowers the digital transformation. Hence, we would be honored to travel along with you on your transformation journey. Just ask.