**Architectural Review Checklist**

ADT (Admission, Discharge, & Transfer)

Release 1.0

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.                   

  05/20/04   1.0       First draft of ADT                 Jin-Soo Choi
  ---------- --------- ---------------------------------- ---------------------

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?
[8](#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?
[8](#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?
[8](#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?
[8](#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.
[8](#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-around-300)

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

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

2.3.4 Up time requirements? [8](#up-time-requirements-dont-know-yet)

2.3.5 Acceptable down time when recovering from major systems disaster?
[8](#acceptable-down-time-when-recovering-from-major-systems-disaster-dont-know-yet)

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 [9](#migration-to-cvs)

2.5.4 Users [9](#users)

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

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

2.6 Additional Notes [9](#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](#solarislinuxwindows-2000)

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

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

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

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

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

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

3.3.1 Server: \<\<type, model, ...\>\> [10](#server-type-model)

3.3.2 Minimum processor speed: [10](#minimum-processor-speed)

3.3.3 Minimum memory: [10](#minimum-memory)

3.3.4 Minimum local drive space: [10](#minimum-local-drive-space)

3.4 Storage [10](#storage)

3.4.1 Expected file server disk storage (in MB):
[10](#expected-file-server-disk-storage-in-mb)

3.4.2 Expected database storage (in MB):
[10](#expected-database-storage-in-mb)

3.4.3 Expected ftp storage (in MB): [10](#expected-ftp-storage-in-mb)

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

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

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

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

3.6 Networking [10](#networking)

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

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

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

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

4.1 Hardware [10](#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 [11](#other-resources)

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

5.1 Overview [11](#overview)

5.2 Cost [11](#cost)

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

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

6\. Acceptance [11](#acceptance)

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

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

7.2 Notes on the design change [12](#notes-on-the-design-change)

7.3 Hardware [12](#hardware-1)

7.3.1 Servers [12](#servers)

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

7.3.3 Memory [12](#memory)

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

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

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

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

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

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

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

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

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

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

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

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

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

7.6.2 Memory [12](#memory-1)

7.6.3 I/O [12](#io)

7.6.4 Other needs [12](#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

\<\<Brief high-level functional description of the project\>\>

### Contact Information

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

  Project Manager  Maurer, JJ                              maurerj@od.nih.gov

  Team             Jin-Soo Choi           301-451-2215     <choij@mail.nih.gov>
  Lead/Architect                                           

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

### Major Deployment Milestones

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

  Planned Release to QA               June 14, 2004

  Planned Release to Staging          June 21, 2004

  Planned Release to Production       June 28, 2004
  ----------------------------------- -----------------------------------

## Architectural Details

### High level architectural description:

3-tiered web-based application, EJB

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

![](media/image1.png)

### Implementation language(s) used?

Java

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

Yes, stateless.

Not that I see.

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

Yes, at most 20 records will be cached for each query.

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

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?

Yes, around 140.

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

adt.nci.nih.gov

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

This application will print request forms to printers located at client
sites (Admission, Voucher, Travel offices). The IP addresses and drivers
for these printers will be provided to TerpSys as soon as I get
information from client. The development, staging, and production JBoss
web servers should be configured accordingly.

## Performance Requirements

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

### Peak number of concurrent users? 15-20

### Peak number of requests/minute? Don't know yet

### Up time requirements? Don't know yet

### Acceptable down time when recovering from major systems disaster? Don't know yet

## NCICB Project Dependencies

C3PR, 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?

TestTrack

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

Jin-Soo Choi

Vinay Kumar

Li Zhang

Hongmei Lu

Srinivasa Batchu

Sirisha Yerredu

Patrick Conrad

JJ Maurer

### Build Process

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

Currently, we are using JDeveloper 9i's deployment tool.

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

## Software (Technology Stack)

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

### App Server: JBoss

### Database Server: Oracle

### Other software components

## Server Hardware

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

### Minimum processor speed:

### Minimum memory:

### Minimum local drive space:

## Storage

### Expected file server disk storage (in MB):

### Expected database storage (in MB):

### Expected ftp storage (in MB):

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

## Load Balancing/Fault Tolerance 

### Does the application support load balancing?

### Implement load balancing -- YES/NO

## Networking

### Any application specific port assignments?

### Any additional configuration?

## 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 (Maurer, JJ )          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