Red Hat Information Technology has created a new middleware architecture for our internally-developed applications. Although many of our internal applications take advantage of open source solutions, we have historically used tools such as Tomcat and Perl on a standalone basis and not taken full advantage of our JBoss application stack.

We’ve defined our new middleware architecture based on JBoss technology. This includes an Enterprise Service Bus implementing a Services Oriented Architecture (SOA); Seam, the JBoss integration framework; the JBoss Business Process Modeling suite (JBPM); and Drools, the JBoss rules processing environment.

The entire stack runs on Red Hat Enterprise Linux, taking advantage of the operating system tools for virtualization, provisioning, configuration, and other functionality. The full technical architecture incorporates Cobbler/Koan, JBoss SOA, Xen, LVM, Git, and more.

Architecture Framework

The new middleware architecture is defined as an element within the Zachman framework, in which we consider data, function, network, people, time and motivation mapped against scope, business model, system model, technology model, and detailed presentation. We are excited about the potential of the architecture because it gives us great flexibility while at the same time allowing us to implement projects in alignment with our desired future state. Ultimately, the architecture enables us to reduce complexity while enabling our business users.

Architecture Definition

The internal name for the new architecture is Everest. Among the key underlying elements are the use of the Logical Volume Manager (LVM) to support virtualized guest operating systems and Xen virtualization to assist in the management and deployment of multiple environments.

We use the JBoss Enterprise SOA Platform to provide loose coupling, a messaging infrastructure, process orchestration, protocol translation, adapters, change management, quality of service, quality of protection (encryption and security), and management services. JBoss Seam provides our application framework, unifying and integrating multiple web technologies while reducing complexity for our developers.

Git provide source code management under the new architecture. Git is a flexible, distributed, offline source management tool. It addresses some of the shortcomings of our previous solutions and provides support for parallel development, collaboration and the ability to maintain a consistent deployable branch of the source tree. Git use will result in a smaller, cleaner set of changes to our source code.

Although not strictly part of the run time architecture, Puppet is an important architectural component. Puppet is a configuration management tool that can be used to provide container and system configurations that can be deployed into production without modification. Puppet will also free our Release Engineering team from many manual steps and enable them to move to a review and release mode.

Of course, the entire environment runs on Red Hat Enterprise Linux. We anticipate that some of our developers will use Fedora as an alternative operating system for their development workstations.

Architecture Provisioning

One of the first challenges addressed by the architecture team was the need to provision systems which comply with the new architecture. The deployment implementation supports 20 machine types, ranging from a web-proxy to an ldap service.

The most common types include a host machine, a repo machine, and a JBoss development machine. The host machine type is used to host virtual guests in the Everest environment. It provides a suitable graphical user desktop, automated NFS home directories, a Kerberos login, Xen virtualization, and access to all of the Everest tools.

A repo machine is at the core of Everest. Repo machines are self-contained provisioning, configuration and artifact stores. Repo machines are capable of creating all other machine types, including other repo machines. Features of repo machines include Cobbler for RPM and provisioning, a Puppetmaster for configuration, an Artifactory Maven proxy, Git repos for content under /pub/git, and gitweb running on a known address.

A JBoss development machine is an aggregation of several machine types. (One of the features of the architecture is the ability to consolidate machine types for development and later disaggregate them for the production environment.) Features of the JBoss development machine include the ability to use it on base metal or in a virtual environment; nomachine for remote desktop access; the SUN JDK; an Apache proxy; JBoss Enterprise Application Platform (EAP); JBoss Enterprise Service Bus (ESB); MySQL for JBoss data stores; build tools including Eclipse, Git and Maven; gitweb on a known address; and a Git daemon to serve repos.

Provisioning with Cobbler and Koan

Cobbler is a provisioning and update server that supports deployments via network booting, virtualization, and reinstalls of existing systems. A significant advantage of Cobbler is that it integrates multiple technologies and reduces the need for the user to understand the details of each. The update features of Cobbler integrate yum mirroring and kickstart.

Koan, which is an acronym for “Kickstart over a Network”, is an emerging technology that configures machines from remote Cobbler servers. Koan also enables the use of virtualization and re-installs from a Cobbler server. When launched, it requests install information from the server and creates a virtual guest or replaces the machine it is running on.

We’ve used both these tools as the foundation for deployment of systems complying with the new architecture. In our tests, we can quickly build and deploy a complete development server with no intervention. The provisioning solution significantly reduces both our time to deliver a development solution and to deploy systems in the production environment.

If you’d like to know more about Cobbler and Koan, see the Red Hat Magazine article on Cobbler by Michael DeHaan and the relevant man pages.

Application

We are working with Red Hat engineering, select partners, and the community to share our provisioning vision broadly. Although some elements of the provisioning solution remain as advanced technology and are not guaranteed to become supported elements of Red Hat Enterprise Linux and the JBoss suite, we are confident that the benefits of the solution outweigh that slight risk. We also anticipate that our efforts in IT will facilitate moving the solutions into the mainstream.

More broadly, we are excited regarding the possibilities presented by the new architecture and the capability it gives us to execute our technical strategy. The ability to integrate best of breed applications solutions using a common stack, to project the resulting applications into web environments using common tools, and to take advantage of the scalability and recovery solutions inherent in JBoss will yield substantial benefits.