Thursday, October 26, 2006

Technology Stack

The first decision an architect must make when starting a new project is selecting a technology stack. A technology stack is a combination of programs and core-technologies that work together to create an application platform, in this case a Web Application Platform. In most organizations, this is often driven by legacy systems, enterprise standards as well as integration and support issues. For this reason, a developer may not have complete control over the stack.

The objectives of a technology stack are:
  1. Use modular, well documented and widely used enterprise grade technologies
  2. Reuse best practices already in use or under review in client's specific industry
  3. Use technologies with a proven track record for performance and scalability
  4. Use open source wherever possible
Typical go-forward technology stack for Betterdot projects:

Type

Name

Description

Relational Database

PostgreSQL

Greenplum Bizgres

Open source relational database engine. Supports relational integrity, views and stored procedures.

Greenplum is massively parallel architecture built around PostgreSQL

Application Server

Apache Tomcat

Reference servlet container for server-side Java applications

Operating System

Red Hat Linux

Linux distribution

Programming Language

Java

Widely used programming language for large-scale server-side applications. Not open source but free. Governed by a community review process.

Search Engine

Lucene

Java based search engine

MVC Framework

Struts

Java based MVC framework for building web applications

Object Relational Persistence

Hibernate

Facilitates the interaction of the object model with the data model

Application Configuration

Spring

Automated configuration and wiring of application objects

Template Engine

Velocity

Java based template engine. Used for user notifications.

Integrated Development Environment

Eclipse

Widely used open source integrated development environments. Many plug-ins available.

Deployment and Build

ANT

Java and XML based build tool for deployment automation

0 comments: