...
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 introduced, which includes a description of the project's goals, the players involved, current project status and the project's timeline.
- The GRITS Projects are briefly introduced, with an emphasis on their requirements and use-cases. It is these requirements and use-cases that drove the design and implementaiton of the GRITS Framework.
- The technologies used by the GRITS Framework are described in some detail.
- Development tools and methodologies used by the GRITS Framework are described in some detail, as they are the recommended approach for development of GRITS Projects.
Anchor | ||||
---|---|---|---|---|
|
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.
Anchor | ||||
---|---|---|---|---|
|
The GLAST Projects are intended to serve the data processing needs of the GLAST collaboration. The current and proposed set of projects, and the platforms they are required to run on, are shown in the following table:
Project | Linux | Windows |
---|---|---|
Processing Pipeline (GINO) |
| |
Release Manager | ||
Installer | ||
Tag Collector |
| |
System Tests | ||
Data Access |
Anchor | ||||
---|---|---|---|---|
|
The GRITS Projects 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 |
|
|
| |
| |
Web reports | ||||||
Single Sign-On | ||||||
Persistence (CRUD) |
|
|
|
| ||
Reports (DB Queries) | ||||||
Batch Submission |
|
|
| |||
Scheduler |
|
| ||||
Event Notification |
|
| ||||
Automated email |
|
|
|
The bulk of these services are provided out-of-the-box by the GRITS Framework technologies. Those that aren't are provided by the grits commons project.
A shared set of common services was one of the primary reasons for adopting an SOA.
Anchor | ||||
---|---|---|---|---|
|
Another important reason for adopting an SOA is to leverage and integrate existing back-end services. This set of legacy services and the platforms that need access to them are shown in the following table.
Legacy System | Linux | Windows |
---|---|---|
Oracle | ||
LSF | ||
NFS | ||
Windows File System |
| |
mstore |
| |
cvs | ||
gcc |
| |
cl.exe |
| |
cmt | ||
gleam.exe | ||
ROOT |
The GRITS Framework primarily uses open-source software, but also containing commercial components where they make sense.
...
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 | now |
Astronomy community at large | Consumers of GLAST data products | post-launch (2006) |
...
The GLAST data processing projects and the platforms they run on.
Project | Linux | Windows |
---|---|---|
Processing Pipeline (GINO) |
| |
Release Manager | ||
Installer | ||
Tag Collector |
| |
System Tests | ||
Data Access |
Integration Tier
The back-end legacy components and the platforms that need access to them.
Legacy System | Linux | Windows |
---|---|---|
Oracle | ||
LSF | ||
NFS | ||
Windows File System |
| |
mstore |
| |
cvs | ||
gcc |
| |
cl.exe |
| |
cmt | ||
gleam.exe | ||
ROOT |
Requirements
The list of requirements of each subsystem based on real use-cases.
...
Requirement
...
GINO
...
RM
...
Installer
...
TC
...
System Tests
...
Data Access
...
Web configuration/editing
...
...
...
...
...
...
...
Web reports
...
...
...
...
...
...
...
Single Sign-On
...
...
...
...
...
...
...
Persistence (CRUD)
...
...
...
...
...
...
...
Reports (DB Queries)
...
...
...
...
...
...
...
Batch Submission
...
...
...
...
...
...
...
Scheduler
...
...
...
...
...
...
...
Event Notification
...
...
...
...
...
...
...
Automated email
...
...
...
...
...
...
h
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping package="grits.gino.domain"> <class name="TaskImpl" table="TASK"> <id name="id" type="long" unsaved-value="null"> <column name="TASK_PK" /> <generator class="native"> <param name="sequence">TASK_SEQ</param> </generator> </id> <property name="name" type="string"> <column name="TASKNAME" length="30" unique="true" not-null="true" /> </property> <property name="datasetBasePath" type="string"> <column name="BASEFILEPATH" length="200" not-null="false" /> </property> <property name="runLogPath" type="string"> <column name="RUNLOGFILEPATH" length="200" not-null="true" /> </property> <many-to-one name="type"> <column name="TASKTYPE_FK" not-null="true" /> </many-to-one> <set name="taskProcessSortedSet" inverse="true" cascade="all-delete-orphan" sort="natural" order-by="SEQUENCE asc"> <key column="TASK_FK" /> <one-to-many class="TaskProcessImpl" /> </set> <set name="datasetSetInternal" inverse="true" cascade="all-delete-orphan"> <key column="TASK_FK" /> <one-to-many class="DatasetImpl" /> </set> </class> </hibernate-mapping> |