You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 24 Next »

Introduction

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 completely in place, and development of the various GRITS Projects within the framework has only recently begun. The first concrete components for the Processing Pipeline (which is one of the GRITS Projects) were recently installed into production.

The outline of this presentation is as follows:

  1. 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.
  2. 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.
  3. The technologies used by the GRITS Framework are described in some detail.
  4. Development tools and methodologies used by the GRITS Framework are described in some detail, as tehy are the recommended approach for GRITS Projects

rapid server-side scripting, easy consumption of Web Services and Databases.

GRITS Framework

The GRITS Framework primarily uses open-source software, but also containing commercial components where they make sense.

The primary components are:

    • 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.
    • 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

Goals

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:

  • Distributed, cross-platform SOA for GLAST Projects that is simple to develop in and simple to use
  • Lightweight, scaleable maintainable
  • Leverage existing SLAC infrastructure
  • Promote team oriented development (as opposed to individual contributors)
  • Maximize disparate talents of a small group
    • Programmers
    • Web Developers
    • Occasionally-connected programmer/manager/astronomer
  • Utilize talents of JAS group

There are three sets of expected users:

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)

GLAST Data Processing Projects

The GLAST data processing projects and the platforms they run on.

Project

Linux

Windows

Processing Pipeline (GINO)

(tick)

 

Release Manager

(tick)

(tick)

Installer

(tick)

(tick)

Tag Collector

(tick)

 

System Tests

(tick)

(tick)

Data Access

(tick)

(tick)

Integration Tier

The back-end legacy components and the platforms that need access to them.

Legacy System

Linux

Windows

Oracle

(tick)

(tick)

LSF

(tick)

(tick)

NFS

(tick)

(tick)

Windows File System

 

(tick)

mstore

(tick)

 

cvs

(tick)

(tick)

gcc

(tick)

 

cl.exe

 

(tick)

cmt

(tick)

(tick)

gleam.exe

(tick)

(tick)

ROOT

(tick)

(tick)

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

(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)

<?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>
  • No labels