**Architectural Review Checklist**

EAGLE

0.5

Revision Document History

  ---------- --------- ---------------------------------- ---------------------
  Date       Version   Description                        Author

  09/10/03   1.0       First draft                        NCICB Dedicated
                                                          Support

  11/07/03   1.0       Final version 1.0.                 NCICB Dedicated
                                                          Support

  05/12/04   2.0       Redesign to incorporate developer  NCICB Dedicated
                       answer phase followed by a systems Support
                       interview phase.                   
  ---------- --------- ---------------------------------- ---------------------

Table of Contents

1\. Introduction [6](#introduction)

1.1 Purpose [6](#purpose)

1.2 Guidelines for Completing the ARC
[6](#guidelines-for-completing-the-arc)

2\. Project Details *(To be answered by development team)*
[6](#project-details-to-be-answered-by-development-team)

2.1 General Information [6](#general-information)

2.1.1 Project Description [6](#project-description)

2.1.2 Contact Information [6](#contact-information)

2.1.3 Major Deployment Milestones [6](#major-deployment-milestones)

2.2 Architectural Details [7](#architectural-details)

2.2.1 High level architectural description:
[7](#high-level-architectural-description)

2.2.2 High Level Design Diagram (If available):
[7](#high-level-design-diagram-if-available)

2.2.3 Implementation language(s) used?
[7](#implementation-languages-used)

2.2.4 Will connections/requests to the application be session based
(i.e. statefull versus stateless)? If so, is there any reason why
application would not support "sticky session" load balancing?
[7](#will-connectionsrequests-to-the-application-be-session-based-i.e.-statefull-versus-stateless-if-so-is-there-any-reason-why-application-would-not-support-sticky-session-load-balancing)

2.2.5 Will the application be caching data? If so, what is being cached
and how much data will be cached?
[7](#will-the-application-be-caching-data-if-so-what-is-being-cached-and-how-much-data-will-be-cached)

2.2.6 What data files will be created (if any)? How much data will be
saved on an on going basis?
[7](#what-data-files-will-be-created-if-any-how-much-data-will-be-saved-on-an-on-going-basis)

2.2.7 Will this application need a database schema(s) created on the
NCICB infrastructure? If so, what is the maximum number of objects to be
stored?
[7](#will-this-application-need-a-database-schemas-created-on-the-ncicb-infrastructure-if-so-what-is-the-maximum-number-of-objects-to-be-stored)

2.2.8 Are there any external/non-NCICB data sources that will be
accessed by the application?
[7](#are-there-any-externalnon-ncicb-data-sources-that-will-be-accessed-by-the-application)

2.2.9 If this is a web-based application, what are the preferred virtual
hosts names to be registered?
[7](#if-this-is-a-web-based-application-what-are-the-preferred-virtual-hosts-names-to-be-registered)

2.2.10 Any additional architectural details that may be of significance
to the needed deployment environment.
[7](#any-additional-architectural-details-that-may-be-of-significance-to-the-needed-deployment-environment.)

2.3 Performance Requirements [8](#performance-requirements)

2.3.1 Total number of users for this application?
[8](#total-number-of-users-for-this-application-300)

2.3.2 Peak number of concurrent users?
[8](#peak-number-of-concurrent-users-100)

2.3.3 Peak number of requests/minute?
[8](#peak-number-of-requestsminute-na)

2.3.4 Up time requirements?
[8](#up-time-requirements-ideally-247-but-weekendlate-evening-est-maintenances-are-acceptable)

2.3.5 Acceptable down time when recovering from major systems disaster?
[8](#acceptable-down-time-when-recovering-from-major-systems-disaster-within-24-hrs)

2.4 NCICB Project Dependencies [8](#ncicb-project-dependencies)

2.5 Configuration Management Details
[8](#configuration-management-details)

2.5.1 Version Control [8](#version-control)

2.5.2 Change Control [8](#change-control)

2.5.3 Migration to CVS [8](#migration-to-cvs)

2.5.4 Users [8](#users)

2.5.5 Build Process [8](#build-process)

2.5.6 Other CM Needs [8](#other-cm-needs)

2.6 Additional Notes [8](#additional-notes)

3\. System Requirements *(To be answered by both development & systems
team)*
[9](#system-requirements-to-be-answered-by-both-development-systems-team)

3.1 Operating System [9](#operating-system)

\<\<Solaris/LINUX/Windows 2000/...\>\> [9](#__RefHeading___Toc72291051)

3.2 Software (Technology Stack) [9](#software-technology-stack)

3.2.1 Web Server: \<\<Apache/Tomcat/ZOPE/...\>\>
[9](#web-server-apache-current-tech-stack)

3.2.2 App Server: \<\<Tomcat/JBoss/Oracle 9iAS/...\>\>
[9](#app-server-jboss-4.0.4)

3.2.3 Database Server: \<\<Oracle/MySQL/PostgreSQL/...\>\>
[9](#database-server-oracle-9i)

3.2.4 Other software components: \<\<PERL x.x, Python x.x, ...\>\>
[9](#other-software-components-jbossmq-rserve-r-genepattern)

3.3 Server Hardware [9](#server-hardware)

3.3.1 Server: \<\<type, model, ...\>\>
[9](#server-hp-proliant-dl360-g4-with-dual-3.40-ghz-xeon-64t-cpus-8-gb-ram-mirrored-144-gb-scsi-hard-drives.)

3.3.2 Minimum processor speed:
[9](#server-hp-proliant-dl360-g4-with-dual-3.40-ghz-xeon-64t-cpus-8-gb-ram-mirrored-144-gb-scsi-hard-drives.)

3.3.3 Minimum memory: [9](#minimum-memory-4-gb)

3.3.4 Minimum local drive space:
[9](#minimum-local-drive-space-approx-100-mb-eagle.war-200-mbs-for-temp-files-under-jbosstemp-which-get-deleted-after-session-timeoutlogoff)

3.4 Storage [9](#storage)

3.4.1 Expected file server disk storage (in MB):
[9](#expected-file-server-disk-storage-in-mb-1-gb-on-analysis-servers)

3.4.2 Expected database storage (in MB):
[9](#expected-database-storage-in-mb-14-gb)

3.4.3 Expected ftp storage (in MB):
[9](#expected-ftp-storage-in-mb-5-gb)

3.4.4 Expected media/image storage (in MB):
[9](#expected-mediaimage-storage-in-mb-1-gb)

3.5 Load Balancing/Fault Tolerance [9](#load-balancingfault-tolerance)

3.5.1 Does the application support load balancing?
[9](#does-the-application-support-load-balancing-na)

3.5.2 Implement load balancing -- YES/NO
[9](#implement-load-balancing-yesno-no)

3.6 Networking [9](#networking)

3.6.1 Any application specific port assignments?
[9](#any-application-specific-port-assignments)

3.6.2 Any additional configuration? [9](#any-additional-configuration)

3.7 Additional Notes [9](#additional-notes-1)

4\. Proposed NCICB Deployment Environment *(To be answered by systems
team)*
[9](#proposed-ncicb-deployment-environment-to-be-answered-by-systems-team)

4.1 Hardware [9](#hardware)

4.2 Technology Stack [10](#technology-stack)

4.3 File Server [10](#file-server)

4.4 Database [10](#database)

4.5 Networking [10](#networking-1)

4.6 Other Resources [10](#other-resources)

5\. Impact Assessment *(To be answered by systems team)*
[10](#impact-assessment-to-be-answered-by-systems-team)

5.1 Overview [10](#overview)

5.2 Cost [10](#cost)

5.3 Timeline to implement [10](#timeline-to-implement)

5.4 Additional Notes [10](#additional-notes-2)

6\. Acceptance [10](#acceptance)

7\. Appendix 1 - Future Systems Requirements
[11](#appendix-1---future-systems-requirements)

7.1 New Architecture Diagram [11](#new-architecture-diagram)

7.2 Notes on the design change [11](#__RefHeading___Toc72291089)

7.3 Hardware [11](#hardware-1)

7.3.1 Servers [11](#servers)

7.3.2 Processor speed [11](#processor-speed)

7.3.3 Memory [11](#memory)

7.3.4 Drive Space [11](#drive-space)

7.4 Software (Technology Stack) [11](#software-technology-stack-1)

7.4.1 Web Server [11](#web-server)

7.4.2 App Server [11](#app-server)

7.4.3 Other components [11](#other-components)

7.5 Fault Tolerance (Redundancy) [11](#fault-tolerance-redundancy)

7.5.1 Does the application support load balancing?
[11](#does-the-application-support-load-balancing)

7.5.2 Implement load balancing -- YES/NO
[11](#implement-load-balancing-yesno)

7.5.3 Load balancing requirements [11](#load-balancing-requirements)

7.5.4 Fault tolerance solution suggested
[11](#fault-tolerance-solution-suggested)

7.5.5 Additional requirements (if any)
[11](#additional-requirements-if-any)

7.6 Performance Enhancements [11](#performance-enhancements)

7.6.1 Processing Power [11](#processing-power)

7.6.2 Memory [11](#memory-1)

7.6.3 I/O [11](#io)

7.6.4 Other needs [11](#other-needs)

# Introduction

## Purpose

The purpose of the Architectural Review Checklist (ARC) is to help
identify the deployment environment (both hardware and software
components) necessary for an application to execute optimally within the
NCICB IT infrastructure. The ARC is considered to be a dynamic artifact
for any NCICB project and should be maintained in the configuration
library (i.e. CVS) for each project. For new projects, this document
template will be automatically checked into the projects repository by
the SCM team upon project initiation. The ARC should be reviewed on at
least a quarterly basis to capture any application design changes that
may effect the deployment environment necessary for optimal performance.

## Guidelines for Completing the ARC

The ARC is divided into 4 main sections. The first section (Project
Details) is meant to capture general information about the project. The
project development team should fill out the Project Details section and
return it to the systems team. The second section (Systems Requirements)
is meant to capture details of specific system requirements for the
project. Both the development and system teams will preferably answer
the Systems Requirement section jointly. However, depending on the
development teams familiarity with the NCICB infrastructure, they may
choose to answer either all or parts of this section on their own. The
third section (Planned Deployment Environment) specifies the proposed
deployment environment for the application and is to be answered by the
systems team based on the response to section 1 & 2. Finally, the last
section (Impact Assessment) describes the impact (additional
hardware/software costs, staffing resources...) to the existing NCICB IT
infrastructure in order to support this application. Upon completion of
the Deployment Environment and Impact Assessment sections, the systems
team will return the ARC to the development team for final review and
comments.

# Project Details *(To be answered by development team)*

## General Information

### Project Description

**E**nvironmental **A**nd **G**enetic **L**ung **c**ancer **E**tiology
(EAGLE) is an interdisciplinary multi-center case-control study of lung
cancer conducted in Milan, Italy, designed to explore the genetic
determinants both of lung cancer and smoking. The study, initiated by
the Division of Cancer Epidemiology and Genetics (DCEG), enrolled 2,000
incident lung cancer cases, including both males and females of Italian
nationality, ages 35 to 79 years old, with verified lung cancer of any
histological type. In addition 2,000 healthy controls randomly selected
from the catchment area and matched to cases by age, gender and
residence are enrolled. Extensive epidemiologic data, clinical data,
blood and lung tissue paraffin blocks are collected, to enable
investigation into the genetic factors that interact with smoking in the
etiology of the disease as well as to identify the genetic determinants
of therapy efficacy and survival in the lung cancer subjects.

The objectives of the EAGLE study, as identified by DCEG, are as
follows:

-   Perform genetic profiling of study participants by 15STR markers

-   Conduct analysis of gene expression in adenocarcinoma lung cancer
    tissue of smokers and non-smokers

-   Identify histologic characteristics of lung cancer in relation to
    genotype, gene expression, somatic mutations, and smoking

-   Monitor therapy efficacy and survival of lung cancer patients

-   Identify lung cancer-affected siblings of cases and the unaffected
    siblings in the same sibs hips

-   Perform integrative analyses of the above-mentioned datasets in the
    context of the epidemiological data from the study.

In support of study goals and objective, the DCEG, in collaboration with
NCICB, launched an effort in the design and development of a
translational research portal supporting the EAGLE study. This EAGLE
informatics effort includes the capture, integration, and analysis of
epidemiologic, clinical and genomic data obtained from the 4,000 study
participants to enable integrative epidemiology analysis in the
discovery of biomarkers in Lung cancer patients. The overall goals of
the informatics effort are:

-   To provide authorized users with the ability to conduct integrative
    analysis of genetic, environmental, clinical and behavioral data of
    several thousand case and controls subjects in the EAGLE study to
    elucidate the etiology of lung cancer. Essentially, providing
    informatics support for the integrative analysis of gene expression,
    genotyping, SNP array, proteomics and histological characteristics
    datasets in the context of the epidemiology data from the study

-   To enable analysis of the association between different exposures
    and the disease in addition to the identification of disease and
    susceptibility biomarkers that affects the prognosis and factors
    that can influence smoking persistence.

Accomplishing these goals involves the re-use and extension of the
existing NCICB caIntegrator framework supporting translational research.

### Contact Information

  ---------------- ---------------------- --------------- -----------------------
  **Title**        **Name**               **Phone**       **Email**

  Project Manager  Subha Madhavan         \(301\)         madhavas@mail.nih.gov
                                          451-2882        

  Team             Ryan Landy             \(301\) 451-    landyr@mail.nih.gov
  Lead/Architect                          6363            

  SCM Coordinator  Ye Wu                  \(301\) 451     wuye@mail.nih.gov
                                          2206            
  ---------------- ---------------------- --------------- -----------------------

### Major Deployment Milestones

  ----------------------------------- -----------------------------------
  **Milestone**                       **Date**

  Planned Release to QA               First tag to QA expected on 2nd
                                      week of May 07

  Planned Release to Staging          EAGLE 0.5 End of Sept, 07

  Planned Release to Production       October 2007
  ----------------------------------- -----------------------------------

## Architectural Details

### High level architectural description:

The primary components of caIntegrator which will be elaborated upon
include: the raw and derived database, the caIntegrator dependency
modules, the Analysis Server(s), and the EAGLE Web Application. It is an
n-tier J2EE system that contains:

1.  a struts based web application (eagle.war) that interfaces with the
    DB using Hibernate.

2.  CSM API which uses Hibernate 2.1

3.  one or more real-time analysis servers that uses JBossMQ (JMS),
    RServe and R or the GenePattern Server.

### High Level Design Diagram (If available):

![](media/image1.wmf){width="1.2255905511811023in"
height="1.3070866141732282in"}![](media/image1.wmf){width="1.2255905511811023in"
height="1.3090551181102361in"}![](media/image1.wmf){width="1.2255905511811023in"
height="1.3070866141732282in"}![](media/image1.wmf){width="1.2255905511811023in"
height="1.3090551181102361in"}![](media/image1.wmf){width="1.2255905511811023in"
height="1.3055118110236221in"}![](media/image1.wmf){width="1.2255905511811023in"
height="1.3090551181102361in"}

### Implementation language(s) used?

Java, R

### Will connections/requests to the application be session based (i.e. statefull versus stateless)? If so, is there any reason why application would not support "sticky session" load balancing?

Statefull sessions from web application to other tiers.

### Will the application be caching data? If so, what is being cached and how much data will be cached?

We are using Ehache cache for user sessions information that is
maintains when they log back in.

### What data files will be created (if any)? How much data will be saved on an on going basis?

PNG image files are generated by the application and deleted upon
session time out or logoff

Some PNG files are transferred from Analysis server to web application.

### Will this application need a database schema(s) created on the NCICB infrastructure? If so, what is the maximum number of objects to be stored?

Yes, 200+ tables in the EAGLE database

The application will need atleast two schemas.

1)  Raw EPI data (migrate from Access) - appox 200+ tables

2)  caIntegrator data warehouse schema (incl. CSM tables) -- approx 50+
    tables

### Are there any external/non-NCICB data sources that will be accessed by the application?

No

### If this is a web-based application, what are the preferred virtual hosts names to be registered?

**https://caintegrator.nci.nih.gov/eagle/**

**https://caintegrator-dev.nci.nih.gov/eagle/**

**https://caintegrator-stage.nci.nih.gov/eagle/**

**https://caintegrator-qa.nci.nih.gov/eagle/**

### Any additional architectural details that may be of significance to the needed deployment environment.

R server and R need to be installed and configured. A GenePattern server
may also need to be setup for additional real-time analysis.

## Performance Requirements

### Total number of users for this application? 300+

### Peak number of concurrent users? 100+

### Peak number of requests/minute? N/A

### Up time requirements? Ideally 24/7, but weekend/late evening (EST) maintenances are acceptable

### Acceptable down time when recovering from major systems disaster? Within 24 hrs

## NCICB Project Dependencies

caBIO 3.2 client.jar

Latest CSM API jar

## Configuration Management Details

Briefly describe your current configuration management practices here.

### Version Control

What version control software are you currently using, if any?

CVS (gforge)

### Change Control

What are your current change control practices? What procedures are in
place to determine whether to implement a change request?

After customer approval, changes are deployed on dev for testing. Next
forwarded to

Staging and then to Production.

### Migration to CVS

Indicate whether you will require SCM support migrating your source code
to the NCICB CVS repository.

No

### Users

Provide a list of all developers who require access to your repository
modules.

(users accounts already managed via Gforge)

Dana Zhang

Ram Bhattaru

Ryan Landy

Kevin Rosso

Andrew Shinohara

Wei Lin

Michael Harris

Huaitian Liu

Himanso Sahni

Hong Jiang

Ying Long

Ye Wu

Srinivasan Guruswami

Subha Madhavan

###  {#section .unnumbered}

### Build Process

Describe your build process here. For example, are you using Ant, Make,
or something else?

We use Ant for all builds

### Other CM Needs

Describe any other CM needs?

## Additional Notes

Dependent on current CVS Modules which are part caIntegrator:

caintegrator-analysis-commons

caintegrator-analysis-server

caintegrator-spec

caintegrator-applications-commons

# System Requirements *(To be answered by both development & systems team)*

## Operating System

Windows2000, WindowsXP, Red Hat EL 3.0

## Software (Technology Stack)

### Web Server: Apache (current tech stack)

### App Server: JBoss 4.0.4

### Database Server: Oracle 9i

### Other software components: JBossMQ, RServe, R, GenePattern

## Server Hardware

### Server: HP Proliant DL360 G4, with dual 3.40 GHz Xeon 64T cpus, 8 GB ram, mirrored 144 GB SCSI hard drives.

### Minimum processor speed: 3.40 GHz

### Minimum memory: **4 GB**

### Minimum local drive space: approx 100 MB (eagle.war) / 200 MBs for temp files under JBOSS/temp which get deleted after session timeout/logoff

## Storage

### Expected file server disk storage (in MB): 1 GB on Analysis Servers

### Expected database storage (in MB): 14 GB

### Expected ftp storage (in MB): 5 GB

### Expected media/image storage (in MB): 1 GB

## Load Balancing/Fault Tolerance 

### Does the application support load balancing? N/A

### Implement load balancing -- YES/NO: No

## Networking

### Any application specific port assignments? 

### Applications need JNDI ports exposed internally between servers and 8080 for web app  {#applications-need-jndi-ports-exposed-internally-between-servers-and-8080-for-web-app .unnumbered}

### Any additional configuration? 

### CSM LDAP, CSM UPT, CSM Hibernate, JMS and JNDI for Analysis Servers, GenePattern, JFreeChart (headless mode) {#csm-ldap-csm-upt-csm-hibernate-jms-and-jndi-for-analysis-servers-genepattern-jfreechart-headless-mode .unnumbered}

## Additional Notes

# Proposed NCICB Deployment Environment *(To be answered by systems team)*

## Hardware

*\<\<dev, qa, staging, production servers to be used\>\>*

## Technology Stack

*\<\<specific technology stack to be used\>\>*

## File Server

*\<\<space allocation on big IP, NFS mount points, initial size
allocation...\>\>*

## Database

*\<\<database server to used, schema names to be created, initial size,
maximum size...\>\>*

## Networking

*\<\<e.g. any BigIP configuration necessary, ...\>\>*

## Other Resources

*\<\<e.g. ftp server access, media server access, ...\>\>*

# Impact Assessment *(To be answered by systems team)*

## Overview

## Cost 

## Timeline to implement

## Additional Notes

# Acceptance

  ----------------------------------- -----------------------------------
  Project Lead ( )                    Project Coordinator -- NCICB ( )

  Systems Team                        SCM Administrator
  ----------------------------------- -----------------------------------

#  {#section-1 .unnumbered}

# Appendix 1 - Future Systems Requirements

In this section, describe any projected future anticipated requirements
for your system.

## New Architecture Diagram

TBD

## Hardware

### Servers

### Processor speed

### Memory

### Drive Space

## Software (Technology Stack)

### Web Server

### App Server

### Other components

## Fault Tolerance (Redundancy)

### Does the application support load balancing?

### Implement load balancing -- YES/NO

### Load balancing requirements

### Fault tolerance solution suggested

### Additional requirements (if any)

## Performance Enhancements

### Processing Power

### Memory

### I/O

### Other needs