SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
GemStone/S
                   @
          IT Services
Vienna University of Technology
       georg.gollmann@tuwien.ac.at
• Application
• Implementation
• Remarks
• Q&A
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.
Some Services

• Campus Software
• Student Software
• Systems Support
• Account Management
• Authentication Service
• White Pages & Mail Router Feed
Example                       Platform         Product

                                           Computer
   CostCenter
                     Organisation
AccuSpecification
                       Person        SupportAgreement
PostScriptPage
                                           Incident
  MailAgent         ScheduleEvent
Implementation
• GemStone/S
  • Persistence
  • Concurrent Transactions
  • Constraints
  • Class Versions
  • Access Control
Implementation
• GemStone/S (cont)
   • Indexes
   • Namespaces
• GeODE (1993-97)
Web Interface

• Since early 1995
• Implemented inside GemStone/S
• Message passing paradigm
 /receiver.message?param=value
• Method must be in category „HTML Reply“
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.
Secure Web Interface
• Since 1998
• Front end linking to SSLeay/OpenSSL
• Uses RPC Gem to keep OpenSSL and GemStone in
 separate address spaces.
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
Development (cont.)

• Method finder:
   • Implementors
   • Senders
   • References to
   • Substring
Development (cont.)

• Only stack dumps for debugging
  • Mitigated by design for testability
• Workspace
Display Framework

• asLink (Object, Collection, String, Dictionary,...)
• asHTML
   • title:
   • itemize:
   • tabulate:
Edit Framework

• editForm
   • formHeaderFor:
   • label:id:value:size:
   • label:id:list:selected:size:
   • formFooter
Edit Framework (cont.)

• Update Setup
  • field id
  • instance variable (constraintOn:)
  • getter method
  • setter method
Edit Framework (cont.)
• doUpdate
   • authorization check
   • error handling
   • update:
   • updateList:
• fromString:
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
Exception Handling
• Catch all handler to keep the server alive
• Only generic message for the user (hacker?)
• Specific information by eMail for the maintainer
Code
•         95 classes
•      2505 methods
•    26023 lines
• 1012862 characters

„On my most productive days, the number of lines of code goes down“.
                                                  Trygve Reenskaug
Hardware
• HP L1000
   • dual 360 MHz CPU
   • 786 MB memory
• Linux box for testing
Repository
• ~1 million objects
• ~100 MB net data

• 200 MB SPC
Performance
• up to 370.000 hits/month so far
• mostly via SSL
• machine is mostly idle :-)
• some statistics could be faster...
Documentation
• Documentation inside
• Notes may reference any object
• Thus always up to date
Remarks
• Methodologies ?
• Extreme Programming as a guideline
• Small is efficient
• Homogenous is efficient
   • Smalltalk throughout
   • Everything inside GemStone
Remarks (cont.)
• Better development environment (change sets)
• More SUnit Tests
   • Access rights errors are hardest to test for
Assessment
• Stable
• Efficient
• Rapid Application Development
• Extensive Change Support
Q&A

Contenu connexe

Tendances

Un problème 10 solutions : Azure Fighter
Un problème 10 solutions : Azure FighterUn problème 10 solutions : Azure Fighter
Un problème 10 solutions : Azure Fighterfelixbillon
 
Internet services, protocols, applications, packets and frames
Internet services, protocols, applications, packets and framesInternet services, protocols, applications, packets and frames
Internet services, protocols, applications, packets and framesGiuseppe Cramarossa
 
Advance java session 2
Advance java session 2Advance java session 2
Advance java session 2Smita B Kumar
 
XTM; from AEM\Drupal\Sitecore direct connectors to translation vendor subcont...
XTM; from AEM\Drupal\Sitecore direct connectors to translation vendor subcont...XTM; from AEM\Drupal\Sitecore direct connectors to translation vendor subcont...
XTM; from AEM\Drupal\Sitecore direct connectors to translation vendor subcont...TAUS - The Language Data Network
 
MongoDB Days UK: Using MongoDB to Build a Fast and Scalable Content Repositor...
MongoDB Days UK: Using MongoDB to Build a Fast and Scalable Content Repositor...MongoDB Days UK: Using MongoDB to Build a Fast and Scalable Content Repositor...
MongoDB Days UK: Using MongoDB to Build a Fast and Scalable Content Repositor...MongoDB
 
Performance Eye for the SQL Guy
Performance Eye for the SQL GuyPerformance Eye for the SQL Guy
Performance Eye for the SQL GuyWarwick Rudd
 
Micro-services architecture
Micro-services architectureMicro-services architecture
Micro-services architectureFarwa Ansari
 
Java - ServletListeners
Java - ServletListenersJava - ServletListeners
Java - ServletListenersNitin Sharma
 
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)IWMW
 
"Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
 "Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets "Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
"Fast / Resilient / .NET – What to Choose?" Serhiy KalinetsFwdays
 
EDF2013: Selected Talk Søren Roug: Reportnet – a Case Study
EDF2013: Selected Talk Søren Roug: Reportnet – a Case StudyEDF2013: Selected Talk Søren Roug: Reportnet – a Case Study
EDF2013: Selected Talk Søren Roug: Reportnet – a Case StudyEuropean Data Forum
 
Sqlite Introduction
Sqlite IntroductionSqlite Introduction
Sqlite IntroductionPraveen Nair
 
4th Lecture: JSP and such
4th Lecture:  JSP and such4th Lecture:  JSP and such
4th Lecture: JSP and suchManolis Vavalis
 
Store
StoreStore
StoreESUG
 
MDaemon Messaging Server Version 16 Feature Overview
MDaemon Messaging Server Version 16 Feature OverviewMDaemon Messaging Server Version 16 Feature Overview
MDaemon Messaging Server Version 16 Feature OverviewAlt-N Technologies
 
How to: node js & micro-services
How to: node js & micro-servicesHow to: node js & micro-services
How to: node js & micro-servicesMichael Haberman
 

Tendances (20)

In Memory Cahce Structure
In Memory Cahce StructureIn Memory Cahce Structure
In Memory Cahce Structure
 
Un problème 10 solutions : Azure Fighter
Un problème 10 solutions : Azure FighterUn problème 10 solutions : Azure Fighter
Un problème 10 solutions : Azure Fighter
 
Internet services, protocols, applications, packets and frames
Internet services, protocols, applications, packets and framesInternet services, protocols, applications, packets and frames
Internet services, protocols, applications, packets and frames
 
Advance java session 2
Advance java session 2Advance java session 2
Advance java session 2
 
JEE session 1
JEE session 1JEE session 1
JEE session 1
 
XTM; from AEM\Drupal\Sitecore direct connectors to translation vendor subcont...
XTM; from AEM\Drupal\Sitecore direct connectors to translation vendor subcont...XTM; from AEM\Drupal\Sitecore direct connectors to translation vendor subcont...
XTM; from AEM\Drupal\Sitecore direct connectors to translation vendor subcont...
 
MongoDB Days UK: Using MongoDB to Build a Fast and Scalable Content Repositor...
MongoDB Days UK: Using MongoDB to Build a Fast and Scalable Content Repositor...MongoDB Days UK: Using MongoDB to Build a Fast and Scalable Content Repositor...
MongoDB Days UK: Using MongoDB to Build a Fast and Scalable Content Repositor...
 
Performance Eye for the SQL Guy
Performance Eye for the SQL GuyPerformance Eye for the SQL Guy
Performance Eye for the SQL Guy
 
Micro-services architecture
Micro-services architectureMicro-services architecture
Micro-services architecture
 
Java - ServletListeners
Java - ServletListenersJava - ServletListeners
Java - ServletListeners
 
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
IWMW 2003 b4 QA for web sites (4 - QA for MIMAS: A Case Study)
 
Node.js at Nutonian
Node.js at NutonianNode.js at Nutonian
Node.js at Nutonian
 
"Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
 "Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets "Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
"Fast / Resilient / .NET – What to Choose?" Serhiy Kalinets
 
EDF2013: Selected Talk Søren Roug: Reportnet – a Case Study
EDF2013: Selected Talk Søren Roug: Reportnet – a Case StudyEDF2013: Selected Talk Søren Roug: Reportnet – a Case Study
EDF2013: Selected Talk Søren Roug: Reportnet – a Case Study
 
Sqlite Introduction
Sqlite IntroductionSqlite Introduction
Sqlite Introduction
 
4th Lecture: JSP and such
4th Lecture:  JSP and such4th Lecture:  JSP and such
4th Lecture: JSP and such
 
Store
StoreStore
Store
 
MDaemon Messaging Server Version 16 Feature Overview
MDaemon Messaging Server Version 16 Feature OverviewMDaemon Messaging Server Version 16 Feature Overview
MDaemon Messaging Server Version 16 Feature Overview
 
How to: node js & micro-services
How to: node js & micro-servicesHow to: node js & micro-services
How to: node js & micro-services
 
Windows Azure
Windows AzureWindows Azure
Windows Azure
 

En vedette

Coordinated Testing with a Test-Server
Coordinated Testing with a Test-ServerCoordinated Testing with a Test-Server
Coordinated Testing with a Test-ServerESUG
 
Resilient Smalltalk
Resilient SmalltalkResilient Smalltalk
Resilient SmalltalkESUG
 
Automatic Strategies for Decision Support in TriageTelephone
Automatic Strategies for Decision Support in TriageTelephone Automatic Strategies for Decision Support in TriageTelephone
Automatic Strategies for Decision Support in TriageTelephone ESUG
 
Innovation Technology Awards
Innovation Technology AwardsInnovation Technology Awards
Innovation Technology AwardsESUG
 
CxStates
CxStatesCxStates
CxStatesESUG
 
Madeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable HardwareMadeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable HardwareESUG
 
SUnit 4.0
SUnit 4.0SUnit 4.0
SUnit 4.0ESUG
 
Object Graph Swapping
Object Graph SwappingObject Graph Swapping
Object Graph SwappingESUG
 
Unicode
UnicodeUnicode
UnicodeESUG
 
Gemstone 64 Product Overview
Gemstone 64 Product OverviewGemstone 64 Product Overview
Gemstone 64 Product OverviewESUG
 
Hands on Pier
Hands on PierHands on Pier
Hands on PierESUG
 
Web Velocity - Seaside Accelerated
Web Velocity - Seaside AcceleratedWeb Velocity - Seaside Accelerated
Web Velocity - Seaside AcceleratedESUG
 
SqueakBot
SqueakBotSqueakBot
SqueakBotESUG
 
Archiv News 2010 fastNOTE SchreibService
Archiv News 2010 fastNOTE SchreibServiceArchiv News 2010 fastNOTE SchreibService
Archiv News 2010 fastNOTE SchreibServicefastNOTE SchreibService
 
Good beginning[1]
Good beginning[1]Good beginning[1]
Good beginning[1]lc0810
 
Präsentation Ihr Schreibservice für Kunden aus der Schweiz
Präsentation Ihr Schreibservice für Kunden aus der SchweizPräsentation Ihr Schreibservice für Kunden aus der Schweiz
Präsentation Ihr Schreibservice für Kunden aus der SchweizfastNOTE SchreibService
 
Parent Right to Know- WMS
Parent Right to Know- WMSParent Right to Know- WMS
Parent Right to Know- WMSJD Williamson
 
Lakasszavak
LakasszavakLakasszavak
LakasszavakTrita19
 

En vedette (20)

Coordinated Testing with a Test-Server
Coordinated Testing with a Test-ServerCoordinated Testing with a Test-Server
Coordinated Testing with a Test-Server
 
Resilient Smalltalk
Resilient SmalltalkResilient Smalltalk
Resilient Smalltalk
 
Automatic Strategies for Decision Support in TriageTelephone
Automatic Strategies for Decision Support in TriageTelephone Automatic Strategies for Decision Support in TriageTelephone
Automatic Strategies for Decision Support in TriageTelephone
 
Innovation Technology Awards
Innovation Technology AwardsInnovation Technology Awards
Innovation Technology Awards
 
CxStates
CxStatesCxStates
CxStates
 
Madeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable HardwareMadeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable Hardware
 
SUnit 4.0
SUnit 4.0SUnit 4.0
SUnit 4.0
 
Object Graph Swapping
Object Graph SwappingObject Graph Swapping
Object Graph Swapping
 
Unicode
UnicodeUnicode
Unicode
 
Gemstone 64 Product Overview
Gemstone 64 Product OverviewGemstone 64 Product Overview
Gemstone 64 Product Overview
 
Hands on Pier
Hands on PierHands on Pier
Hands on Pier
 
Web Velocity - Seaside Accelerated
Web Velocity - Seaside AcceleratedWeb Velocity - Seaside Accelerated
Web Velocity - Seaside Accelerated
 
SqueakBot
SqueakBotSqueakBot
SqueakBot
 
Receção ao 1.º ano
Receção ao 1.º anoReceção ao 1.º ano
Receção ao 1.º ano
 
Archiv News 2010 fastNOTE SchreibService
Archiv News 2010 fastNOTE SchreibServiceArchiv News 2010 fastNOTE SchreibService
Archiv News 2010 fastNOTE SchreibService
 
Good beginning[1]
Good beginning[1]Good beginning[1]
Good beginning[1]
 
Präsentation Ihr Schreibservice für Kunden aus der Schweiz
Präsentation Ihr Schreibservice für Kunden aus der SchweizPräsentation Ihr Schreibservice für Kunden aus der Schweiz
Präsentation Ihr Schreibservice für Kunden aus der Schweiz
 
Dictate ondemand mobile - Lead Management Option (deutsch)
Dictate ondemand mobile - Lead Management Option (deutsch)Dictate ondemand mobile - Lead Management Option (deutsch)
Dictate ondemand mobile - Lead Management Option (deutsch)
 
Parent Right to Know- WMS
Parent Right to Know- WMSParent Right to Know- WMS
Parent Right to Know- WMS
 
Lakasszavak
LakasszavakLakasszavak
Lakasszavak
 

Similaire à GemStone/S @ Vienna University

SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!Richard Robinson
 
Tools. Techniques. Trouble?
Tools. Techniques. Trouble?Tools. Techniques. Trouble?
Tools. Techniques. Trouble?Testplant
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesMahmoudZidan41
 
Mixing d ps building architecture on the cross cutting example
Mixing d ps building architecture on the cross cutting exampleMixing d ps building architecture on the cross cutting example
Mixing d ps building architecture on the cross cutting examplecorehard_by
 
Scaling Systems: Architectures that grow
Scaling Systems: Architectures that growScaling Systems: Architectures that grow
Scaling Systems: Architectures that growGibraltar Software
 
O365con14 - migrating your e-mail to the cloud
O365con14 - migrating your e-mail to the cloudO365con14 - migrating your e-mail to the cloud
O365con14 - migrating your e-mail to the cloudNCCOMMS
 
SQL Explore 2012: P&T Part 1
SQL Explore 2012: P&T Part 1SQL Explore 2012: P&T Part 1
SQL Explore 2012: P&T Part 1sqlserver.co.il
 
Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
 Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDogRedis Labs
 
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20....Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...Javier García Magna
 
Comparing Legacy and Modern e-commerce solutions
Comparing Legacy and Modern e-commerce solutionsComparing Legacy and Modern e-commerce solutions
Comparing Legacy and Modern e-commerce solutionsMike Ensor
 
Exploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservicesExploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservices💡 Tomasz Kogut
 
Hpc lunch and learn
Hpc lunch and learnHpc lunch and learn
Hpc lunch and learnJohn D Almon
 
Microservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsMicroservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsŁukasz Sowa
 
Migrating from a monolith to microservices – is it worth it?
Migrating from a monolith to microservices – is it worth it?Migrating from a monolith to microservices – is it worth it?
Migrating from a monolith to microservices – is it worth it?Katherine Golovinova
 
Neotys PAC - Ian Molyneaux
Neotys PAC - Ian MolyneauxNeotys PAC - Ian Molyneaux
Neotys PAC - Ian MolyneauxNeotys_Partner
 
Lambda architecture: from zero to One
Lambda architecture: from zero to OneLambda architecture: from zero to One
Lambda architecture: from zero to OneSerg Masyutin
 
Pm ix tutorial-june2019-pub (1)
Pm ix tutorial-june2019-pub (1)Pm ix tutorial-june2019-pub (1)
Pm ix tutorial-june2019-pub (1)ewerkboy
 

Similaire à GemStone/S @ Vienna University (20)

SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
 
Tools. Techniques. Trouble?
Tools. Techniques. Trouble?Tools. Techniques. Trouble?
Tools. Techniques. Trouble?
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Mixing d ps building architecture on the cross cutting example
Mixing d ps building architecture on the cross cutting exampleMixing d ps building architecture on the cross cutting example
Mixing d ps building architecture on the cross cutting example
 
Scaling Systems: Architectures that grow
Scaling Systems: Architectures that growScaling Systems: Architectures that grow
Scaling Systems: Architectures that grow
 
O365con14 - migrating your e-mail to the cloud
O365con14 - migrating your e-mail to the cloudO365con14 - migrating your e-mail to the cloud
O365con14 - migrating your e-mail to the cloud
 
SQL Explore 2012: P&T Part 1
SQL Explore 2012: P&T Part 1SQL Explore 2012: P&T Part 1
SQL Explore 2012: P&T Part 1
 
Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
 Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
Monitoring and Scaling Redis at DataDog - Ilan Rabinovitch, DataDog
 
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20....Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...
 
Comparing Legacy and Modern e-commerce solutions
Comparing Legacy and Modern e-commerce solutionsComparing Legacy and Modern e-commerce solutions
Comparing Legacy and Modern e-commerce solutions
 
Exploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservicesExploring Twitter's Finagle technology stack for microservices
Exploring Twitter's Finagle technology stack for microservices
 
Hpc lunch and learn
Hpc lunch and learnHpc lunch and learn
Hpc lunch and learn
 
Microservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problemsMicroservices - opportunities, dilemmas and problems
Microservices - opportunities, dilemmas and problems
 
The Best of MMS 2013
The Best of MMS 2013The Best of MMS 2013
The Best of MMS 2013
 
Migrating from a monolith to microservices – is it worth it?
Migrating from a monolith to microservices – is it worth it?Migrating from a monolith to microservices – is it worth it?
Migrating from a monolith to microservices – is it worth it?
 
Neotys PAC - Ian Molyneaux
Neotys PAC - Ian MolyneauxNeotys PAC - Ian Molyneaux
Neotys PAC - Ian Molyneaux
 
System center seminar presentation
System center seminar presentationSystem center seminar presentation
System center seminar presentation
 
Lambda architecture: from zero to One
Lambda architecture: from zero to OneLambda architecture: from zero to One
Lambda architecture: from zero to One
 
10135 b 11
10135 b 1110135 b 11
10135 b 11
 
Pm ix tutorial-june2019-pub (1)
Pm ix tutorial-june2019-pub (1)Pm ix tutorial-june2019-pub (1)
Pm ix tutorial-june2019-pub (1)
 

Plus de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

Plus de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Dernier

Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 

Dernier (20)

Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 

GemStone/S @ Vienna University

  • 1. GemStone/S @ IT Services Vienna University of Technology georg.gollmann@tuwien.ac.at
  • 3. 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.
  • 4. Some Services • Campus Software • Student Software • Systems Support • Account Management • Authentication Service • White Pages & Mail Router Feed
  • 5. Example Platform Product Computer CostCenter Organisation AccuSpecification Person SupportAgreement PostScriptPage Incident MailAgent ScheduleEvent
  • 6. Implementation • GemStone/S • Persistence • Concurrent Transactions • Constraints • Class Versions • Access Control
  • 7. Implementation • GemStone/S (cont) • Indexes • Namespaces • GeODE (1993-97)
  • 8. Web Interface • Since early 1995 • Implemented inside GemStone/S • Message passing paradigm /receiver.message?param=value • Method must be in category „HTML Reply“
  • 9. 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.
  • 10. Secure Web Interface • Since 1998 • Front end linking to SSLeay/OpenSSL • Uses RPC Gem to keep OpenSSL and GemStone in separate address spaces.
  • 11. 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
  • 12. Development (cont.) • Method finder: • Implementors • Senders • References to • Substring
  • 13. Development (cont.) • Only stack dumps for debugging • Mitigated by design for testability • Workspace
  • 14. Display Framework • asLink (Object, Collection, String, Dictionary,...) • asHTML • title: • itemize: • tabulate:
  • 15. Edit Framework • editForm • formHeaderFor: • label:id:value:size: • label:id:list:selected:size: • formFooter
  • 16. Edit Framework (cont.) • Update Setup • field id • instance variable (constraintOn:) • getter method • setter method
  • 17. Edit Framework (cont.) • doUpdate • authorization check • error handling • update: • updateList: • fromString:
  • 18. 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
  • 19. Exception Handling • Catch all handler to keep the server alive • Only generic message for the user (hacker?) • Specific information by eMail for the maintainer
  • 20. Code • 95 classes • 2505 methods • 26023 lines • 1012862 characters „On my most productive days, the number of lines of code goes down“. Trygve Reenskaug
  • 21. Hardware • HP L1000 • dual 360 MHz CPU • 786 MB memory • Linux box for testing
  • 22. Repository • ~1 million objects • ~100 MB net data • 200 MB SPC
  • 23. Performance • up to 370.000 hits/month so far • mostly via SSL • machine is mostly idle :-) • some statistics could be faster...
  • 24. Documentation • Documentation inside • Notes may reference any object • Thus always up to date
  • 25. Remarks • Methodologies ? • Extreme Programming as a guideline • Small is efficient • Homogenous is efficient • Smalltalk throughout • Everything inside GemStone
  • 26. Remarks (cont.) • Better development environment (change sets) • More SUnit Tests • Access rights errors are hardest to test for
  • 27. Assessment • Stable • Efficient • Rapid Application Development • Extensive Change Support
  • 28. Q&A