MicroProfile-Powered Application Servers
MicroProfile was invented to provide specifications for building microservices that are the right size for scalable environments, such as clouds. It includes specifications for exposing health checks, metrics, and telemetry data as well as specifications that handle configuration and inter-service communications. Several standalone MicroProfile implementations are available. However, because MicroProfile is basically a set of specifications, it doesn’t enforce a specific approach for implementation. This opens up possibilities for other kinds of implementations.
One possibility is to implement MicroProfile specifications in a traditional application server, along with the Jakarta EE specifications it already contains. Like MicroProfile, Jakarta EE is a set of specifications that can be implemented in the same application server as other specifications. Although MicroProfile and Jakarta EE are separate frameworks, they function as one entity when implemented in the same application server.
Adding MicroProfile specifications allows the application server to run as a microservice in a cloud. Traditionally, Jakarta EE has not provided specifications for these features. When MicroProfile is available in the same running instance of the application server, these metrics are provided by endpoints exposed by MicroProfile. Load balancers, orchestrators, and monitoring tools need this kind of data from the running application server instances to determine whether scaling up or down is required.
In my daily job as a developer, I work with application servers such as Payara. Payara is just one of several application servers that currently implement MicroProfile specifications. When a project to adopt Docker and deploy it in a containerized environment began, we started adopting MicroProfile specifications to create a microservices architecture. The architecture is evolving gradually as the specifications mature with every release of MicroProfile that’s added to the application server.