Key requirements of microservices are that they should be easy to manage, are highly available and can scale to handle workload variability. The fulfillment of this requirement largely depends on the runtime environment where these microservices are deployed. The runtime environment should provide easy to use and intuitive management capabilities to provision and configure the server environment to run these microservices. It also must be able to quickly and easily scale the microservices.
IBM WebSphere Liberty provides an ideal administration environment to manage the lifecycle of the servers running microservices as seen in the Liberty Admin Center in the figure below. One can use the Admin Center to create, deploy, configure, monitor, start, stop, and restart servers and applications.
The Admin Center can also manage the lifecycle of hosts, clusters and applications running in the Liberty environment as seen in the figure below.
Another aspect of lifecycle management is the ability to monitor health and performance of these components. Liberty Admin Center provides tools to monitor various attributes such as CPU usage, memory usage, and active JVM threads as seen in the figure below.
Liberty Server comes with robust intelligent operations features to support high availability, reliability and scaling of microservices to handle workload variability, making it an ideal server for a production environment. These features include: Auto-Scaling, Dynamic Routing and JVM Elasticity.
- The Auto Scaling feature scales out (starts) and scales in (stops) Liberty servers based on scaling policies defined for CPU, memory and JVM heap metrics.
- The Dynamic Routing feature enables routing of HTTP requests to members of Liberty collectives without having to regenerate the HTTP server plug-in configuration file when the environment changes.
- Using JVM Elasticity, the Liberty scaling controller can automatically install Liberty software onto a registered host and create a new Liberty server dynamically.
Tomcat does not have any of the high availability, reliability and scaling features and WildFly has only the Dynamic Routing capability.
Based on these capabilities I did a comparison of the administrative and management capabilities in Liberty Server to that of Tomcat and WildFly. Note that for this comparison I used the latest versions of Tomcat and WildFly available at the time. This comparison revealed that Tomcat and WildFly fell short in several of these areas as follows:
- In Liberty Server, all the management, administrative, high availability, and scaling capabilities can be configured by changing a single server.xml file. With Tomcat and Wildfy one needs to edit many different files. The figure below shows how cumbersome it can be for an administrator to understand and update all of these XML configuration files.
- Out of the box, Liberty Server provides more monitoring capabilities over Tomcat and WildFly as seen in the table below.
- Liberty Server has much better logging capabilities than Tomcat and WildFly as seen in the table below. And again, all logging can be enabled and disabled through the single server.xml file.
In summary, I found WebSphere Liberty to be easier to use and more intuitive than either Tomcat or WildFly. I also found Liberty to provide more management, high availability, and scaling capabilities than either Tomcat or WildFly.
You can download WebSphere Liberty profile and WebSphere Developer Toolkit from here. And remember – WebSphere is free for development and free for limited scale production!