Hello and welcome to another blog series. Unlike the usual posts which are about Apache Camel (and related) development, this post will look at first impressions of IBM App Connect Enterprise v11.
If you are interested in trying it out for yourself you can get hold of the developer edition and test it for free. The link can be found here: https://www-01.ibm.com/marketing/iwm/iwm/web/pick.do?source=swg-wmbfd
IBM App Connect Enterprise v11 is the successor to IBM Integration Bus 10 which was released back in 2015. IIB 10 has been a stable evolution of the product series since version 8 and 9 and has little by little added new functionality to the product. IBM usually releases a new version every 2 – 3 years so in 2018 they have now release IBM ACE 11 which is a combination of two existing products IBM IIB 10 and IBM App Connect.
I have spent a few days playing with it and getting a feel so let’s go through it a bit more.
Installation is as simple as IIB 10. Just download and run the installer and you are good to go. You can install it on the same machine as IIB 10. After installation you get a new toolkit and a console. There is however no Integration node available. We’ll look into this in the next sections.
As far as installation goes, it is really easy, quick and painless (way easier compared to some of its competitors).
This has in my view been one of the weaker aspects of the platform. It is still dependent on Eclipse and hardly anything new has been added tooling wise. You are still dealing with Apps, Libraries and bar files. Anyone coming from IIB 10 will instantly recognize themselves.
In my view, there is one big part still missing from the tooling and that is a powerful test framework, similar to JUNIT in the java world. It is a shame they haven’t added this. If anyone wants to vote for my RFE to add this please go here: http://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=119156
I would have liked it if they somehow had allowed developers to use other IDEs as well such as Intellij.
Like I said it looks extremely similar in terms of layout, nodes and components to IIB 10. Some extra nodes exist that are related to App Connect and Watson but I doubt the majority of users will benefit from them.
You basically develop similar to before:
- Create an App.
- Build your flows.
- Build your bar file.
Essentially IIB 10 or ACE 11 lacks in one fundamental way and that is, as a developer I cannot write integration like others develop applications. I cannot write my tests first, run them, see them fail, then add code, then run the tests again and watch them go green. This style of working is something I really hope IBM looks at and adds support for.
I will discuss the policy editor in another section.
Deployment strategy and docker support
Better late than sorry as they say. Well docker has been around for a few years now and it has almost become a defacto standard in application build&deploy pipelines. IBM decided to join the party so now they have added support for the runtime environment and added a new payment model. I have no idea yet what this means but they are talking about some sort of a ”pay-as-you-go” model. Maybe they will charge per message, cpu usage or some other metric, but it is at least an improvement to their current PVU/VPC model which has sucked for a long time.
The biggest change by far in IBM ACE 11 is the absence of an Integration node. This means there is no definite Integration Server either. With this approach IBM wanted to add support for those wanted to move away from an ESB topology to a more distributed and ”lightweight” model.
In a sense, what this means is that you can do create an Integration Server on any server you like, connect to it, and deploy your integration there. You can have an integration server installed on an on-prem server, in a cloud server or bundled in a docker container and run anywhere you like.
You can have choose to have 1 integration server per App or 1 integration server with many Apps. That is up to you. Indirectly IBM is basically saying, ok we still support on-prem but please note that we are making changes to move towards containers and cloud. I wouldn’t be suprised if most of the coming fix packs focused on additional docker support.
Is it all good? Well, it is good that they have added additional docker support. What is not good is:
- Why do I even need to create an integration server if I truly want to work lightweight? In an ideal scenario the ”bar file” would contain not only my code but my runtime as well. In fact, going even further, the bar file would help to generate a docker file and allow me to create a docker image based on that. Now, that would have been revolutionary for IBM (this already exist in the Spring boot/Camel/Maven world) and would have made my life as a developer much easier. Instead I still need to care about Integration Servers. They have taken a positive step forward, I just wished they had gone all the way and added support for the bar file containing its own runtime as well.
- Why can’t I deploy bar files via mqsibar when the Integration Server is running? Well you can but the Server won’t detect the changes until you restart it which is just stupid. Why would I want to restart the server in production? By the way, mqsibar is the new command to install bar files to a new Integration Server. You can off course deploy via the toolkit or the webadmin. I understand what IBM is saying, yeah you can create a new docker container with the new App and replace the existing one. But for those who still run ACE like they did IIB this functionality doesn’t give any benefit. mqsibar would have been great if it could deploy bar files whilst the Server is running so that it would detect changes on the fly. Instead it requires a restart!! I mean Apache Karaf had support for this years ago.
My biggest complaint by far is the new Policy editor which is supposed to replace what was before configurable services.
Now, to configure a new Integration Server you change properties in the server’s server.conf.yaml file. You write yaml and you configure the Integration Server. Now, that is easy and simple. Now, why did they introduce a new artefact that we need to maintain and take care of? We now need to write a policy, and associate that policy to a message flow/node?? Couldn’t IBM just used YAML files all the way?? Not only that, but if I update my policy and want to deploy it, I can just overwrite the existing one. I have to delete the policy and all the flows that depend on it, then deploy the new policy and redeploy the apps. I hope really hope they change in upcoming fix packs. Just write your yaml files and please add support for live updates. Nobody wants to delete or remove stuff.
Is it worth it?
If you are on IIB 10, then no not really. At least not now. Wait a year or so until a couple of fix packs have arrived and see what new functionality they add. I don’t see anything in ACE 11 that is revoltionary or that hasn’t existed in competitors products. I would have hoped IBM would have taken a big step forward. Instead it took a few small steps to catch up but it is still not there.