28
GemStone/S @ IT Services Vienna University of Technology [email protected]

GemStone/S @ Vienna University

  • Upload
    esug

  • View
    533

  • Download
    2

Embed Size (px)

DESCRIPTION

GemStone/S @ IT Services Vienna University of Technology. Georg Gollmann, (ESUG 2004, Koethen)

Citation preview

Page 1: GemStone/S @ Vienna University

GemStone/S

@

IT Services

Vienna University of Technology

[email protected]

Page 2: GemStone/S @ Vienna University

•Application

• Implementation

•Remarks

•Q&A

Page 3: GemStone/S @ Vienna University

Application: Swiss Army Knife

• All administrative tasks of a support organisation with

25.000 customers.

• Not a lot of data but a lot of dependencies.

• Therefore business rules must be stored with the data

and must be applied consistently.

• Single part time developer.

Page 4: GemStone/S @ Vienna University

Some Services

• Campus Software

• Student Software

• Systems Support

• Account Management

• Authentication Service

• White Pages & Mail Router Feed

Page 5: GemStone/S @ Vienna University

Example

Organisation

MailAgent

Person

Computer

SupportAgreementAccuSpecification

PostScriptPage

ScheduleEvent

Incident

Platform Product

CostCenter

Page 6: GemStone/S @ Vienna University

Implementation

• GemStone/S

• Persistence

• Concurrent Transactions

• Constraints

• Class Versions

• Access Control

Page 7: GemStone/S @ Vienna University

Implementation

• GemStone/S (cont)

• Indexes

• Namespaces

• GeODE (1993-97)

Page 8: GemStone/S @ Vienna University

Web Interface

• Since early 1995

• Implemented inside GemStone/S

• Message passing paradigm

/receiver.message?param=value

• Method must be in category „HTML Reply“

Page 9: GemStone/S @ Vienna University

Web Interface (cont.)

• One server process for the general public, separate

ones for each internal user on different ports.

• Mechanisms to avoid session hijacking.

• Was ported to become one of the first web servers for

Squeak.

Page 10: GemStone/S @ Vienna University

Secure Web Interface

• Since 1998

• Front end linking to SSLeay/OpenSSL

• Uses RPC Gem to keep OpenSSL and GemStone in

separate address spaces.

Page 11: GemStone/S @ Vienna University

Development

• Completely via the Secure Web Interface

• Class Browser adapted to the Web:

• System: classes by class category

• Class: methods by method category

• Category: methods including comments

• Methodeditor

Page 12: GemStone/S @ Vienna University

Development (cont.)

• Method finder:

• Implementors

• Senders

• References to

• Substring

Page 13: GemStone/S @ Vienna University

Development (cont.)

• Only stack dumps for debugging

• Mitigated by design for testability

• Workspace

Page 14: GemStone/S @ Vienna University

Display Framework

• asLink (Object, Collection, String, Dictionary,...)

• asHTML

• title:

• itemize:

• tabulate:

Page 15: GemStone/S @ Vienna University

Edit Framework

• editForm

• formHeaderFor:

• label:id:value:size:

• label:id:list:selected:size:

• formFooter

Page 16: GemStone/S @ Vienna University

Edit Framework (cont.)

• Update Setup

• field id

• instance variable (constraintOn:)

• getter method

• setter method

Page 17: GemStone/S @ Vienna University

Edit Framework (cont.)

• doUpdate

• authorization check

• error handling

• update:

• updateList:

• fromString:

Page 18: GemStone/S @ Vienna University

Delayed Actions

• GemStone/S is a transactional system

• Some actions can´t be undone by an abort

(e.g. sending mail)

• Therefore delay them until after a successful commit

• Implemented as a queue in the session state

Page 19: GemStone/S @ Vienna University

Exception Handling

• Catch all handler to keep the server alive

• Only generic message for the user (hacker?)

• Specific information by eMail for the maintainer

Page 20: GemStone/S @ Vienna University

Code

• 95 classes

• 2505 methods

• 26023 lines

• 1012862 characters

„On my most productive days, the number of lines of code goes down“.Trygve Reenskaug

Page 21: GemStone/S @ Vienna University

Hardware

• HP L1000

• dual 360 MHz CPU

• 786 MB memory

• Linux box for testing

Page 22: GemStone/S @ Vienna University

Repository

• ~1 million objects

• ~100 MB net data

• 200 MB SPC

Page 23: GemStone/S @ Vienna University

Performance

• up to 370.000 hits/month so far

• mostly via SSL

• machine is mostly idle :-)

• some statistics could be faster...

Page 24: GemStone/S @ Vienna University

Documentation

• Documentation inside

• Notes may reference any object

• Thus always up to date

Page 25: GemStone/S @ Vienna University

Remarks

• Methodologies ?

• Extreme Programming as a guideline

• Small is efficient

• Homogenous is efficient

• Smalltalk throughout

• Everything inside GemStone

Page 26: GemStone/S @ Vienna University

Remarks (cont.)

• Better development environment (change sets)

• More SUnit Tests

• Access rights errors are hardest to test for

Page 27: GemStone/S @ Vienna University

Assessment

• Stable

• Efficient

• Rapid Application Development

• Extensive Change Support

Page 28: GemStone/S @ Vienna University

Q & A