Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

This is a presentation of the proposed adoption of an Enterprise-wide Service Oriented Architecture (SOA) for the GLAST experiment's data processing requirements. This project is composd of two parts, the GRITS Framework and the GRITS Projects that are built upon the framework. This presentation is primarily concerned with the GRITS Framework, which is a lightweight Java based distributed architecture which uses some, but not all, of the technologies from the J2EE specification.

...

The GRITS Framework is the infrastructure upon which GRITS Projects are intended to be devloped. The GRITS Framework was born out of a detailed deconstruction of the current, and proposed, GRITS Projects by members of the GLAST Core Team in early 2004. This deconstruction and subsequent analysis identified many common services shared by all GRITS Projects, and an SOA approach to deliver these sercies was unanamously agreed upon.

...

The primary goal of the GRITS Framework is to provide the software architecture and infrastructure for the GLAST Core Team to accomplish its mission. Specific goals include:

  1. Provide a common framework to develop the GRITS Projects and their associated set of common services
  2. Provide a distributed, cross-platform SOA for GLAST Projects that is simple to develop with and simple to use

...

  1. Promote team oriented development (as opposed to individual contributors)
  2. Maximize disparate talents of a small group
      • Programmers
      • Web Developers
    • Occasionally-connected programmer/manager/astronomer
  3. Utilize talents of JAS group

...

There are three sets of expected users of the GLAST Framework and GLAST Projects and their timelines.

User

Description

Time Scale

Core team

Develop and maintain GLAST data processing projects

now

GLAST collaborators

Use the GLAST data processing projects to accomplish the GLAST mission

some now, all by July 2005

Astronomy community at large

Consumers of GLAST data products

post-launch (2007)

...

Anchor
requirements
requirements
GRITS Framework project Requirements

Many of the GRITS Projects must run 24x7, and all of them will have a service life of 10+ years. Additionally, the software will operate within the SLAC computing infrastructure. Therefore, to meet these constraints and achieve the stated goals, we list the following requirements for the GRITS Framework as a whole and the technologies used in its implementation:

  1. Provide high availability
  2. Provide for scaleability
  3. Provide for maintainability
  4. Are lightweight in nature
  5. Enjoy wide adoption in the Enterprise Software community
  6. Easily testable
  7. Run on both Windows and Linux
  8. Conform to SLAC and DOE security policy
  9. Leverage existing SLAC infrastructure

The schedule for delivery of the GLAST Projects varies for each project. For example, the pipeline is required now. Also, some of the projects have perl implementations that may or may not be migrated to the GRITS Framework. Version 1 of all projects must be completed by July 2005. The GLAST experiment has a current launch date of July 2007.

Anchor
technologies
technologies
Technology Choices

In order to accomplish the project's goals and meet the project's requirements, we initially researched several complete full-blown Application Servers (specifically J2EE and .NET), as well as a Perl + CGI solution. For the purpose of this discussion, all of these solutions are considered a container according to the following definition:

Definition: A container is a framework in which application code runs.

The .NET Framework (but not the entire concept of a .NET Application Server) was rejected becuase it was not cross platform, but we did adopt Windows Server 2003 and IIS 6 (both parts of a .NET Application Server) for the Windows deployment endpoints as meeting all of our requiremetns.

A Perl + CGI solution was rejected since it violoated many of our requirements (specifically the scaleability, maintainability, security and easily testable requirements), and was considered too complex to utilize all of our group's talents. However, Perl is (and will continue to be) an important system maintainence tool for GLAST.

While a complete J2EE Application Server fullfilled the technological requirements (particularly the integrated out-of-the-box persistence and remoting EJB capabilities), in practice the effort involved to develop using EJB proved to be too complex and violated our easily testable requirement.

In short, we took an A la Carte approach, choosing only those technologies we actually needed that fullfilled our requirements, and adopting an emerging post-EJB consensus favoring a lightweight container to provide only those J2EE Enterprise Services we required.

For the GLAST Framework, a lightweight container had to provide the following services:

Service

Description

All Containers

Lightweight Containers

Lifecycle management

Control lifecycle of application objects running within it (for example, clean initialization, startup and shutdown).

(tick)

 

Lookup

Obtain references to managed objects; create objects/services on demand.

(tick)

 

Configuration

Externalize configuration from code into simple configuration files.

(tick)

 

Dependency resolution

Manage relationships among managed objects (for example, configuring beans by calling setters, or automatically calling constructors with managed beans).

(tick)

 

Transaction management

Externalize transaction management from code into configuration files (declarative transactions).

(tick)

 

Object pooling

The obvious example are database connections.

(tick)

 

Expose remote services

Not just SOAP based web services; there are other, simpler wire protocols.

(tick)

 

Consume remote services

Provide transparent access to remote objects running outside the container.

(tick)

 

Non-invasive

Run existing legacy code as-is in the container. Code should run the same both inside and outside the container.

(tick)

(tick)

Quick start-up

 

(tick)

(tick)

No special deployment requirements

Developers should be able to write pure Java code without knowing anything about the container

(tick)

(tick)

Run in variety of environments

Have a small footprint and minimal API to allow use in everything from standalone desktop applications, to web-only containers (like Tomcat), to full-blown J2EE Application Servers.

(tick)

(tick)

Provide crosscutting customization and extensibility

For example, inject security checks, logging, or profiling into objects without them being aware.

(tick)

In order to accomplish the stated goals, we rejected most of the EJB parts of J2EE and with it the heavy, complex and expensive J2EE Application Servers. Instead, we follow the emerging post-EJB consensus and adopted a lightweight container that provides the best parts of J2EE Enterprise Services:

share a common set of services, which are listed in the following table.

Requirement

GINO

RM

Installer

TC

System Tests

Data Access

Web configuration/editing

(tick)

 

 

 

(tick)

 

Web reports

(tick)

(tick)

(tick)

(tick)

(tick)

(tick)

Single Sign-On

(tick)

(tick)

(tick)

(tick)

(tick)

(tick)

Persistence (CRUD)

(tick)

 

 

 

(tick)

 

Reports (DB Queries)

(tick)

(tick)

(tick)

(tick)

(tick)

(tick)

Batch Submission

(tick)

(tick)

 

 

(tick)

 

Scheduler

(tick)

(tick)

 

(tick)

(tick)

 

Event Notification

(tick)

(tick)

 

(tick)

(tick)

 

Automated email

(tick)

(tick)

 

 

 

(tick)

Anchor
technologies
technologies
GRITS Framework Technologies

...

  1. The Spring Framework, which is the cornerstone of the GRITS Framework, provides those parts of the J2EE specification that we rejected as either too complicated, too expensive, or otherwise not addressing the project's requirements. Specifically, Spring provides:
    • Hibernate, a thin wrapper over JDBC which provides the full power of transparent persistence by providing O/R mapping but not trying to hide the underlying relational database.
    • Web servers (IIS on Windows and Apache on Linux) for security-conscious service deployment.
    • ColdFusion MX for web front-end development.
    • Several Jakarta components, primarily Tomcat for service deployment and many of the jakarta commons for

...