The changes in Java EE development is forcing deployment topologies to progressively change from large and monolithic to small and loosely coupled. The pace of change varies by organization, and it should be expected that both types of deployments will exist side by side for years to come (bimodal development). Therefore, an application platform should be flexible enough to handle both types of deployment topology.
JBoss EAP is just such a flexible application platform. For traditional deployments, JBoss EAP is supported on dedicated servers or virtual machines. In recent years, cloud technology has rapidly gained popularity and is an environment where JBoss EAP is also supported.
However, when to start using cloud computing in the application lifecycle can vary. It is not unusual for developers to get started in cloud development with a life cycle beginning at the developer’s laptop where code is created and unit tested until it is ready to be checked into source code control to share with others. Developers can benefit from this pattern when an application platform like JBoss EAP, and a source control system like Git, work interactively with an IDE like JBoss Developer Studio.
However, the days of running all the code that an application might need on a locally executing application platform managed by a developer are dwindling. As adoption of services based architecture styles grow, the number of services—including microservices—an individual developer might interact with grows as well. It can quickly become unreasonable to expect each developer to independently and accurately build and manage the latest collection of microservices running on their laptop.
Can virtual machines help solve this problem providing pre-built images developers can load and run? Yes, but that approach is expensive in terms of resources like memory and CPU that are consumed by redundant definitions of the operating system and hardware. Fortunately, container technology has emerged as a way to run prepackaged software deployments with much less resource overhead than virtual machines.
Containers are in fact one of the key cloud computing technologies used extensively at Red Hat. Developers can run easily run individual or small collections of containers on a laptop. However, when large numbers of containers are needed, orchestration of them can quickly get out of hand. When this occurs, it may be better for developers to share access to cloud deployments of containers for consistency and simplicity.
More and more data centers are deploying cloud technology to host applications. But does the type of cloud technology deployed matter to Java application developers? It can be tempting to answer, no. The justification is that the details of how the cloud works is of no consequence to the application developer. However, this is analogous to a builder completely ignoring the need for a solid foundation to build a structure on. Red Hat believes it offers a better cloud foundation for developers than what the competition can provide.