SlideShare a Scribd company logo
1 of 39
Download to read offline
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.1
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
But first, a Word from our Sponsors…
Some highlights since last year
 TimeZone patch for 6.x
 GemStone/S 64 Bit releases
• 1.1.7 to 1.1.14
• 2.0.4, 2.0.5
• 2.1.0 to 2.1.5
• 2.2.0 to 2.2.2 (August 2007)
2
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
GemStone 64 Bit Enhancements - 1
Multi-threaded stone, shared page cache monitor
Polymorphic method lookup caches
Segment (security) support
Larger signal buffer for gem-to-gem signals
Linux supports faster performance using optimized
POSIX Asynchronous I/O
Signal when transaction logs are full
Ten application write lock queue with timeout
Locale and new extended character set support
System class>>#logout now available
Several float operations now in primitives
3
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
GemStone 64 Bit Enhancements - 2
RcQueue improvements
 Add time is now millisecond-based
 Improved performance by preconfiguring max size
 Multiple retries on commit conflict
Reduced conflict equality indexes
Added tranlog analysis abilities (auditability)
DateTime now supports millisecond resolution
Better handling of LostOT situation
Collection optimizations
Optimization of #and: and #or:
Intel Macintosh client libraries (level “B” support)
Logging enhancements (ms times, etc.)
4
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Announcement of Free Edition
GemStone “Web Edition”
 No cost license, even for commercial use!
 Up to 4 GB image (repository) size
 Up to 1 GB shared page cache
 Up to 64 million objects
 Unlimited VMs (gems)
 64-bit Linux on 64-bit Intel hardware
 Uses only one CPU on one host
 GemBuilder for Smalltalk is disabled
 Community support
5
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.6
What is Seaside and Why the Interest?
What is Seaside?
 Where were you during Lucas Renggli’s
presentation yesterday?
Why the interest?
 Buzz from Ruby on Rails
 Grow interest in Smalltalk
 “We can do better” – Alan Knight
 (Same as Cincom and Instantiations ;-)
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.7
Why Port Seaside to GemStone/S?
Other dialects of Smalltalk are single-user
and non-persistent
 This means that a Seaside application needs to
work around built-in limitations to handle multi-
user persistence
GemStone’s value has always been
providing Smalltalk developers with:
 Built-in transactional persistence
 Built-in multi-user capability
 Built-in multi-CPU and multi-machine scalability.
GemStone’s lack of a GUI is okay!
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.8
Challenge of Persistence
Persistence approaches in Smalltalk
 In the image
• Loss of data if image quits
• Not shared across images
 In a binary file-out
• Limited size
• Object identity is not be preserved
 In an external database
• Object/relational mapping overhead
• Extra coding to foreign interface
GemStone/S solves this problem!
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.9
Challenge of Multi-User Coordination
Multi-user approaches in Smalltalk
 One image serving multiple clients
• Requires layer directing query to image
• Scalability limit
 Coordinate through external database
• Object/relational mapping issues
• Extra coding to foreign interface
GemStone/S solves this problem!
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.10
Challenge of Scalability
Scalability approaches in Smalltalk
 Add hardware
• Still basically single-threaded
 Run more images
• Presents all the persistent/multi-user issues
GemStone/S solves this problem!
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.11
Scaling
Multiple VMs
 Each is a separate OS process
 Each has full access to the database
 Close to linear scaling
Multiple hosts
 Customer production systems
• 1500 VMs; 200 hosts
 Tested
• 3000 VMs; 1 terabyte data; 16 billion objects
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
What’s Done?
Code in GemStone Smalltalk
 HTTP Server (Hyper) and FastCGI Server
 Monticello (File & HTTP)
 Seaside 2.6 & Seaside 2.8
 SqueakSource (in 2.6)
Squeak-based tools
 GS/S login & workspace
 View & edit GS/S code & objects
• OmniBrowser, OB Standard, OB Tools
12
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.13
GemSource
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.14
Where Do We Get Seaside?
The “official” version is in Squeak
 http://www.squeaksource.com/Seaside
Existing Seaside ports to
 Dolphin
 VisualWorks
Typical porting process is somewhat
complex
 Export from Squeak
 Import into other dialect
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.15
Get Seaside Directly from the Source!
Typical port process is awkward
 Any changes must be made in Squeak
 Wait for someone to update port
GemStone has the “advantage” of no
native source code control
Source is in Monticello repository
 File and HTTP interface (among others)
Port Monticello to GemStone/S
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Technical Challenges and Decisions
Method namespaces
 Base-class additions and overrides
 Support for hosted sandbox
Compiler changes for assignment
Transient (non-persistent) objects
Selective rollback
16
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.17
Aside on Namespaces
Namespace problem:
 Typically, isolating code from each vendor
 Complexities of multi-user image
• Each user can load different packages
• A package can add/replace methods for
classes in another package
• What if other class/method is shared?
Prior namespace not adequate
 Need to isolate each user (session)
 Add ‘Session Methods’ feature to GS/S
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.18
Session Methods-1
Traditional method lookup:
 Array then…
 SequenceableCollection then…
 Collection then…
 Object then…
 MessageNotUnderstood exception
Dictionary subclass: SessionMethods
 Keys: Class
 Values: MethodDictionary instances
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.19
Session Methods-2
New method search:
• SessionMethods for Array
 Array
• SessionMethods for SequenceableCollection
 SequenceableCollection
• SessionMethods for Collection
 Collection
• SessionMethods for Object
 Object
Method is cached after first lookup
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Namespace Proposal
Dictionary subclass: Environment
 Keys: Class
 Values: MethodDictionary instances
Each method, when compiled, can be
associated with an Environment
 Default to class’s Environment
 Class’s Environment defaults to System
Use Environment from method in place
of SessionMethods from login
20
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.21
Make GemStone/S Accessible to Squeak Developers
GemStone/S compiler was modified to
allow underbar as the assignment
statement:
url _ 'http://seaside.gemstone.com/'.
This allows code to be loaded directly
 No translation needed
This allows use of Monticello tools to
compare versions w/o clutter
 Export back to Monticello and load in
Squeak
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
New DbTransient Attribute
A class can now have the new attribute
DbTransient.
 This is designed to be similar to Java “transient”
variable attribute.
 The instance variables of instances of a class
that is DbTransient are not committed, but
remain local to the session.
 This allows you to reference objects that should
not be persistent - such as semaphores - within
data structures that are persistent and shared.
 Typical pattern is to wrap such objects.
22
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Multiple Dirty Lists - 1
“Extreme Validation” (Leandro Caniglia)
 Don’t rely exclusively on presentation
layer for validation
 Check domain objects for validity
 Rollback domain objects if invalid
Problem is that not all work should be
discarded
 Existing continuations need to be saved
23
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Multiple Dirty Lists - 2
Create separate buckets for objects
 Seaside framework objects go in one
bucket
 Application domain objects go in another
bucket
 Objects in one bucket can be rolled back
without losing data from objects in the
other bucket
 Not really “nested transactions,” but
another solution that works here
24
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.25
How Does Apache Fit In?
Most Seaside applications use a
Smalltalk HTTP server (e.g., Kom)
Large-scale applications will generally
want a separate web server
 Serve static pages
 Handle SSL (https requests)
 Load balancing
 Fail-over backup
 Security (hacker-resistant)
 Separate server administration
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.26
Apache Forwards Requests
ReverseProxy
 Forward selected requests using HTTP
FastCGI
 Forward selected requests using FastCGI
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Develop in Squeak, Deploy in GemStone
Squeak is more familiar for most
Seaside developers
Many Seaside applications are already
developed
Port to GemStone/S when ready for
deployment, or when you need to scale
27
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Port Process - 1
Fix compile errors on load
 Export application packages from Squeak
to files or HTTP repository
 Load packages into GemStone
 Identify compile errors—typically {…}
 Fix in Squeak image
 Repeat until no compile errors
28
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Port Process - 2
Fix initialization errors on load
 Export application packages from Squeak
to files or HTTP repository
 Load packages into GemStone
 Identify initialization errors
• References to missing classes or methods
 Fix
• Add missing classes (load more packages)
• Add platform-specific or general-use methods
 Repeat until no initialization errors
29
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Port Process - 3
Compare image to filed-out package
 Should be no differences after load
 Any differences are due to things that
didn’t load
 Fix any differences
 Repeat till no differences
30
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Port Process - 4
Fix Undeclared Globals
 Don’t wait for a walkback
 SymbolDictionary of undeclared globals
• Key: Global name (referenced but not found)
• Value: Set of Associations identifying methods
– Key: Class with referencing method
– Value: Selector for referencing method
 Add missing classes (load more
packages)
 Repeat till no more undeclared globals
31
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Port Process - 5
Run Unit Tests
 You do have tests don’t you?
 Run application and verify operation
 Fixes can be exported from GemStone/S
and loaded into Squeak!
32
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.33
Jade: GemStone/S Tools in Squeak - 1
Client access is through a shared
library (DLL on Windows)
 GemStone C Interface (GCI)
Use Squeak’s Foreign Function
Interface (FFI) to access GCI
 Wrap C functions with Smalltalk methods
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.34
Jade: GemStone/S Tools in Squeak - 2
User Interface available
 Login
 Workspace
OmniBrowser
Monticello Browsers
 Thanks to Liliana Ivan for initial port
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
GLASS Appliance
Avoid Setup, Configuration, and
Management of GemStone Server
VMware “appliance”
 VMware Server free for Linux, Windows
 VMware Fusion for Macintosh (US$60)
We create a full Ubuntu machine
 Linux pre-installed and configured
 Seaside starts when OS boots
 Squeak image installed for tools
35
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.36
Hosted Sandbox
Avoid Setup, Configuration, and
Management of GemStone Server
Shared Server on Internet
 Added security features to reduce risk
Apply for an Account
 http://seaside.gemstone.com/
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
What’s Left?
Tools
 Monticello browser performance
Appliance
 Start-up
 Maintenance (GC, backup, etc.)
Sandbox
 Security setup
Feedback from beta developers
37
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.
Lessons Learned
Humility
 We don’t know Seaside (Apache, etc.)
very well, but we recognize the pain of
Object-Relational mapping.
 We have learned a lot about web
application needs from you, and have
varied our approach based on early
feedback (number of VMs, rollback, etc.).
Community
 We aren’t trying to steer the direction, but
to give you, the community, good tools.
38
Copyright © 2007, GemStone Systems Inc. All Rights Reserved.39
Question?
Documentation (such as it is ;-)
 http://seaside.gemstone.com/
Mailing Lists
 http://www.seaside.st/Community/MailingList/
 subscribe-gemstone-smalltalk@earth.lyris.net
Email
 James.Foster@GemStone.com
 Dale.Henrichs@GemStone.com

More Related Content

What's hot

Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Hiroshi Ono
 
How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13
How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13
How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13Gosuke Miyashita
 
Docker San Diego 2015-03-25
Docker San Diego 2015-03-25Docker San Diego 2015-03-25
Docker San Diego 2015-03-25Casey Bisson
 
Ceph Day Beijing - SPDK for Ceph
Ceph Day Beijing - SPDK for CephCeph Day Beijing - SPDK for Ceph
Ceph Day Beijing - SPDK for CephDanielle Womboldt
 
You Can’t Do That With Smalltalk!
You Can’t Do That With Smalltalk!You Can’t Do That With Smalltalk!
You Can’t Do That With Smalltalk!ESUG
 
Oracle 10g Performance: chapter 11 SQL*Net
Oracle 10g Performance: chapter 11 SQL*NetOracle 10g Performance: chapter 11 SQL*Net
Oracle 10g Performance: chapter 11 SQL*NetKyle Hailey
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsSerge Stinckwich
 
Rakuten LeoFs - distributed file system
Rakuten LeoFs - distributed file systemRakuten LeoFs - distributed file system
Rakuten LeoFs - distributed file systemRakuten Group, Inc.
 
Build Your Own Middleware Machine
Build Your Own Middleware MachineBuild Your Own Middleware Machine
Build Your Own Middleware MachineSimon Haslam
 
Conference tutorial: MySQL Cluster as NoSQL
Conference tutorial: MySQL Cluster as NoSQLConference tutorial: MySQL Cluster as NoSQL
Conference tutorial: MySQL Cluster as NoSQLSeveralnines
 
Solving the C20K problem: Raising the bar in PHP Performance and Scalability
Solving the C20K problem: Raising the bar in PHP Performance and ScalabilitySolving the C20K problem: Raising the bar in PHP Performance and Scalability
Solving the C20K problem: Raising the bar in PHP Performance and ScalabilityZendCon
 
Enterprise Deployments: The Real World of Best Practices
Enterprise Deployments: The Real World of Best PracticesEnterprise Deployments: The Real World of Best Practices
Enterprise Deployments: The Real World of Best PracticesSimon Haslam
 
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...Nagios
 
Symmetric Crypto for DPDK - Declan Doherty
Symmetric Crypto for DPDK - Declan DohertySymmetric Crypto for DPDK - Declan Doherty
Symmetric Crypto for DPDK - Declan Dohertyharryvanhaaren
 

What's hot (19)

Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
 
How can your applications benefit from Java 9?
How can your applications benefit from Java 9?How can your applications benefit from Java 9?
How can your applications benefit from Java 9?
 
How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13
How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13
How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13
 
Docker San Diego 2015-03-25
Docker San Diego 2015-03-25Docker San Diego 2015-03-25
Docker San Diego 2015-03-25
 
Ceph Day Beijing - SPDK for Ceph
Ceph Day Beijing - SPDK for CephCeph Day Beijing - SPDK for Ceph
Ceph Day Beijing - SPDK for Ceph
 
Cont0519
Cont0519Cont0519
Cont0519
 
You Can’t Do That With Smalltalk!
You Can’t Do That With Smalltalk!You Can’t Do That With Smalltalk!
You Can’t Do That With Smalltalk!
 
Oracle 10g Performance: chapter 11 SQL*Net
Oracle 10g Performance: chapter 11 SQL*NetOracle 10g Performance: chapter 11 SQL*Net
Oracle 10g Performance: chapter 11 SQL*Net
 
How swift is your Swift - SD.pptx
How swift is your Swift - SD.pptxHow swift is your Swift - SD.pptx
How swift is your Swift - SD.pptx
 
Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
 
Rakuten LeoFs - distributed file system
Rakuten LeoFs - distributed file systemRakuten LeoFs - distributed file system
Rakuten LeoFs - distributed file system
 
Build Your Own Middleware Machine
Build Your Own Middleware MachineBuild Your Own Middleware Machine
Build Your Own Middleware Machine
 
Conference tutorial: MySQL Cluster as NoSQL
Conference tutorial: MySQL Cluster as NoSQLConference tutorial: MySQL Cluster as NoSQL
Conference tutorial: MySQL Cluster as NoSQL
 
Solving the C20K problem: Raising the bar in PHP Performance and Scalability
Solving the C20K problem: Raising the bar in PHP Performance and ScalabilitySolving the C20K problem: Raising the bar in PHP Performance and Scalability
Solving the C20K problem: Raising the bar in PHP Performance and Scalability
 
Enterprise Deployments: The Real World of Best Practices
Enterprise Deployments: The Real World of Best PracticesEnterprise Deployments: The Real World of Best Practices
Enterprise Deployments: The Real World of Best Practices
 
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
Nagios Conference 2012 - Dan Wittenberg - Case Study: Scaling Nagios Core at ...
 
Dnssec
DnssecDnssec
Dnssec
 
Symmetric Crypto for DPDK - Declan Doherty
Symmetric Crypto for DPDK - Declan DohertySymmetric Crypto for DPDK - Declan Doherty
Symmetric Crypto for DPDK - Declan Doherty
 
Queues, Pools, Caches
Queues, Pools, CachesQueues, Pools, Caches
Queues, Pools, Caches
 

Viewers also liked

Modular ObjectLens
Modular ObjectLensModular ObjectLens
Modular ObjectLensESUG
 
Stateful Traits
Stateful TraitsStateful Traits
Stateful TraitsESUG
 
News from Squeak
News from SqueakNews from Squeak
News from SqueakESUG
 
The Reflectivity
The ReflectivityThe Reflectivity
The ReflectivityESUG
 
Starting fresh every morning
Starting fresh every morningStarting fresh every morning
Starting fresh every morningESUG
 
TypePlug -- Practical, Pluggable Types
TypePlug -- Practical, Pluggable TypesTypePlug -- Practical, Pluggable Types
TypePlug -- Practical, Pluggable TypesESUG
 
Gstreamer
GstreamerGstreamer
GstreamerESUG
 
SCL
SCLSCL
SCLESUG
 
Spyware-ridden software development
Spyware-ridden software developmentSpyware-ridden software development
Spyware-ridden software developmentESUG
 

Viewers also liked (9)

Modular ObjectLens
Modular ObjectLensModular ObjectLens
Modular ObjectLens
 
Stateful Traits
Stateful TraitsStateful Traits
Stateful Traits
 
News from Squeak
News from SqueakNews from Squeak
News from Squeak
 
The Reflectivity
The ReflectivityThe Reflectivity
The Reflectivity
 
Starting fresh every morning
Starting fresh every morningStarting fresh every morning
Starting fresh every morning
 
TypePlug -- Practical, Pluggable Types
TypePlug -- Practical, Pluggable TypesTypePlug -- Practical, Pluggable Types
TypePlug -- Practical, Pluggable Types
 
Gstreamer
GstreamerGstreamer
Gstreamer
 
SCL
SCLSCL
SCL
 
Spyware-ridden software development
Spyware-ridden software developmentSpyware-ridden software development
Spyware-ridden software development
 

Similar to Glass

Gemstone 64 Product Overview
Gemstone 64 Product OverviewGemstone 64 Product Overview
Gemstone 64 Product OverviewESUG
 
GemStone/64 product update and road map
GemStone/64 product update and road mapGemStone/64 product update and road map
GemStone/64 product update and road mapESUG
 
GLASS: A Share Everything Architecture for Seaside
GLASS: A Share Everything Architecture for SeasideGLASS: A Share Everything Architecture for Seaside
GLASS: A Share Everything Architecture for SeasideESUG
 
Gemstone RoadMap
Gemstone RoadMapGemstone RoadMap
Gemstone RoadMapESUG
 
GemStone Update
GemStone Update GemStone Update
GemStone Update ESUG
 
GemStone Update 2023
GemStone Update 2023GemStone Update 2023
GemStone Update 2023ESUG
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)Simon Haslam
 
PaaS on Openstack
PaaS on OpenstackPaaS on Openstack
PaaS on OpenstackOpen Stack
 
GemStone/S 64 Update
 GemStone/S 64 Update GemStone/S 64 Update
GemStone/S 64 UpdateESUG
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1makker_nl
 
Life on the Edge with ESI
Life on the Edge with ESILife on the Edge with ESI
Life on the Edge with ESIKit Chan
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...QAware GmbH
 
State of GeoServer
State of GeoServerState of GeoServer
State of GeoServerJody Garnett
 
Building Scalable Applications using Pivotal Gemfire/Apache Geode
Building Scalable Applications using Pivotal Gemfire/Apache GeodeBuilding Scalable Applications using Pivotal Gemfire/Apache Geode
Building Scalable Applications using Pivotal Gemfire/Apache Geodeimcpune
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production EnvironmentsBruno Borges
 
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...The Linux Foundation
 

Similar to Glass (20)

Gemstone 64 Product Overview
Gemstone 64 Product OverviewGemstone 64 Product Overview
Gemstone 64 Product Overview
 
GemStone/64 product update and road map
GemStone/64 product update and road mapGemStone/64 product update and road map
GemStone/64 product update and road map
 
GLASS: A Share Everything Architecture for Seaside
GLASS: A Share Everything Architecture for SeasideGLASS: A Share Everything Architecture for Seaside
GLASS: A Share Everything Architecture for Seaside
 
Gemstone RoadMap
Gemstone RoadMapGemstone RoadMap
Gemstone RoadMap
 
GemStone Update
GemStone Update GemStone Update
GemStone Update
 
GemStone Update 2023
GemStone Update 2023GemStone Update 2023
GemStone Update 2023
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)
 
RESTful OGC Services
RESTful OGC ServicesRESTful OGC Services
RESTful OGC Services
 
Jetty Vs Tomcat
Jetty Vs TomcatJetty Vs Tomcat
Jetty Vs Tomcat
 
PaaS on Openstack
PaaS on OpenstackPaaS on Openstack
PaaS on Openstack
 
GemStone/S 64 Update
 GemStone/S 64 Update GemStone/S 64 Update
GemStone/S 64 Update
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1
 
Life on the Edge with ESI
Life on the Edge with ESILife on the Edge with ESI
Life on the Edge with ESI
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
 
Open ebs 101
Open ebs 101Open ebs 101
Open ebs 101
 
State of GeoServer
State of GeoServerState of GeoServer
State of GeoServer
 
Building Scalable Applications using Pivotal Gemfire/Apache Geode
Building Scalable Applications using Pivotal Gemfire/Apache GeodeBuilding Scalable Applications using Pivotal Gemfire/Apache Geode
Building Scalable Applications using Pivotal Gemfire/Apache Geode
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production Environments
 
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
LCNA14: Why Use Xen for Large Scale Enterprise Deployments? - Konrad Rzeszute...
 

More from 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
 

More from 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
 

Recently uploaded

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Recently uploaded (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

Glass

  • 1. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.1
  • 2. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. But first, a Word from our Sponsors… Some highlights since last year  TimeZone patch for 6.x  GemStone/S 64 Bit releases • 1.1.7 to 1.1.14 • 2.0.4, 2.0.5 • 2.1.0 to 2.1.5 • 2.2.0 to 2.2.2 (August 2007) 2
  • 3. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. GemStone 64 Bit Enhancements - 1 Multi-threaded stone, shared page cache monitor Polymorphic method lookup caches Segment (security) support Larger signal buffer for gem-to-gem signals Linux supports faster performance using optimized POSIX Asynchronous I/O Signal when transaction logs are full Ten application write lock queue with timeout Locale and new extended character set support System class>>#logout now available Several float operations now in primitives 3
  • 4. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. GemStone 64 Bit Enhancements - 2 RcQueue improvements  Add time is now millisecond-based  Improved performance by preconfiguring max size  Multiple retries on commit conflict Reduced conflict equality indexes Added tranlog analysis abilities (auditability) DateTime now supports millisecond resolution Better handling of LostOT situation Collection optimizations Optimization of #and: and #or: Intel Macintosh client libraries (level “B” support) Logging enhancements (ms times, etc.) 4
  • 5. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Announcement of Free Edition GemStone “Web Edition”  No cost license, even for commercial use!  Up to 4 GB image (repository) size  Up to 1 GB shared page cache  Up to 64 million objects  Unlimited VMs (gems)  64-bit Linux on 64-bit Intel hardware  Uses only one CPU on one host  GemBuilder for Smalltalk is disabled  Community support 5
  • 6. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.6 What is Seaside and Why the Interest? What is Seaside?  Where were you during Lucas Renggli’s presentation yesterday? Why the interest?  Buzz from Ruby on Rails  Grow interest in Smalltalk  “We can do better” – Alan Knight  (Same as Cincom and Instantiations ;-)
  • 7. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.7 Why Port Seaside to GemStone/S? Other dialects of Smalltalk are single-user and non-persistent  This means that a Seaside application needs to work around built-in limitations to handle multi- user persistence GemStone’s value has always been providing Smalltalk developers with:  Built-in transactional persistence  Built-in multi-user capability  Built-in multi-CPU and multi-machine scalability. GemStone’s lack of a GUI is okay!
  • 8. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.8 Challenge of Persistence Persistence approaches in Smalltalk  In the image • Loss of data if image quits • Not shared across images  In a binary file-out • Limited size • Object identity is not be preserved  In an external database • Object/relational mapping overhead • Extra coding to foreign interface GemStone/S solves this problem!
  • 9. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.9 Challenge of Multi-User Coordination Multi-user approaches in Smalltalk  One image serving multiple clients • Requires layer directing query to image • Scalability limit  Coordinate through external database • Object/relational mapping issues • Extra coding to foreign interface GemStone/S solves this problem!
  • 10. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.10 Challenge of Scalability Scalability approaches in Smalltalk  Add hardware • Still basically single-threaded  Run more images • Presents all the persistent/multi-user issues GemStone/S solves this problem!
  • 11. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.11 Scaling Multiple VMs  Each is a separate OS process  Each has full access to the database  Close to linear scaling Multiple hosts  Customer production systems • 1500 VMs; 200 hosts  Tested • 3000 VMs; 1 terabyte data; 16 billion objects
  • 12. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. What’s Done? Code in GemStone Smalltalk  HTTP Server (Hyper) and FastCGI Server  Monticello (File & HTTP)  Seaside 2.6 & Seaside 2.8  SqueakSource (in 2.6) Squeak-based tools  GS/S login & workspace  View & edit GS/S code & objects • OmniBrowser, OB Standard, OB Tools 12
  • 13. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.13 GemSource
  • 14. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.14 Where Do We Get Seaside? The “official” version is in Squeak  http://www.squeaksource.com/Seaside Existing Seaside ports to  Dolphin  VisualWorks Typical porting process is somewhat complex  Export from Squeak  Import into other dialect
  • 15. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.15 Get Seaside Directly from the Source! Typical port process is awkward  Any changes must be made in Squeak  Wait for someone to update port GemStone has the “advantage” of no native source code control Source is in Monticello repository  File and HTTP interface (among others) Port Monticello to GemStone/S
  • 16. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Technical Challenges and Decisions Method namespaces  Base-class additions and overrides  Support for hosted sandbox Compiler changes for assignment Transient (non-persistent) objects Selective rollback 16
  • 17. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.17 Aside on Namespaces Namespace problem:  Typically, isolating code from each vendor  Complexities of multi-user image • Each user can load different packages • A package can add/replace methods for classes in another package • What if other class/method is shared? Prior namespace not adequate  Need to isolate each user (session)  Add ‘Session Methods’ feature to GS/S
  • 18. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.18 Session Methods-1 Traditional method lookup:  Array then…  SequenceableCollection then…  Collection then…  Object then…  MessageNotUnderstood exception Dictionary subclass: SessionMethods  Keys: Class  Values: MethodDictionary instances
  • 19. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.19 Session Methods-2 New method search: • SessionMethods for Array  Array • SessionMethods for SequenceableCollection  SequenceableCollection • SessionMethods for Collection  Collection • SessionMethods for Object  Object Method is cached after first lookup
  • 20. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Namespace Proposal Dictionary subclass: Environment  Keys: Class  Values: MethodDictionary instances Each method, when compiled, can be associated with an Environment  Default to class’s Environment  Class’s Environment defaults to System Use Environment from method in place of SessionMethods from login 20
  • 21. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.21 Make GemStone/S Accessible to Squeak Developers GemStone/S compiler was modified to allow underbar as the assignment statement: url _ 'http://seaside.gemstone.com/'. This allows code to be loaded directly  No translation needed This allows use of Monticello tools to compare versions w/o clutter  Export back to Monticello and load in Squeak
  • 22. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. New DbTransient Attribute A class can now have the new attribute DbTransient.  This is designed to be similar to Java “transient” variable attribute.  The instance variables of instances of a class that is DbTransient are not committed, but remain local to the session.  This allows you to reference objects that should not be persistent - such as semaphores - within data structures that are persistent and shared.  Typical pattern is to wrap such objects. 22
  • 23. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Multiple Dirty Lists - 1 “Extreme Validation” (Leandro Caniglia)  Don’t rely exclusively on presentation layer for validation  Check domain objects for validity  Rollback domain objects if invalid Problem is that not all work should be discarded  Existing continuations need to be saved 23
  • 24. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Multiple Dirty Lists - 2 Create separate buckets for objects  Seaside framework objects go in one bucket  Application domain objects go in another bucket  Objects in one bucket can be rolled back without losing data from objects in the other bucket  Not really “nested transactions,” but another solution that works here 24
  • 25. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.25 How Does Apache Fit In? Most Seaside applications use a Smalltalk HTTP server (e.g., Kom) Large-scale applications will generally want a separate web server  Serve static pages  Handle SSL (https requests)  Load balancing  Fail-over backup  Security (hacker-resistant)  Separate server administration
  • 26. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.26 Apache Forwards Requests ReverseProxy  Forward selected requests using HTTP FastCGI  Forward selected requests using FastCGI
  • 27. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Develop in Squeak, Deploy in GemStone Squeak is more familiar for most Seaside developers Many Seaside applications are already developed Port to GemStone/S when ready for deployment, or when you need to scale 27
  • 28. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Port Process - 1 Fix compile errors on load  Export application packages from Squeak to files or HTTP repository  Load packages into GemStone  Identify compile errors—typically {…}  Fix in Squeak image  Repeat until no compile errors 28
  • 29. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Port Process - 2 Fix initialization errors on load  Export application packages from Squeak to files or HTTP repository  Load packages into GemStone  Identify initialization errors • References to missing classes or methods  Fix • Add missing classes (load more packages) • Add platform-specific or general-use methods  Repeat until no initialization errors 29
  • 30. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Port Process - 3 Compare image to filed-out package  Should be no differences after load  Any differences are due to things that didn’t load  Fix any differences  Repeat till no differences 30
  • 31. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Port Process - 4 Fix Undeclared Globals  Don’t wait for a walkback  SymbolDictionary of undeclared globals • Key: Global name (referenced but not found) • Value: Set of Associations identifying methods – Key: Class with referencing method – Value: Selector for referencing method  Add missing classes (load more packages)  Repeat till no more undeclared globals 31
  • 32. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Port Process - 5 Run Unit Tests  You do have tests don’t you?  Run application and verify operation  Fixes can be exported from GemStone/S and loaded into Squeak! 32
  • 33. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.33 Jade: GemStone/S Tools in Squeak - 1 Client access is through a shared library (DLL on Windows)  GemStone C Interface (GCI) Use Squeak’s Foreign Function Interface (FFI) to access GCI  Wrap C functions with Smalltalk methods
  • 34. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.34 Jade: GemStone/S Tools in Squeak - 2 User Interface available  Login  Workspace OmniBrowser Monticello Browsers  Thanks to Liliana Ivan for initial port
  • 35. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. GLASS Appliance Avoid Setup, Configuration, and Management of GemStone Server VMware “appliance”  VMware Server free for Linux, Windows  VMware Fusion for Macintosh (US$60) We create a full Ubuntu machine  Linux pre-installed and configured  Seaside starts when OS boots  Squeak image installed for tools 35
  • 36. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.36 Hosted Sandbox Avoid Setup, Configuration, and Management of GemStone Server Shared Server on Internet  Added security features to reduce risk Apply for an Account  http://seaside.gemstone.com/
  • 37. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. What’s Left? Tools  Monticello browser performance Appliance  Start-up  Maintenance (GC, backup, etc.) Sandbox  Security setup Feedback from beta developers 37
  • 38. Copyright © 2007, GemStone Systems Inc. All Rights Reserved. Lessons Learned Humility  We don’t know Seaside (Apache, etc.) very well, but we recognize the pain of Object-Relational mapping.  We have learned a lot about web application needs from you, and have varied our approach based on early feedback (number of VMs, rollback, etc.). Community  We aren’t trying to steer the direction, but to give you, the community, good tools. 38
  • 39. Copyright © 2007, GemStone Systems Inc. All Rights Reserved.39 Question? Documentation (such as it is ;-)  http://seaside.gemstone.com/ Mailing Lists  http://www.seaside.st/Community/MailingList/  subscribe-gemstone-smalltalk@earth.lyris.net Email  James.Foster@GemStone.com  Dale.Henrichs@GemStone.com