Increasingly, users of App Connect Enterprise software are wanting to embrace container technologies in order to derive benefits of scaling, agility, operational consistency and component portability. Since the re-architecture of the product in ACEv11 a large part of our longer term strategy has been to make the product more "container native" in the way that it operates. This has led to many of our users exploring new deployment models such as running independent integration servers, which are not owned by an integration node, inside containers which are orchestrated using a Kubernetes environment such as OpenShift.
As deployments become more granular and lightweight, generally the industry is shifting away from the Enterprise Service Bus design pattern, and fewer message flows are being deployed in each integration server container. The integration server's huge array of integration capabilities built up over two decades of development investment still make it a very natural choice for these newer styles of workload, but with this backdrop, it has become important for us to decrease the time it takes to start an independent integration server in a container. This runs alongside the aim to reduce the CPU requirements of the integration server, in particular at the time of server start up.
To achieve these aims, ACE 12.0.4.0 introduces a new capability to optimize an integration server. This modification release of the product introduces:
- A new command ibmint optimize server
- A new yaml configuration file (named server.components.yaml) interface for selectively “switching off” particular capabilities based on requirements of what has been deployed.
This server optimization feature works for independent integration servers with fixed configuration running in a container. For a given container based integration server process, you can examine the contents of the working directory and generate a server.components.yaml file. This enables you to start the integration server quicker and use less CPU.
Server optimization is suitable when the server content is fixed and it is desireable to reduce the startup time of the process to be as short as possible based upon the server's current settings and content. Before running the new command, you should ensure:
Optimization analyses the content of a server's work directory and determines which parts of an integration server are needed at startup. To optimize a server you can open a command console and issue the command as shown below:
The optimization process generates a configuration file named
server.components.yaml
(not to be confused with
server.conf.yaml
!) which is written to the root of the server's working directory. For example, the file will look a bit like this:
You can now start an integration server, and all components labelled as false in the yaml file will be disabled. In the above example, most of the capabilitiies have been switched off, but nodeJS (which is used to support the administrative REST API) has been left enabled. If you no longer want the server to be optimized, then you can simply delete the
server.components.yaml
file from the work directory. The server then starts up exactly as it did before you optimized it. Unlike the
server.conf.yaml
file, the
server.components.yaml
file does not support a copy in the
overrides directory.
For more information on this feature check out the documentation for
optimizing the startup time for an independent integration server and the
ibmint optimize server command