**Architectural Review Checklist**

caArray Grid Service

1.1 (supports caArray 1.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

Purpose 6

Guidelines for Completing the ARC 6

2\. Project Details (To be answered by development team) 6

General Information 6

Project Description 6

Contact Information 6

Major Deployment Milestones 6

Architectural Details 7

High level architectural description: 7

High Level Design Diagram (If available): 7

Implementation language(s) used? 7

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 the application be caching data? If so, what is being cached and
how much data will be cached? 7

What data files will be created (if any)? How much data will be saved on
an on going basis? 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

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

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

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

Performance Requirements 8

Total number of users for this application? 8

Peak number of concurrent users? 8

Peak number of requests/minute? 8

Up time requirements? 8

Acceptable down time when recovering from major systems disaster? 8

NCICB Project Dependencies 8

Configuration Management Details 8

Version Control 8

Change Control 8

Migration to CVS 8

Users 8

Build Process 8

Other CM Needs 8

Additional Notes 8

3\. System Requirements (To be answered by both development & systems
team) 9

Operating System 9

\<\<Solaris/LINUX/Windows 2000/...\>\> 9

Software (Technology Stack) 9

Web Server: \<\<Apache/Tomcat/ZOPE/...\>\> 9

App Server: \<\<Tomcat/JBoss/Oracle 9iAS/...\>\> 9

Database Server: \<\<Oracle/MySQL/PostgreSQL/...\>\> 9

Other software components: \<\<PERL x.x, Python x.x, ...\>\> 9

Server Hardware 9

Server: \<\<type, model, ...\>\> 9

Minimum processor speed: 9

Minimum memory: 9

Minimum local drive space: 9

Storage 9

Expected file server disk storage (in MB): 9

Expected database storage (in MB): 9

Expected ftp storage (in MB): 9

Expected media/image storage (in MB): 9

Load Balancing/Fault Tolerance 9

Does the application support load balancing? 9

Implement load balancing -- YES/NO 9

Networking 9

Any application specific port assignments? 9

Any additional configuration? 9

Additional Notes 9

4\. Proposed NCICB Deployment Environment (To be answered by systems
team) 9

Hardware 9

Technology Stack 10

File Server 10

Database 10

Networking 10

Other Resources 10

5\. Impact Assessment (To be answered by systems team) 10

Overview 10

Cost 10

Timeline to implement 10

Additional Notes 10

6\. Acceptance 10

7\. Appendix 1 - Future Systems Requirements 11

New Architecture Diagram 11

Notes on the design change 11

Hardware 11

Servers 11

Processor speed 11

Memory 11

Drive Space 11

Software (Technology Stack) 11

Web Server 11

App Server 11

Other components 11

Fault Tolerance (Redundancy) 11

Does the application support load balancing? 11

Implement load balancing -- YES/NO 11

Load balancing requirements 11

Fault tolerance solution suggested 11

Additional requirements (if any) 11

Performance Enhancements 11

Processing Power 11

Memory 11

I/O 11

Other needs 11

# 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

The project should be thought of as a component within the larger
caArray project. In so, this project will "grid-ify" the caArray Portal.

### Contact Information

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

  Project Manager                                         

  Team                                                    
  Lead/Architect                                          

  SCM Coordinator                                         
  ---------------- ---------------------- --------------- ----------------

### Major Deployment Milestones

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

  Planned Release to QA               

  Planned Release to Staging          

  Planned Release to Production       
  ----------------------------------- -----------------------------------

## Architectural Details

### High level architectural description:

*\<\<*

*Overall architecture (e.g. 2-tiered fat client/server, 3-tiered
web-based application, Portal application, EJB, Web service, GRID, RMI,
... ).*

*\>\>*

*This project will act as a caGrid Service. To do so, this application
will expose the caArray MAGE-OM API via the grid thereby creating a
dependency on the carray-mageom project \--instance of MAGE-OM server
that is running.*

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

![](media/image2.png){width="6.25in" height="4.604166666666667in"}

### Implementation language(s) used?

**Java, J2EE, XML, Webservices**

### 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?

**[TBD.]{.mark}**

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

**No caching is expected, unless an HTTPSession (session information) is
considered caching.**

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

*\<\<e.g. ftp uploads, log files, temporary work files, cache
storage...\>\>*

**The only data that should be created are log files.**

### 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?

**No.**

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

*\<\<e.g. USCS DAS, SKY/M-FISH, Mittelman DB, Pubmed, ...\>\>*

**No.**

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

*\<\<e.g. PROJECT_NAME.nci.nih.gov\>\>*

***[TBD.]{.mark}***

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

**This project is already in production through a different effort,
caGrid-1.0/Applications/caArray and is being transitioned back to the
caArray development team. Basically, a previous version of caArray, 1.4,
was "grid-ified" by members of the caGrid team and their work is being
transitioned back to the caArray development team to update and manage
in the future.**

## Performance Requirements

### Total number of users for this application? 

### **Unknown.** {#unknown. .unnumbered}

### Peak number of concurrent users?

**Unknown.**

### Peak number of requests/minute?

**Unknown.**

### Up time requirements?

**24x7**

### Acceptable down time when recovering from major systems disaster?

**Just a guess, no strict requirements, perhaps \< 2 days as a
worst-case.**

## NCICB Project Dependencies

\<\<Describe any known dependencies on other NCICB projects, e.g. caBIO,
caDSR, EVS, \>\>

**Direct: caGrid, caArray MAGE-OM**

**Derived: caArray Portal, EVS, caDSR**

## Configuration Management Details

Briefly describe your current configuration management practices here.

### Version Control

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

**CVS.**

### Change Control

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

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

**smatyas**

**robdaly**

**elliemental**

**etavela**

**kanchink**

### Build Process

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

**Ant.**

### Other CM Needs

Describe any other CM needs?

## Additional Notes

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

## Operating System

### \<\<Solaris/LINUX/Windows 2000/...\>\> {#solarislinuxwindows-2000 .unnumbered}

Linux

## Software (Technology Stack)

### Web Server: Tomcat

### App Server: Tomcat 

### Database Server: None

### Other software components: None

## Server Hardware

### Server: ??

### Minimum processor speed: ??

### Minimum memory: 2 -- 4GB??

### Minimum local drive space:

## Storage

### Expected file server disk storage (in MB): Just enough for log files

### Expected database storage (in MB): N/A

### Expected ftp storage (in MB): N/A

### Expected media/image storage (in MB): Little -- None anticipated

## Load Balancing/Fault Tolerance 

### Does the application support load balancing? No

### Implement load balancing -- YES/**NO**

## Networking

### Any application specific port assignments?

### Any additional configuration?

See highlighted, entries. This was extracted from
<http://gforge.nci.nih.gov/plugins/scmcvs/cvsweb.php/cagrid-1-0/Documentation/docs/Deployment/Deployment_caGrid_1-0_draft.doc?cvsroot=cagrid-1-0>

> Development Tier

  ---------------------- ----------------------------------- ------------------------ ------------------
  \<Server1\>            cbiovdev5012.nci.nih.gov            \<http_port\>            8080

  \<Server2\>            cbiovdev5034.nci.nih.gov            \<http_port\>            8080

  \<Server3\>            cbiovdev5035.nci.nih.gov            \<https_port\>           8443

  \<Server4\>            cbiovdev5036.nci.nih.gov            \<https_port\>           8443

  \<Server5\>            cbiovdev5037.nci.nih.gov            \<https_port\>           8443

  [\<Server6\>]{.mark}   [cbiovdev5017.nci.nih.gov]{.mark}   [\<http_port\>]{.mark}   [8080]{.mark}

  \<Server7\>            cbiovdev5038.nci.nih.gov            \<https_port\>           8443

  \<globususer\>         globus                              \<tomcatuser\>           globus

  \<dbserver\>           cbiovdev5004.nci.nih.gov            \<dbuser\>               cagradmin

  \<Sandbox\>            \<Server6\>                                                  
  ---------------------- ----------------------------------- ------------------------ ------------------

> **QA** Tier

  ---------------------- --------------------------------------- ------------------------ -----------------
  \<Server1\>            cagrid-index-qa.nci.nih.gov             \<http_port\>            8080

  \<Server2\>            cagrid-service-qa.nci.nih.gov           \<http_port\>            8080

  \<Server3\>            cagrid-dorian-qa.nci.nih.gov            \<https_port\>           8443

  \<Server4\>            cagrid-gts-master-qa.nci.nih.gov        \<https_port\>           8443

  \<Server5\>            cagrid-gts-slave-qa.nci.nih.gov         \<https_port\>           8443

  [\<Server6\>]{.mark}   [cagrid-portal-qa.nci.nih.gov]{.mark}   [\<http_port\>]{.mark}   [8080]{.mark}

  \<Server7\>            cagrid-auth-qa.nci.nih.gov              \<https_port\>           8443

  \<globususer\>         globus                                  \<tomcatuser\>           globus

  \<dbserver\>           cbiovqa5003.nci.nih.gov                 \<dbuser\>               cagradmin

  \<Sandbox\>            cbiovgridqa5000.nci.nih.gov                                      
  ---------------------- --------------------------------------- ------------------------ -----------------

> **Staging** Tier

  ---------------------- -------------------------- ------------------------ -----------------
  \<Server1\>            ?                          \<http_port\>            8080

  \<Server2\>            ?                          \<http_port\>            8080

  \<Server3\>            ?                          \<https_port\>           8443

  \<Server4\>            ?                          \<https_port\>           8443

  \<Server5\>            ?                          \<https_port\>           8443

  [\<Server6\>]{.mark}   [?]{.mark}                 [\<http_port\>]{.mark}   [8080]{.mark}

  \<Server7\>            ?                          \<https_port\>           8443

  \<globususer\>         globus                     \<tomcatuser\>           globus

  \<dbserver\>           cbiovapp5006.nci.nih.gov   \<dbuser\>               cagradmin

  \<Sandbox\>            ?                                                   
  ---------------------- -------------------------- ------------------------ -----------------

> **Production** Tier

  ---------------------- ------------------------------------ ------------------------ -----------------
  \<Server1\>            cagrid-index.nci.nih.gov             \<http_port\>            8080

  \<Server2\>            cagrid-service.nci.nih.gov           \<http_port\>            8080

  \<Server3\>            cagrid-dorian.nci.nih.gov            \<https_port\>           8443

  \<Server4\>            cagrid-gts-master.nci.nih.gov        \<https_port\>           8443

  \<Server5\>            cagrid-gts-slave.nci.nih.gov         \<https_port\>           8443

  [\<Server6\>]{.mark}   [cagrid-portal.nci.nih.gov]{.mark}   [\<http_port\>]{.mark}   [8080]{.mark}

  \<Server7\>            cagrid-auth.nci.nih.gov              \<https_port\>           8443

  \<globususer\>         globus                               \<tomcatuser\>           globus

  \<dbserver\>           cbioapp519.nci.nih.gov               \<dbuser\>               cagradmin

  \<Sandbox\>            ?                                                             
  ---------------------- ------------------------------------ ------------------------ -----------------

## 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 .unnumbered}

# Appendix 1 - Future Systems Requirements

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

## New Architecture Diagram

## Notes on the design change

## 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