The traditional way of building web and mobile applications was to create them monolithic in nature, where the application was packaged and deployed as a single unit and ran on a single instance of an application server (or many copies of that application ran in many instances of app servers for scalability reasons). These monolithic applications face challenges when they need to be changed i.e. for a single change the entire application needs to be rebuilt and redeployed, which becomes very complicated with large development teams and fast changing applications. Secondly, it is cumbersome to scale monolithic applications to handle workload variability i.e. increase in demand for a single feature of the application requires scaling the entire application. There are other limitations of monolithic applications described in various books, redbooks and articles on the web (to be fair there are some advantages too, so it isn’t all bad).
The new approach of building web and mobile application is using a microservices architecture, where each feature or capability of the application is built and deployed as a microservice without any dependency on another service. Each microservice can run in a separate application server instance making it easy to change and scale the microservice. When a change is needed in one of the services, only that service needs to be rebuilt and is easy to scale the microservice to handle workload variability. The figure below provides the benefits of building applications using a microservices architecture over monolithic applications.
Applications built using a microservices architecture have requirements which include, the need to be built quickly in an agile fashion, perform well and managed easily. To satisfy these requirements, these microservices need to be built using the tools that optimize developer productivity and run on application servers that perform well and provide easy and comprehensive management capabilities.
IBM WebSphere Liberty profile is a very lightweight, highly composable, easy to use Java EE 7 certified application server ideal for building, running and managing microservices. It provides a wide variety of capabilities in the form of composable features that can be added to the server dynamically as needed. WebSphere Liberty profile is free for development and can be free for small scale production. Eclipse based WebSphere Developer Toolkit has a plug-in to use WebSphere Liberty profile as a test server for development.
We took three popular application features, namely OpenID Connect, REST APIs and, Realtime Communications (Rtcomm) and conducted a one-on-one comparison with open source Tomcat and Wildfly servers in building, running and managing the microservices for an online banking application.
The online banking application depicted in the chart below uses the OpenID Connect service built using the WebSphere Liberty OpenID Connect feature to authenticate and authorize the bank customers. The application uses the Customer Account service built using WebSphere Liberty REST API feature to access the account information and process account transactions. The application uses the Video Chat service built using the Liberty Rtcomm feature for the bank customer to have a video chat with a bank representative. Finally, these services are managed by Liberty Administrative Server. Each of these services run in an independent Liberty server making it easy to scale to handle workload variability.
The results of this comparison revealed the following:
- Implementing OpenID Connect Provider and Relying Party was much faster using Liberty server over Tomcat and WildFly. The details of this study can be found at this blog post.
- Developing REST APIs in Liberty profile was easier over Tomcat and WildFly. The details of this study can be found at this blog post.
- Implementing a Video Chat micorservice using the Rtcomm feature was 4.6 times faster in Liberty over Do It Yourself. Liberty Rtcomm is superior to Tomcat/WildFly/DIY in terms of developer productivity (based on Angular components), documentation, web site, instructions, example code provided and supplementary features (again the Angular components). The details of this study can be found at this blog post.
- Liberty provides very comprehensive and powerful management capabilities compared to Tomcat and WildFly. The details of this study can be found at this blog post.
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!