Goals of the Payara Platform
Four years ago when I made the first pull request into the Payara repository the team had a number of goals in creating Payara Server. The first was to build a robust, reliable and supported open source application server that could be deployed into production environments and the second was to evolve the Payara Platform to enable Java EE developers to embrace new architectural models and new deployment infrastructure like cloud, IOT and containers. We have achieved many of these goals and driven forward others, and they are still our primary focus as we look towards Payara Platform 6.
In my recent roadmap blog and webinar I indicated some of the priorities we have for Payara Platform 6. This blog will expand on those priorities and outline a general statement of direction.
Payara Platform 6 Release Cadence
We have sketched out a February 2021 release date of Payara Platform 6 and the team is aiming for a 3-year major release cadence for the platform. We feel this release cadence, combined with our 10 year support lifecycle, meets the competing demands between stability and velocity of adopting new technologies.
The Majestic Monolith
There is much talk, tweets, blogs and general chatter about microservices - much of which is created by our own team. However, we realise that the majority of applications developed using Java EE (and in the future, Jakarta EE) don't need the scalability and complexity of an extreme, distributed microservices architecture. Many developers are building specialised line of business applications targeting 10s to 1000s of users and will never be Internet scale. For these applications, the traditional 2 to 4 node cluster with a Domain Administration Server is the best deployment architecture and always will be. We are committed to enhancing the experience of using Payara Server in a traditional domain deployment to develop and support these applications. At the same time, we will ensure that support for this deployment model on IAAS public cloud; container infrastructure like Kubernetes and standard on-premise infrastructure, is best in class. We will look to simplify deployment of and installation of the domain in complex hybrid infrastructure, and support concepts of auto-scaling and elasticity for domain instances to utilise the elastic capabilities of clouds and containers. As always we will look to provide backwards compatibility for applications using older APIs and for applications migrating from older competitor application servers.
The Opportunities in a Managed Runtime
Many commentators speak of the 'death of the application server' and the 'rise of frameworks and server less computing'. We at Payara believe passionately in the opportunities offered by a managed runtime for Enterprise Java applications. Having a managed runtime for applications, like Payara Server and Payara Micro, enables developers to concentrate on business logic building thin wars for deployment on our platform. By enabling the Payara team to optimise the non-functional requirements, like performance and scalability while also adapting the runtime for new target infrastructure, the developer does not have to spend time cobbling together a runtime from many disparate pieces and maintain and manage the updates to these framework components in a fat jar.
In addition, having an integrated runtime that supports industry standard APIs enables our engineers to focus on giving developers and operators additional functionality. We are focused on delivering deep integration between the APIs that make up the standards. Deploying to the Payara Platform gives us the ability to deliver deep diagnostics and instrumentation into the workings of the application and provide visibility of this to developers and operators. With a managed runtime we can deliver performance metrics on response times and usage of endpoints. We can provide deep tracing as requests flow through the various APIs and identify bottlenecks and latency. We can build on the latest JVM monitoring tools to deliver further insight into the JVM performance. We can provide self-tuning for thread pools, connection pools, and even the number of runtime instances in a domain or group of Payara Micros hosting a service. Finally, we can deliver this through graphical consoles to provide insight for developers and operators. This is one of our key drivers for Payara Platform 6.
Innovation in Extreme Distributed Architectures
As well as driving forward state of the art in deploying standard monolith applications we are also looking to enable Jakarta EE developers to adopt microservice architectures. Towards Payara Platform 6, we will be stripping down both Payara Micro and Payara Server to the core Kernel based on HK2. We will be building and compiling this against the latest JDKs using the newest JDK capabilities. The goal is to strip each service down, optimise it for the latest JDKs, remove duplicate services, rationalise the interdependencies to build the leanest, meanest, modular kernel. We will then layer on top each managed runtime service, continually testing to optimise start up time, request performance, memory footprint and modularity to serve as the base foundation of both Payara Server and Payara Micro. Payara Micro will focus on deep integration with containerized infrastructure and will closely follow the evolution of Kubernetes and the development of Service Meshes as well as deepening integration with the big vendor clouds like Amazon AWS and Microsoft Azure.
Support for Standards
For Payara Platform 6, we will continue to follow the evolution of both Jakarta EE and MicroProfile, bringing new APIs and capabilities into both Payara Server and Payara Micro. The Payara team are deeply involved in both initiatives and will continue to drive these initiatives forward to deliver the APIs that developers need for the future. The combination of new innovative APIs, used to deliver new business applications, and a high performance, self managing runtime we believe delivers the best value for developers. Java EE and Jakarta EE inherently separate the creation of the application artefact in the form of a thin war from the deployment of that application onto the runtime infrastructure. Payara Platform 6 will focus on delivering a self tuning, self scaling runtime platform that can deliver a "serverless" like deployment experience to developers on cloud and on premise.
We have already started on our journey to Payara Platform 6. Many of the new capabilities, optimisations and features will be delivered incrementally as part of Payara Platform 5. As always, we are open to feedback on our directions from our customers and the community.